PPPJ 2009 Sponsors:
In Cooperation With:
Thursday August 27, 2009
Friday August 28, 2009
This year's keynote address was scheduled to be delivered by Dr. James Gosling, Vice President and Sun Fellow with Sun Microsystems Inc. Unfortunately Dr. Gosling requires surgery for an urgent medical condition, and as such, will be unable to deliver the address as planned. Our alternative speaker will be Ondrej Lhotak from the University of Waterloo. His address is titled "The State of Reference Analysis".
Paper Session: Applications 1
Solve & Evaluate with Informa: A Java-based Classroom Response System for Teaching Java
Actor frameworks for the JVM platform: A Comparative Analysis
Development of a Java-based Unified and Flexible Natural Language Discourse System
Paper Session: Applications 2
Java for High Performance Computing: Assessment of Current Research and Practice
A Framework for Constructing Peer-to-Peer Overlay Networks in Java
Unit Test Support for Java via Reflection and Annotations
Paper Session: Language
Three Approaches to Object Evolution
Safer Typing of Complex API Usage through Java Generics
Parsing Fortress Syntax
A Discipline of Tree Processing
Paper Session: Parallelization
Automatic Parallelization for Graphics Processing Units
The Use of Hardware Transactional Memory for the Trace-Based Parallelization of Recursive Java Programs
Parallelizing Calling Context Profiling in Virtual Machines on Multicores
Paper Session: Tool Demonstrations
Analyzing Performance and Dynamic Behavior of Embedded Java Software with Calling-Context Cross-Profiling
MAJOR: Rapid Tool Development with Aspect-Oriented Programming
ConcJUnit: Unit Testing for Concurrent Programs
Paper Session: Virtual Machines 1
SlimVM: A Small Footprint Java Virtual Machine for Connected Embedded Systems
Lazy Continuations for Java Virtual Machines
Stack Allocation of Objects in the Cacao Virtual Machine
Paper Session: Virtual Machines 2
Tracking Performance Across Software Revisions
Phase Detection using Trace Compilation
Virtual Reuse Distance Analysis for SPECjvm2008 Data Locality
Tutorial A: Alice 3 and Java for CS1 & AP CS
Wanda Dann, Carnegie Mellon University
Tutorial A has been cancelled due to low enrolment.
Tutorial B: Preventing Bugs with Pluggable Type-Checking
Michael D. Ernst, University of Washington
The Java type system helps programmers to detect and prevent errors. However, Java's built-in type system does not detect and prevent enough errors. It cannot express important properties such as: a reference is non-null, a data structure should not be modified, or a string has been properly sanitized.
Java's type system can be extended to enforce such properties statically, preventing whole classes of errors. However, such type system extensions have not been practical in the past, in part because their implementations have been inexpressive, unscalable, or incompatible with existing languages or tools.
More recently, pluggable types (that operate as an optional plug-in to the compiler) have become practical for Java. This benefits two constituencies:
The line between these constituencies is porous: a developer may create a simple type system to enforce an application-specific property.
This tutorial will explain how to both use and create pluggable type systems. Afterward, you will be ready to use pluggable types with confidence and to create simple type-checkers of your own, and you will know where to look for more information.
The hands-on activities will use the Checker Framework, which provides expressive, concise declarative and procedural mechanisms for creating pluggable type checkers for Java. However, the ideas extend to other frameworks and languages. The Checker Framework is the basis of many practical checkers that have found hundreds of important errors in millions of lines of code. The Checker Framework is being used by researchers worldwide, and it has yielded new insight into research type systems. It is usable with any version of the Java language, but pluggable types are so important that Java 7 will contain special syntax (designed by the presenter of this tutorial) to support type qualifiers.
The tutorial will cover both theory and practice, and is applicable both to researchers and also to practitioners who wish to verify domain-specific properties in their software. For example, you will learn how type system designers can build scalable, robust, and easily deployable type-checkers. During the tutorial, you will build your own type-checker. After the tutorial, you will be prepared to use, create, or customize pluggable type-checkers.
Attendees are suggested to bring laptop computers, though it is also possible to look on with another attendee.
About the Presenters:
Michael Ernst is Associate Professor at the University of Washington, and is the specification lead for the Type Annotations language extension (``JSR 308'') that is part of Java 7. He is the first non-Sun-employee to be the specification lead for a Java language change. He is also a member of the expert group for JSR 305 and is the author of many tools for improving programmer productivity. For more information, see http://www.cs.washington.edu/homes/mernst/.