This specification describes standards, tools and developer guidelines for packaging Java runtimes, libraries and applications.


A coherent Java Policy will help insure a satisfying user experience in using Java applications as well as facilitate developers successfully packaging Java applications for Ubuntu.

At one level this policy should insure technical safety so that, for example, Java Plug-in implementations cooperate and do not lead to link time errors for browers.

At another level the user should have a predictable experience when adding Java runtimes, libraries and applications to the computer.

Use Cases

  • Alice is an Ubuntu desktop user and chooses one (or more) Java runtime implementations when adding new software. Upon successful installation the Java Plug-in should just work in whichever web browser she chooses.
  • Bob is an Ubuntu Java library maintainer. He uses the the Java Policy and related tools to package his jar files and/or native libaries.
  • Charlie is an Ubuntu Java application developer. He uses the Java Policy and related tools to package his application such that it depends on Bob's library.


This specification covers:

  • Java runtime implementations (and the virtual packages they provide)
  • The java-common package (and the standard "alternatives" selection mechanism, including handling priorities)
  • Java libraries
  • Java applications


The Java Policy specification should be built with Debian Java Policy and related discussions in mind.


The implementation will largely take the form of:

  • updates to the java-common package
  • improved documentation for Java runtime, library and application packagers.
  • improved end user documentation

Outstanding Issues

  1. Approach to alternatives: use the current update-java-alternatives approach (marshalling update-alternatives) vs. implement a separate Java alternative registry.

BoF agenda and discussion

We will discuss Java Policy at the UbuntuDeveloperSummitMountainView.


JavaPolicy (last edited 2008-08-06 16:31:24 by localhost)