Welcome to the 2007 International Conference on the Principles and Practice of Programming in Java (PPPJ 2007). Thank you for attending, on behalf of the Organizing and Steering Committees. The PPPJ conference is an excellent forum for presentation of research results and discussion of issues related to the Java platform and language.
This year, 58 papers were submitted for consideration by the conference. After careful review by the Program Committee members and other reviewers, the Committee accepted 19 full papers and 5 short papers. The topics covered by the papers include a broad range of subjects, i.e., virtual machines, compilation, language design, internet programming, software engineering, generative programming, and Java applications.
Proceeding Downloads
Extending and contributing to an open source web-based system for the assessment of programming problems
This paper describes the development of a web-based programming and assessment environment for use in supporting programming fundamentals courses (CS1, CS2) taught in Java. This environment is currently linked with WeBWorK, an open source web-based ...
Feasibility and benefits of migrating towards JEE: a real life case
In this paper we describe CNR's experience in migrating its central administration information systems from proprietary platforms to JEE. In particular, we will show that in our case this open standard allowed for smooth migration, seamless integration ...
A Java-based science portal for neutron scattering experiments
The Spallation Neutron Source (SNS) is a state-of-the-art neutron scattering facility recently commissioned by the US Department of Energy (DOE). The neutron beam produced at SNS will have an intensity that is an order of magnitude higher than existing ...
The design of a Java phone programming environment
Mobile phones present unique challenges to the implementation of a self-contained programming environment. The paper details the design of the M scripting environment for mobile phones. The goal of the environment is to make the breadth and power of the ...
Searching the library and asking the peers: learning to use Java APIs on demand
The existence of large API libraries contributes significantly to the programming productivity and quality of Java programmers. The vast number of available library APIs, however, presents a learning challenge for Java programmers. Most Java programmers ...
A software metric for coherence of class roles in Java programs
The purpose of software metrics is to measure the quality of programs. The results can be for example used to predict maintenance costs or improve code quality. An emerging view is that if software metrics are going to be used to improve quality, they ...
Bridging Java and AspectJ through explicit join points
Through AspectJ, aspect-oriented programming (AOP) is becoming of increasing interest and availability to Java programmers as it matures as a methodology for improved software modularity via the separation of cross-cutting concerns. AOP proponents often ...
Typeless programming in Java 5.0 with wildcards
With the introduction of Java 5.0 [8] the type system has been extended by parameterized types, type variables, type terms, and wildcards. As a result very complex types can arise. The term Vector<? super Vector<? extends List<Integer>>> is for example ...
Featherweight Java with multi-methods
Multi-methods (collections of overloaded methods associated to the same message, whose selection takes place dynamically instead of statically as in standard overloading) are a useful mechanism since they unleash the power of dynamic binding in object-...
FSMC+, a tool for the generation of Java code from statecharts
ProVotE is a two-phase project aiming at actuating art. 84 of law 2 -- 5/3/2003 of the Autonomous Province of Trento (Italy), which promotes the introduction of e-voting systems for the next provincial elections in Trentino (Nov. 2008).
During the first ...
A cross-language framework for developing AJAX applications
AJAX (Asynchronous JavaScript And XML) applications have received wide-spread attention as a new way to develop highly interactive web applications. Breaking with the complete-page-reload paradigm of traditional web applications, AJAX applications rival ...
A Java toolkit for the design and the automatic checking of server architectures
This paper presents Saburo, a Java toolkit that generates, from a single Java specification, Java Internet server implementations, together with their formal model that can be automatically checked using the model checker SPIN. This approach ensures the ...
Array bounds check elimination for the Java HotSpot™ client compiler
Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations ...
Advanced Java bytecode instrumentation
Bytecode instrumentation is a valuable technique for transparently enhancing virtual execution environments for purposes such as monitoring or profiling. Current approaches to bytecode instrumentation either exclude some methods from instrumentation, ...
Implementing fast JVM interpreters using Java itself
Most Java Virtual Machines (JVMs) are themselves written in unsafe languages, making it unduly difficult to build trustworthy and safe JVM platforms. While some progress has been made on removing compilers from the trusted computing base (using ...
A DSL approach for object memory management of small devices
Small devices have a specific hardware configuration. In particular, they usually include several types of memories (typically ROM, internal and external RAM, Flash memory) different in quantities and properties. We propose an object memory management ...
The potential of trace-level parallelism in Java programs
The exploitation of parallelism among traces, i.e. hot paths of execution in programs, is a novel approach to the automatic parallelization of Java programs and it has many advantages. However, to date, the extent to which parallelism exists among ...
Supporting exception handling for futures in Java
A future is a simple and elegant construct that programmers can use to identify potentially asynchronous computation and to introduce parallelism into serial programs. In its recent 5.0 release, Java provides an interface-based implementation of futures ...
simpA: an agent-oriented approach for prototyping concurrent applications on top of Java
More and more aspects of concurrency and concurrent programming are becoming part of mainstream programming and software engineering, as a result of several factors, such as the widespread availability of multi-core / parallel architectures and Internet-...
A Prolog-oriented extension of Java programming based on generics and annotations
Although object-oriented languages are nowadays the mainstream of application development, several research contexts suggest that a multi-paradigm approach is worth pursuing. In particular, a declarative, logic-based paradigm could fruitfully add ...
Towards intelligent analysis techniques for object pretenuring
Object pretenuring involves the identification of long-lived objects at or before their instantiation. It is a key optimization for generational garbage collection systems, which are standard in most high performance Java virtual machines. This paper ...
The potential of speculative class-loading
Platforms such as Java provide many software engineering benefits. However, these benefits often come at the cost of significant runtime overhead. In this paper we study the potential for hiding some of that overhead by employing speculative execution ...
Redundant boxing elimination by a dynamic compiler for Java
Auto-boxing improves code readability by eliminating the need for explicit boxing code, but it does not improve performance, because it does not eliminate boxing code but inserts the code implicitly. Current auto-boxing implementations try to improve ...
Adaptive inlining and on-stack replacement in the CACAO virtual machine
Method inlining is a well-known and effective optimization technique for object-oriented programs. In the context of dynamic compilation, method inlining can be used as an adaptive optimization in order to eliminate the overhead of frequently executed ...
J2MEMicroDB: an open source distributed database engine for mobile applications
Mobile distributed applications must be able to work offline when no network connection is available, or simply to spare bandwidth or money. To do so the mobile client must be able to store and handle structured data. Java 2 Micro Edition (J2ME) does ...
A serialization based approach for strong mobility of shared object
Mobility becomes very important in distributed Computing. Thus, many works deal with process strong mobility, but few of them deal with mobility of shared objects. In this paper, we present a mobility approach based on source code transformation, which ...
A framework for mobile Java applications
We present the Dynamic Theory Execution (DynamiTE) framework for creating concurrent object-oriented applications, with semantics grounded in a process calculus. DynamiTE allows a system to be constructed as a series of distinct mobile components called ...
A Java mobile-enabled environment to access adaptive services
Today information systems provide services which may be accessed through various types of devices and/or networks and from different locations. Services should be adapted at runtime to the features of the requiring device. Moreover, users may specify ...
- Proceedings of the 5th international symposium on Principles and practice of programming in Java