These are the proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java platform: virtual machines, languages, and tools (PPPJ'13) in Stuttgart, Germany. PPPJ'13 is the 10th conference in the PPPJ series and continues its tradition of providing a forum for researchers, practitioners, and educators to present and discuss novel results on all aspects of programming on the Java platform including virtual machines, languages, tools, methods, frameworks, libraries, case studies, and experience reports.
Proceeding Downloads
Deriving code coverage information from profiling data recorded for a trace-based just-in-time compiler
Code coverage information is typically recorded by adding instrumentation to an application before or during execution. However, this has the disadvantage that the instrumentation decreases the performance.
A high-performance virtual machine (VM), such ...
TAE-JS: automated enhancement of JavaScript programs by leveraging the Java annotations infrastructure
Recent state-of-the-art approaches enhance JavaScript programs with concerns (e.g., persistence, security, transactions, etc.) by modifying the source code by hand to use special libraries. As a result, adding concerns to a JavaScript program creates ...
Cross-compiling Java to JavaScript via tool-chaining
Cross-compilation translates between different high-level programming languages and enables programmers to use their skill-set on a platform that ordinarily does not support their preferred language. E.g., web applications for desktop browsers and ...
An efficient native function interface for Java
We present an efficient and dynamic approach for calling native functions from within Java. Traditionally, programmers use the Java Native Interface (JNI) to call such functions. This paper introduces a new mechanism which we tailored specifically ...
OCaml-Java: an ML implementation for the Java ecosystem
Developing complex applications often requires to mix several languages, in order to take advantage of each language strengths in the various parts of the source code. However, this imposes to transfer data from one language to another one; the problem ...
An adapter-aware, non-intrusive dependency injection framework for Java
In strongly typed Object-Oriented Programming languages, it is common to encounter type incompatibilities between separately developed software components one desires to compose. Using the Adapter pattern to overcome these type incompatibilities is only ...
Pure trait-based programming on the Java platform
Traits provide a mechanism for fine-grained code reuse to overcome the limitations of class-based inheritance. A trait is a set of methods which is completely independent from any class hierarchy and can be flexibly used to build other traits or classes ...
Hyflow2: a high performance distributed transactional memory framework in scala
Distributed Transactional Memory (DTM) is a recent but promising model for programming distributed systems. It aims to present programmers with a simple to use distributed concurrency control abstraction (transactions), while maintaining performance and ...
Feel different on the Java platform: the star programming language
Star is a functional, multi-paradigm and extensible programming language that runs on the Java platform. Starview Inc. developed the language as an integral part of the Starview Enterprise Platform, a framework for real-time business applications such ...
JVM-hosted languages: they talk the talk, but do they walk the walk?
The rapid adoption of non-Java JVM languages is impressive: major international corporations are staking critical parts of their software infrastructure on components built from languages such as Scala and Clojure. However with the possible exception of ...
Efficient interpreter optimizations for the JVM
The Java virtual machine is a popular target for many language implementers. Due to the unusually poor performance of hosted interpreters, many programming language implementers resort to implementing a custom compiler that emits Java bytecode instead. ...
Accelerating Habanero-Java programs with OpenCL generation
The initial wave of programming models for general-purpose computing on GPUs, led by CUDA and OpenCL, has provided experts with low-level constructs to obtain significant performance and energy improvements on GPUs. However, these programming models are ...
Refinement-based testing of delta-oriented product lines
We present an approach for specifying and testing delta-oriented software product lines (SPLs) of Java programs. To this end we extend FineFit---a tool and an approach for refinement-based testing of single products. The input to FineFit consists of an ...
An artificial intelligence for the board game 'Quarto!' in Java
This paper presents an artificial intelligence (AI) for the board game 'Quarto!' in Java. The program uses depth-first search for decision making. To improve runtime performance, we used alphabeta pruning, a transposition table, and a Java constraint ...
Extending the JastAdd extensible Java compiler to Java 7
JastAddJ is an extensible Java compiler, implemented using reference attribute grammars. It has been shown previously how the language constructs of Java 5, like generics, could be modularly added to the original JastAddJ compiler that supported Java ...
Golo, a dynamic, light and efficient language for post-invokedynamic JVM
This paper introduces Golo, a simple dynamic programming language for the Java Virtual Machine (JVM) that has been designed to leverage the capabilities of the new Java 7 invokedynamic instruction and API (JSR 292). Golo has its own language constructs ...
Exploiting slicing and patterns for RTSJ immortal memory optimization
The Real-Time Specification for Java (RTSJ) introduces a new memory management model which avoids interfering with the garbage collection process. Two types of memory areas are provided - immortal and scoped. Using this memory management model is not ...
JetBrains MPS as a tool for extending Java
JetBrains MPS is an integrated environment for language engineering. It allows language designers to define new programming languages, both general-purpose and domain-specific, either as standalone entities or as modular extensions of already existing ...
Jikes RDB: a debugger for the Jikes RVM
The Jikes RVM is a meta-circular JVM serving as a leading platform for virtual machine research. Despite its popularity, the Jikes RVM still provides almost no debugging support. In this paper we present Jikes RDB, the Jikes RVM Debugger. RDB is non-...
JNICodejail: native code isolation for Java programs
The Java Native Interface (JNI) allows Java programmers to inter-operate with code written in other languages like C and C++. One reason to use JNI is to get higher performance. Other reasons are to access low-level implementation features not available ...
Implementing a Java JIT compiler in Haskell: case study
We present a JVM prototype implemented in the purely-functional language Haskell. It exploits several features of the language, such as strong static typing to implement an intermediate representation, and abstraction mechanism to express machine code ...
- Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools