The java Virtual Machine (or JVM) is central to the system's aim of providing a secure program execution environment that operates identically on a wide variety of computing platforms. To be most effective in this...
详细信息
The java Virtual Machine (or JVM) is central to the system's aim of providing a secure program execution environment that operates identically on a wide variety of computing platforms. To be most effective in this role, the JVM needs a rigorous, complete description, to specify precisely the behavior required of implementations. In response, a number of researchers have produced formal accounts of the JVM that seek to define it in an unambiguous and comprehensible manner. Unfortunately, the size and complexity of the JVM means that many of these formal accounts must either restrict their scope substantially, or risk becoming unwieldy and intractable. This paper suggests an alternative approach to the specification of the JVM that seeks to ameliorate such problems by composing together a small set of `microinstructions' to produce the full bytecode set. These microinstructions are encapsulated as functions in the polymorphic functional programminglanguage Haskell, using the familiar mechanisms of Hindley-Milner type inference to characterize the JVM's rather thorny verifier. In this way, its is hoped that a foundation will be laid for formal descriptions of the java Virtual Machine that need not trade tractability for completeness.
A promising technique for protecting privacy and integrity of sensitive data is to statically check information flow within programs that manipulate the data. While previous work has proposed programminglanguage exte...
详细信息
A promising technique for protecting privacy and integrity of sensitive data is to statically check information flow within programs that manipulate the data. While previous work has proposed programminglanguage extensions to allow this static checking, the resulting languages are too restrictive for practical use and have not been implemented. In this paper, we describe the new language JFlow, an extension to the javalanguage that adds statically-checked information flow annotations. JFlow provides several new features that make information flow checking more flexible and convenient than in previous models: a decentralized label model, label polymorphism, run-time label checking, and automatic label inference. JFlow also supports many language features that have never been integrated successfully with static information flow control, including objects, subclassing, dynamic type tests, access control, and exceptions. This paper defines the JFlow language and presents formal rules that are used to check JFlow programs for correctness. Because most checking is static, there is little code space, data space, or run-time overhead in the JFlow implementation.
java provides portability and safety at the price of efficiency. Many solutions have been proposed to overcome the lack of efficiency, but most of them lose either portability or the ability to dynamically load byteco...
详细信息
java provides portability and safety at the price of efficiency. Many solutions have been proposed to overcome the lack of efficiency, but most of them lose either portability or the ability to dynamically load bytecode. The authors present a solution that reconciles all these factors. Harissa is an efficient environment for the execution of java programs that permits mixing compiled and interpreted methods. Harissa's compiler translates java bytecode to C, incorporating several aggressive optimizations an outperforming JIT systems by a factor of two or more.
This paper presents extensions to Bell Canada source code quality assessment suite (DATRIX tm) for handling javalanguage systems. Such extensions are based on source code object metrics, including java interface metr...
详细信息
ISBN:
(纸本)0769501796
This paper presents extensions to Bell Canada source code quality assessment suite (DATRIX tm) for handling javalanguage systems. Such extensions are based on source code object metrics, including java interface metrics, which are presented and explained in detail. The assessment suite helps to evaluate the quality of medium-large software systems by identifying parts of the system which have unusual characteristics. This paper also studies and reports the occurrence of clones in medium-large java software systems. Clone presence affects quality since it increases a system size and often leads to higher maintenance costs. Clone identification process uses java specific metrics to determine similarities between methods throughout a system. The results obtained from experiments with software evaluation and clone detection techniques, on over 500 KLOC of java source code, are presented.
Although many slicing algorithms have been proposed for object-oriented programs, no slicing algorithm has been proposed which cart be used to handle the problem of slicing concurrent java programs correctly. In this ...
详细信息
ISBN:
(纸本)0769501796
Although many slicing algorithms have been proposed for object-oriented programs, no slicing algorithm has been proposed which cart be used to handle the problem of slicing concurrent java programs correctly. In this paper, we propose a slicing algorithm for concurrent java programs. To slice concurrent java programs, we present a dependence-based representation called multithreaded dependence graph, which extends previous dependence graphs, to represent concurrent java programs. We also show how static slices of a concurrent java program can be computed efficiently based on its multithreaded dependence graph.
JTN is a formal graphic notation for java-targeted design specifications, that are specifications of systems that will be implemented using java. JTN is aimed to be a part of a more articulated project for the product...
详细信息
ISBN:
(纸本)3540657185
JTN is a formal graphic notation for java-targeted design specifications, that are specifications of systems that will be implemented using java. JTN is aimed to be a part of a more articulated project for the product ion of a development method for reactive/concurrent/distributed systems. The starting point of this project is an existing general method that however does not cover the coding phase of the development process. Such approach provides formal graphic specifications for the system design that are too abstract to be transformed into java code in just one step, or at least: the transformation is really hard and complex. We introduce in the development process an intermediate step that transforms the above abstract specifications into JTN specifications: for which the transformation into a java program is almost automatic and can be guaranteed correct. In this paper we present JTN on a simple toy example.
This paper describes our experiences in having students build a software engineering tool as a course project in a CS2 course. The tool, which we called JDuck (java Documenter of Code, oK), was modelled on the javadoc...
详细信息
ISBN:
(纸本)1581130856
This paper describes our experiences in having students build a software engineering tool as a course project in a CS2 course. The tool, which we called JDuck (java Documenter of Code, oK), was modelled on the javadoc tool that is part of Sun Microsystem's standard java Development Kit (JDK). That is, a working version of JDuck would be able to read in java source code and generate HTML files that summarize the basic structure of the provided classes. We discuss how we set up the project, what we think the students learned, what they told us they learned, and what we would do differently next time.
Although there has been some experimentation with java as a language for numerically intensive computing, there is a perception by many that the language is not suited for such work. In this paper we show how optimizi...
详细信息
ISBN:
(纸本)3540664262
Although there has been some experimentation with java as a language for numerically intensive computing, there is a perception by many that the language is not suited for such work. In this paper we show how optimizing array bounds checks and null pointer checks creates loop nests on which aggressive optimizations can be used. Applying these optimizations by hand to a simple matrix-multiply test case leads to java compliant programs whose performance is in excess of 500 Mflops on an RS/6000 SP 332MHz SMP node. We also report in this paper the effect that each optimization has on performance. Since all of these optimizations can be automated, we conclude that java will soon be a serious contender for numerically intensive computing.
java's object oriented nature along with its distributed nature make it a good choice for network computing. The use of virtual methods associated with java's object oriented behavior requires accurate target ...
详细信息
ISBN:
(纸本)1880446359
java's object oriented nature along with its distributed nature make it a good choice for network computing. The use of virtual methods associated with java's object oriented behavior requires accurate target prediction for indirect branches. This is critical to the performance of java applications executed an deeply pipelined, wide issue processors. In this paper, we investigate the use of a path history based predictor to accurately determine the target of these virtual methods. The effect of varying the various parameters of the predictor on the misprediction rates is studied using various java benchmarks. Results from this study show that the execution of java code will benefit from more sophisticated branch-predictors.
Orthogonal persistence is based on three principles that have been understood for nearly 20 years. PJama is a publically available prototype of a java platform that supports orthogonal persistence. It is already capab...
详细信息
ISBN:
(纸本)3540654526
Orthogonal persistence is based on three principles that have been understood for nearly 20 years. PJama is a publically available prototype of a java platform that supports orthogonal persistence. It is already capable of supporting substantial applications. The experience of applying the principles of orthogonal persistence to the java programming language is described in the context of PJama. For example, issues arise over achieving orthogonality when there are classes that have a special relationship with the java Virtual Machine. The treatment of static variables and the definition of reachability for classes and the handling of the keyword transient also pose design problems. The model for checkpointing the state of a computation, including live threads, is analyzed and related to a transactional approach. The problem of dealing with state that is external to the PJama environment is explained and the solutions outlined. The difficult problem of system evolution is identified as a major barrier to deploying orthogonal persistence for the javalanguage. The predominant focus is on semantic issues, but with concern for reasonably efficient implementation. We take the opportunity throughout the paper and in the conclusions to identify directions for further work.
暂无评论