We present Jiazzi, a system that enables the construction of large-scale binary components in java. Jiazzi components can be thought of as generalizations of java packages with added support for external linking and s...
详细信息
We present Jiazzi, a system that enables the construction of large-scale binary components in java. Jiazzi components can be thought of as generalizations of java packages with added support for external linking and separate compilation. Jiazzi components are practical because they are constructed out of standard java source code. Jiazzi requires neither extensions to the javalanguage nor special conventions for writing java source code that will go inside a component. Our components are expressive because Jiazzi supports cyclic component linking and mixins, which are used together in an open class pattern that enables the modular addition of new features to existing classes. This paper describes Jiazzi, how it enhances java with components, its implementation, and how type checking works. An implementation of Jiazzi is available for download.
The high performance implementation of java Virtual Machines (JVM) and Just-In-Time (JIT) compilers is directed toward adaptive compilation optimizations on the basis of online runtime profile information. This paper ...
详细信息
The high performance implementation of java Virtual Machines (JVM) and Just-In-Time (JIT) compilers is directed toward adaptive compilation optimizations on the basis of online runtime profile information. This paper describes the design and implementation of a dynamic optimization framework in a production-level java JIT compiler. Our approach is to employ a mixed mode interpreter and a three level optimizing compiler, supporting quick, full, and special optimization, each of which has a different set of tradeoffs between compilation overhead and execution speed. A lightweight sampling profiler operates continuously during the entire program's execution. When necessary, detailed information on runtime behavior is collected by dynamically generating instrumentation code which can be installed to and uninstalled from the specified recompilation target code. Value profiling with this instrumentation mechanism allows fully automatic code specialization to be performed on the basis of specific parameter values or global data at the highest optimization level. The experimental results show that our approach offers high performance and a low code expansion ratio in both program startup and steady state measurements in comparison to the compile-only approach, and that the code specialization can also contribute modest performance improvements.
Pretenuring can reduce copying costs in garbage collectors by allocating long-lived objects into regions that the garbage collector will rarely, if ever, collect. We extend previous work on preterturing as follows. (1...
详细信息
Pretenuring can reduce copying costs in garbage collectors by allocating long-lived objects into regions that the garbage collector will rarely, if ever, collect. We extend previous work on preterturing as follows. (1) We produce pretenuring advice that is neutral with respect to the garbage collector algorithm and configuration. We thus can and do combine advice from different applications. We find that predictions using object lifetimes at each allocation site in java programs are accurate, which simplifies the pretenuring implementation. (2) We gather and apply advice to applications and the Jalapeno JVM, a compiler and run-time system for java written in java. Our results demonstrate that building combined advice into Jalapeno from different application executions improves performance regardless of the application Jalapeno is compiling and executing. This build-time advice thus gives user applications some benefits of pretenuring without any application profiling. No previous work pretenures in the run-time system. (3) We find that application-only advice also improves performance, but that the combination of build-time and application-specific advice is almost always noticeably better. (4) Our same advice improves the performance of generational and Older First collection, illustrating that it is collector neutral.
In systems that support garbage collection, a tension exists between collecting garbage too frequently and not collecting garbage frequently enough. Garbage collection that occurs too frequently may introduce unnecess...
详细信息
In systems that support garbage collection, a tension exists between collecting garbage too frequently and not collecting garbage frequently enough. Garbage collection that occurs too frequently may introduce unnecessary overheads at the risk of not collecting much garbage during each cycle. On the other hand, collecting garbage too infrequently can result in applications that execute with a large amount of virtual memory (i.e., with a large footprint) and suffer from increased execution times due to paging. In this paper, we use a large collection of java (TM) applications and the highly tuned and widely used Boehm-Demers-Weiser (BDW) conservative mark-and-sweep garbage collector to experimentally examine the extent to which the frequency of garbage collection impacts an application's execution time, footprint, and pause times. We use these results to devise some guidelines for controlling garbage collection and heap growth in a conservative garbage collector in order to minimize application execution times. Then we describe new strategies for controlling garbage collection and heap growth that impact not only the frequency with which garbage collection occurs but also the points at which garbage collection occurs. Experimental results demonstrate that, when compared with the existing approach used in the standard BDW collector, our new strategy can significantly reduce application execution times. Our goal is to obtain a better understanding of how to control garbage collection and heap growth for an individual application executing in isolation. These results can be applied in a number of high-performance computing and server environments, in addition to some single-user environments. This work should also provide insights into how to make better decisions that impact garbage collection in multi-programmed environments.
Naturaljava is a prototype for an intelligent natural-language-based user interface for creating, modifying, and examining java programs. The interface exploits three subsystems. The Sundance natural language processi...
详细信息
Naturaljava is a prototype for an intelligent natural-language-based user interface for creating, modifying, and examining java programs. The interface exploits three subsystems. The Sundance natural language processing system accepts English sentences as input and uses information extraction techniques to generate case frames representing program construction and editing directives. A knowledge-based case frame interpreter, PRISM, uses a decision tree to infer program modification operations from the case frames. A java abstract syntax tree manager, TreeFace, provides the interface that PRISM uses to build and navigate the tree representation of an evolving java program. In this paper, we describe the technical details of each component, explain the capabilities of the user interface, and present examples of Naturaljava in use.
The design of concurrent programs has a reputation for being difficult, and thus potentially dangerous in safety-critical real-time and embedded systems. The recent appearance of java, while cleaning up many insecure ...
详细信息
The design of concurrent programs has a reputation for being difficult, and thus potentially dangerous in safety-critical real-time and embedded systems. The recent appearance of java, while cleaning up many insecure aspects of OO programming endemic in C++, suffers from a deceptively simple threads model that is an insecure variant of ideas that are over 25 years old. Consequently, we cannot directly exploit a range of new CASE tools - based on modern developments in parallel computing theory - that can verify and check the design of concurrent systems for a variety of dangers such as deadlock and livelock that otherwise plague us during testing and maintenance and, more seriously, cause catastrophic failure in service. The approach proposed in this paper uses recently developed java class libraries based on Hoare's Communicating Sequential Processes (CSP);the use of CSP greatly simplifies the design of concurrent systems and, in many cases, a parallel approach often significantly simplifies systems originally approached sequentially. New CSP CASE tools permit designs to be verified against formal specifications and checked for deadlock and livelock. We introduce CSP and its implementation in java and develop a small concurrent application. The formal CSP description of the application is provided, as well as that of an equivalent sequential version. FDR is used to verify the correctness of both implementations, their equivalence, and their freedom from deadlock and livelock.
The use of Jitan, a visualization environment for concurrent, object-oriented programming, for addressing problems involved with java objects and concurrency, is discussed. Jitan provides both textural and graphical v...
详细信息
The use of Jitan, a visualization environment for concurrent, object-oriented programming, for addressing problems involved with java objects and concurrency, is discussed. Jitan provides both textural and graphical visualization of objects and thread activities at execution, including the object graph's topology, locks and synchronization. Developed in the INRIA Oasis project, Jitan's formal foundation and its specific architecture are based on interpretation and animation of an executable, operational java semantics. The advantages of Jitan in javaprogramming include, direct interpretation enables interactive debugging, no instrumentation is required at the source level, and it can complement traditional debugging tools.
Digital Audio Broadcasting (DAB) is preparing itself to meet the new challenges of the digital era. The Internet, DVB, UMTS and DAB are all competing to provide flexible data services to millions of new users. Through...
详细信息
Digital Audio Broadcasting (DAB) is preparing itself to meet the new challenges of the digital era. The Internet, DVB, UMTS and DAB are all competing to provide flexible data services to millions of new users. Through the use of javalanguage APIs, the DAB system is now able to offer flexible and dynamic solutions for delivering exciting new content to mobile users. This article summarizes the potential offered by java technology in the radio broadcasting environment, and concludes with a description of the java DAB API framework, and the software architecture of the java DAB platform.
java™ is being introduced into various platforms, gaining support from engineers. Especially java applications running on embedded systems are a hot topic today. It is only recently that such developments started to g...
详细信息
java™ is being introduced into various platforms, gaining support from engineers. Especially java applications running on embedded systems are a hot topic today. It is only recently that such developments started to get into high gear though java was first announced 6 years ago, as problems related to limited CPU power and memory capacity had to be overcome. In this paper, we describe trends in java technology for embedded systems and also explain intent®, a java run-time environment for these platforms.
The Virtual Reality Modeling language (VRML) offers capabilities far beyond the virtual exploration of solid models. The scripting capabilities and the execution mechanism enable the creation of complex applications. ...
详细信息
The Virtual Reality Modeling language (VRML) offers capabilities far beyond the virtual exploration of solid models. The scripting capabilities and the execution mechanism enable the creation of complex applications. Indeed, applications can be implemented as a collection of modules interacting in a decentralized fashion, communicating through the exchange of messages. In this paper, an architecture is presented for creating large VRML worlds. The architecture includes a definition of functional modules that serve as the foundation for applications. In addition, object model architectures are structured into three layers that separate pure behavior from editing controls and also from the interface to the visualization, supporting module diversity and reuse. An urban planning example application is presented that incorporates these ideas and features a graphical user interface (GUI), collision management, a simple simulation manager, and an interface to a web server. Finally, several object examples are described followed by a presentation of an example session.
暂无评论