It is our pleasure to welcome you to the sixth annual conference on Principles and Practice of Programming in Java (PPPJ 2008). The Java language continues to stimulate new exciting research ideas and provides a framework for exploring new ideas in software design, as readers will see from the papers selected for presentation at this conference.
The number of submissions was down this year, but the quality of those submissions remained extremely high. We received 46 abstracts, of which 40 materialized as full submissions by the deadline. Of these, we have selected 19 high quality papers for presentation in full. The topics represented in the papers are as diverse as the application areas for the Java language itself. They range over issues from teaching Java to optimizing the performance of the JVM, with many other topics in between.
Our Program Committee was comprised of many world experts in object-oriented software design, compiler optimization and Java technology. They freely contributed their valuable time to help make this conference a big success. Everyone one on the committee performed a magnificent job of reading, evaluating and discussing the submissions. Major disagreements between PC members on the merits of submissions were fortunately few and were easily resolved to everyone's satisfaction. The final list of selected papers met with everyone's approval.
Proceeding Downloads
The JavaFest: a collaborative learning technique for Java programming courses
Learning to create well-designed and robust Java programs requires, besides a good understanding of the language, a significant amount of practice. In this paper we present the JavaFest, a collaborative learning technique for teaching Java to beginning ...
An experimental environment for teaching Java security
In many fields of Computer Engineering education it is crucial that students gain both conceptual understanding and practical skills. To this end, an effective teaching approach relies on a blended-learning strategy that combines face-to-face lessons ...
Patterns and traceability in teaching software architecture
Courses on software architecture and software engineering need to explain the role of non-functional properties in software design, and they often use student projects to highlight their interrelations. Despite its critical importance in software ...
A framework for command processing in Java/Swing programs based on the MVC pattern
We present a framework for command processing in Java/Swing programs based on the model-view-controller (MVC) pattern. In addition to standard approaches our framework supports (1) centralized exception handling, (2) premature command termination, (3) ...
The PIM: an innovative robot coordination model based on Java thread migration
There is a growing demand to apply multi-robot systems to address many current problems ranging from search and rescue to distributed surveillance to coordination of small satellites in space. Solving these problems effectively requires that teams of ...
Self-configuring object-to-relational mapping queries
Object-to-relational maps are nowadays routinely utilized in providing a persistency mechanism for object-oriented programs. We present how an object-to-relational mapper, such as Hibernate, provides transparent persistency to object-oriented programs. ...
Portable execution of legacy binaries on the Java virtual machine
The move toward pure managed-code environments is held back by the vast amount of legacy software available only as statically compiled binaries for some legacy instruction set architecture (ISA). Catering to this legacy software requires all sorts of ...
A lazy developer approach: building a JVM with third party software
The development of a complete Java Virtual Machine (JVM) implementation is a tedious process which involves knowledge in different areas: garbage collection, just in time compilation, interpretation, file parsing, data structures, etc. The result is ...
Speculative improvements to verifiable bounds check elimination
As a safety measure, the Java programming language requires bounds checking of array accesses. This usually translates to dynamic checks each time an array element is accessed. Static analysis can help eliminate some of those checks by proving them to ...
Constraint based optimization of stationary fields
In many scenarios a field holds a value that is constant beyond a certain point in the execution of the program. However, Java only allows it to be marked as being final in relation to the control-flow of the program. We present a language extension ...
Optimized strings for the Java HotSpot™ virtual machine
In several Java VMs, strings consist of two separate objects: metadata like the string length are stored in the actual string object, while the string characters are stored in a character array. This separation causes an unnecessary overhead. Each ...
Slim VM: optimistic partial program loading for connected embedded Java virtual machines
Embedded systems are inherently limited in terms of local storage capacity. This limitation conflicts with the demands of modern virtual machine platforms, which require large amounts of library code to be present on each client device. These ...
Lazy argument passing in Java RMI
Though often criticized for its inherent synchronization overhead and coupling, the remote method invocation (RMI) paradigm remains one of the most popular abstractions for building distributed applications. Many authors have suggested ways to overcome ...
Measuring the performance of interactive applications with listener latency profiling
When Java developers need to improve the performance of their applications, they usually use one of the many existing profilers for Java. These profilers generally capture a profile that represents the execution time spent in each method. The developer ...
A trait based re-engineering technique for Java hierarchies
Traits are pure behavior components introduced in the Smalltalk community in order to integrate the traditional class inheritance with a composition mechanism: a class is composed by traits and inherits from superclasses. This offers the advantage of ...
Aspect weaving in standard Java class libraries
Aspect-oriented programming (AOP) has been successfully applied to application code thanks to techniques such as Java bytecode instrumentation. Unfortunately, with current technology, such as AspectJ, aspects cannot be woven into standard Java class ...
Type safe dynamic object delegation in class-based languages
Class inheritance and method overriding, as provided by standard class-based languages, are not flexible enough to represent the dynamic behavior of objects; with this respect, object composition and delegation are often advocated as a more flexible ...
Intersection types in Java
In the past we analyzed typeless Java programs. One of our results was, that there may be different correct typings for one method. This means that the principal types of such methods are intersection types. We presented a type-inference algorithm. For ...
Embedded typesafe domain specific languages for Java
Projects like jMock and Hibernate Criteria Query introduced embedded DSLs into Java. We describe two case studies in which we develop embedded typesafe DSLs for building SQL queries and engineering Java bytecode. We proceed to extract several patterns ...
- Proceedings of the 6th international symposium on Principles and practice of programming in Java