In this paper, we report on our experiences with guaranteeing GC-pointer safety when using unsafe low-level language extensions to implement a JVM in java. We give an overview of the original unsafe language extension...
详细信息
ISBN:
(纸本)9781581134131
In this paper, we report on our experiences with guaranteeing GC-pointer safety when using unsafe low-level language extensions to implement a JVM in java. We give an overview of the original unsafe language extensions that were defined for use by Jalapeno implementers, and introduce sanitized replacements that capture common idioms while also guaranteeing GO-pointer safety. We also outline some simple static and dynamic checks for correct usage of low-level operations, and examine how code containing low-level operations can be optimized correctly and effectively.
A language of choice for general-purpose programming, java is quickly becoming popular in more specialized areas, such as scientific computing. However, even though the compilation technologies have significantly impr...
详细信息
ISBN:
(纸本)3540430431
A language of choice for general-purpose programming, java is quickly becoming popular in more specialized areas, such as scientific computing. However, even though the compilation technologies have significantly improved java execution, performance is still the main obstacle to the use of java for scientific applications. Although good java Virtual Machine implementations are approaching the performance of Fortran on similarly-coded applications, significant performance problems remain because of the power of the object-oriented programming paradigm. Our experiments show that full use of polymorphic, object oriented programming can result in performance penalties of up to two orders of magnitude. To address this performance difficulty, the authors have developed the JaMake java transformation system, which uses advanced program analysis and transformation techniques to allow programmers to create extensible and maintainable programs using object oriented design, while generating java programs whose performance approaches that of hand-optimized, Fortran-style code. Experiments on our collection of object-oriented scientific programs have shown that transformation by JaMake can yield speed-ups of a factor of ten or more, 1k bringing the performance of these object-oriented programs to within 75% of hand-optimized, Fortran-style code.
The java programming language provides both reflection and remote method invocation: reflection allows a program to inspect itself and its runtime environment, remote method invocation allows methods to be invoked tra...
详细信息
ISBN:
(纸本)0769509649
The java programming language provides both reflection and remote method invocation: reflection allows a program to inspect itself and its runtime environment, remote method invocation allows methods to be invoked transparently across a network. Unfortunately, the standard java implementations of reflection and remote method invocation are incompatible: programmers cannot reflect on a remote application. We describe how java systems can be extended to support Remote Reflection transparently by extending the standard java API. Remote reflection can support remote debuggers, performance monitors, programming environments, application component sewers such as Enterprise javaBeans, and any other java system that can be distributed across a network.
Compared to dynamic object-oriented languages like CommonLisp or Smalltalk, java has a fairly simple and restrictive object and type system. Some of the key differences between java and these other languages is that t...
详细信息
ISBN:
(纸本)0769512518
Compared to dynamic object-oriented languages like CommonLisp or Smalltalk, java has a fairly simple and restrictive object and type system. Some of the key differences between java and these other languages is that they offer structural conformance, automatic delegation, and dynamic mixins. When such constructs are needed in a language like java, they are usually expressed in terms of standard object-oriented design patterns, requiring the manual implementation of "glue" or "helper" classes. This paper describes ways in which such features can be provided efficiently and automatically in terms of java's platform-independent binary format and dynamic loading mechanisms. The implementation does not require any changes to the java runtime, bytecodes, or class loader and yields performance comparable to manually implemented design patterns. The approach should prove useful both as a programming tool for java and as an strategy for building efficient implementations of dynamic languages on top of the java virtual machine.
Computer graphics has entered all aspects of programming especially after introduction of World Wide Web into everyday life and increase of the number of people who are using it. This emphasized the need and the quant...
详细信息
ISBN:
(纸本)0769513123
Computer graphics has entered all aspects of programming especially after introduction of World Wide Web into everyday life and increase of the number of people who are using it. This emphasized the need and the quantity of graphics that we are all faced with. Here java is the language of our choice since it is already enriched with built-in classes for platform independent graphical user interface, and that it supports picture, animation, sound and network capabilities. Turtle graphics has been implemented in a java programming language as a java applet. The implementation of turtle graphics in java is important because it brings the expressiveness of LOGO to javalanguage.
Fortran is still a very dominant language for scientific computations. However it lacks modern language features like strong typing, object orientation, and other design features of modern programminglanguages. There...
详细信息
ISBN:
(纸本)3540430431
Fortran is still a very dominant language for scientific computations. However it lacks modern language features like strong typing, object orientation, and other design features of modern programminglanguages. Therefore, among scientists there is an increasing interest in object oriented languages like java. In this paper, we will discuss a number of prospects and problems in java for scientific computation.
The java programming language and the underlying virtual machine model have introduced new complexities for compilation. Various approaches ranging from just in time (JIT) compilation to ahead of time (AOT) compilatio...
详细信息
ISBN:
(纸本)3540414290
The java programming language and the underlying virtual machine model have introduced new complexities for compilation. Various approaches ranging from just in time (JIT) compilation to ahead of time (AOT) compilation are being explored with the aim of improving the performance of java programs. The hurdles facing the achievement of high performance in java and the strengths and weaknesses of different approaches to java compilation are addressed in this paper, specifically within the context of SGI's effort to provide a high-performance java execution environment for its computing platforms. The SGI JIT compiler and prototype AOT compiler are described, and performance results are presented and discussed.
Current proposals for load-time transformation of java classes are either dependent on the use of a specific class loader or dependent on a specific JVM implementation. This is not due to an inadequacy of the java pla...
详细信息
ISBN:
(纸本)0769513875
Current proposals for load-time transformation of java classes are either dependent on the use of a specific class loader or dependent on a specific JVM implementation. This is not due to an inadequacy of the java platform but to the wrong choice of the level at which to hook into the java Class Loader Architecture. JMangler follows a novel approach that ensures both class loader and JVM independence by hooking into the base class of all class loaders. Furthermore, existing proposals do not allow transformers to be treated as components because implicit dependencies must be resolved manually. This paper shows that automatic composition is possible for the well-defined class of interface transformations that still include powerful transformations, like addition of fields, methods and classes, and changes to the class hierarchy. Consequently interface transformers can be deployed jointly even if developed independently.
One of the important issues in constructing interprocedural program slices is maintaining context-sensitivity or preserving calling context when a procedure is called at multiple call sites. Though a number of context...
详细信息
ISBN:
(纸本)9781581134131
One of the important issues in constructing interprocedural program slices is maintaining context-sensitivity or preserving calling context when a procedure is called at multiple call sites. Though a number of context-sensitive techniques have been presented in the last decade, the following important questions remain unanswered: 1) What is the level of precision lost if context-sensitivity is not maintained ? 2) What are the additional costs for achieving context-sensitivity ? In this paper, we evaluate a PDG based explicitly context-sensitive interprocedural program slicing technique for accuracy and efficiency. We compare this technique against a context-insensitive technique using a program slicing framework we have developed for java programs for which only the byte-code sequences are available. Our results show that the context-sensitive technique, in spite of its worst case exponential complexity, can be very efficient in practice. The execution time for our set of benchmarks is, on the average, only twice as much as the execution time for the context-insensitive technique. The results on the accuracy for the context-insensitive technique axe mixed. For 53% of the 2464 slicing criteria used in our experiments, the context-insensitive technique does not loose accuracy. However, in some cases, it can also lead to slices with 35 times more vertices. On the average, the slices constructed from the context-insensitive technique axe twice as large as the one from the context-sensitive technique.
The coexistence of programs written in a safe language with user-supplied unsafe (native) code is convenient (e.g., it enables direct access to operating system resources), but at the same time it is problematic (e.g....
详细信息
ISBN:
(纸本)0769513069
The coexistence of programs written in a safe language with user-supplied unsafe (native) code is convenient (e.g., it enables direct access to operating system resources), but at the same time it is problematic (e.g., it may decrease reliability and debuggability). This work aims at retaining most of the benefits of interfacing a safe language with native code while addressing its problems. It is carried out in the context of the java (TM) Native Interface (JNI). Our approach is to execute the native code in an operating system process different than that of the safe language application. A technique presented in this paper accomplishes this transparently, antomatically, and without sacrificing any of the JNI functionality. No changes to the java virtual machine (JVM (TM)) or its runtime are necessary. The resulting prototype does not depend on a particular implementation of the JVM, and is highly portable across hardware architectures and operating svstems. This approach can be used to improve reliability of applications consisting of a mix of safe and native code and to facilitate debugging them.
暂无评论