PPPJ special issue-Foreword

Originally established in 2002 in Kilkenny, Ireland, the Principles and Practice of Programming in Java (PPPJ) conference series has been held 2003 in Dublin (Ireland), 2004 in Las Vegas (USA), 2006 in Mannheim (Germany), 2007 in Monte de Caparica–Lisbon (Portugal), and 2008 in Modena (Italy). The conference has experienced a steady growth in participation because it is a lively forum for leading researchers and industry experts to discuss issues related to the Java programming language and its applications. For several years now, the best contributors of the conference were invited for a special PPPJ issue in Science of Computer Programming. So again, we are happy to present youwith extended versions of the best papers from the 5th PPPJ conference hosted by the Universidade Nova de Lisboa, Portugal. The presented papers cover the wide range from low-level Java specifics to application level innovation. On the language level, ‘‘Featherweight Java with Dynamic and Static Overloading’’ by Bettini and Capecchi provides a formal framework for reasoning about extensions of Java-like languages withmulti-methods. The developed Featherweight Multi Java (FMJ) provides encapsulated multi-methods and thus dynamic overloading. Wurthinger, Wimmer, and Mossenbock present a paper called ‘‘Array Bounds Check Elimination in the Context of Deoptimization’’. They identify situations where array bound checks are performed unnecessarily and evaluate the performance enhancement against several benchmarks. Also looking for performance improvements are Borys Bradel and Tarek Abdelrahman. In their paper ‘‘A Study of Potential Parallelism among Traces in Java Programs’’ they show that trace-based parallelization potentially improves the performance of Java programs on multi-processor machines. Trace-based parallelization is based on the exploitation of parallelism among traces; the hot paths of execution in programs. Another angle on parallel programming in Java is taken by Chandra Krintz and Lingli Zang. They introduce an ’’as-ifserial’’ exception concept based on the futures parallel programming construct in their paper titled ‘‘As-If-Serial Exception Handling Semantics for Java Futures’’. The paper by Hoffman and Eugster explores new possibilities in language design that open up when the base code is aware of cross-cutting aspects. The authors extend AspectJ with concise yet powerful constructs, while maintaining full backwards compatibility. Moving a bit up from the level of language-related research, Makela and Leppanen present a novel metric called Lack of Coherence in Clients (LCIC). LCIC measures if a particular class has a coherent set of roles in a program. The proposed metric has been implemented in a tool that can analyze Java projects in the Eclipse environment. Last but not least, Arno Puder and Sascha Haberling provide us with a very interesting paper from the AJAX context called ‘‘Byte Code Level Cross-Compilation for Developing Web Applications’’. Arno and Sascha describe a new approach that converts a Java or .Net application into an AJAX-enabled Web application.