On the behalf of the organizing and program committees, it is our pleasure to welcome you to the 2015 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools (PPPJ'15) in Melbourne, Florida. PPPJ'15 is the twelfth conference in the PPPJ series. It continues a tradition as a forum for researchers, practitioners, and educators to present and discuss novel results on all aspects of programming in the Java platform, including virtual machines, languages, tools, methods, frameworks, libraries, case studies, and experience reports.
Proceeding Downloads
JML: Expressive Contracts, Specification Inheritance, and Behavioral Subtyping
JML, the Java Modeling Language, is a formal specification language tailored to the specification of sequential Java classes and interfaces. It features contracts in the style of design by contract (as in Eiffel), as well as more sophisticated features ...
Java and Distributed Systems: Observations, Experiences, and ... a Wish List
When Java was introduced to the world at large 20 years ago, it brought many interesting features and capabilities into the mainstream computing environment. A Virtual Machine based approach with a just-in-time compiler that supported sandboxing, ...
HJ-OpenCL: Reducing the Gap Between the JVM and Accelerators
Recently there has been increasing interest in supporting execution of Java Virtual Machine (JVM) applications on accelerator architectures, such as GPUs. Unfortunately, there is a large gap between the features of the JVM and those commonly supported ...
Runtime Code Generation and Data Management for Heterogeneous Computing in Java
GPUs (Graphics Processing Unit) and other accelerators are nowadays commonly found in desktop machines, mobile devices and even data centres. While these highly parallel processors offer high raw performance, they also dramatically increase program ...
Machine-Learning-based Performance Heuristics for Runtime CPU/GPU Selection
High-level languages such as Java increase both productivity and portability with productive language features such as managed runtime, type safety, and precise exception semantics. Additionally, Java 8 provides parallel stream APIs with lambda ...
On-Line Synchronous Total Purely Functional Data-Flow Programming on the Java Virtual Machine with Sig
Sig is the prototype of a purely declarative programming language and system for the processing of discrete, clocked synchronous, potentially real-time data streams. It aspires to combine good static safety, scalability and platform independence, with ...
Ohua: Implicit Dataflow Programming for Concurrent Systems
Concurrent programming has always been a challenging task best left to expert developers. Yet, with the advent of multi-core systems, programs have to explicitly deal with multithreading to fully exploit the parallel processing capabilities of the ...
Toward Efficient Strong Memory Model Support for the Java Platform via Hybrid Synchronization
The Java memory model provides strong behavior guarantees for data-race-free executions. However, it provides very weak guarantees for racy executions, leading to unexpected, unintuitive behaviors. This paper focuses on how to provide a memory model, ...
Efficient Rebuilding of Large Java Heaps from Event Traces
Understanding and tracking down memory-related performance problems, such as long garbage collection times and memory leaks, is a tedious task in large and complex applications. Memory profilers can support developers in this task by recording detailed ...
Efficient Deterministic Replay of Multithreaded Executions in a Managed Language Virtual Machine
Shared-memory parallel programs are inherently nondeterministic, making it difficult to diagnose rare bugs and to achieve deterministic execution. Existing multithreaded record & replay approaches have serious limitations such as relying on custom ...
An Efficient and Generic Event-based Profiler Framework for Dynamic Languages
Profilers help programmers analyze their programs and identify performance bottlenecks. We implement a profiler framework that helps to compare and analyze programs implementing the same algorithms written in different languages. Profiler implementers ...
Improving the Interoperation between Generics Translations
Generics on the Java platform are compiled using the erasure transformation, which only supports by-reference values. This causes slowdowns when generics operate on primitive types, such as integers, as they have to be transformed into reference-based ...
Identifying Test Refactoring Candidates with Assertion Fingerprints
Test cases constitute around 30% of the codebase of a number of large software systems. Poor design of test suites hinders test comprehension and maintenance. Developers often copy-paste existing tests and reproduce both boilerplate and essential ...
Incremental Co-Evolution of Java Programs based on Bidirectional Graph Transformation
Modern Java IDE aim at assisting object-oriented software development workflows with continuously interleaved co-evolution steps of program editing and program refactoring. Program editing usually comprises manually performed program changes applied by ...
BLAST: Bytecode-Level Analysis on Sliced Traces
BLAST is a framework for deep analysis of Java program executions. It captures the entire information flow of an execution. A BLAST trace represents the space-time history of a program run: It combines space (heap, static, and stack memory locations) ...
Mining Method Handle Graphs for Efficient Dynamic JVM Languages
The Java Virtual Machine (JVM) has been used as an execution platform by many dynamically-typed programming languages such as Ruby, Python, and Groovy. The main challenge to compile such dynamic JVM languages is choosing the most appropriate ...
SmartStealing: Analysis and Optimization of Work Stealing in Parallel Garbage Collection for Java VM
Parallel garbage collection has been used to speedup the collection process on multicore architectures. Similar to other parallel techniques, balancing the workload among threads is critical to ensuring good overall collection performance. To this end, ...