IcePick

From IcedTea

Jump to: navigation, search

The aim of the IcePick project is to allow the language tools (javac, javadoc, javah, javap, apt) from the OpenJDK project to be built separately using any 1.5 compliant Java compiler. This is primarily motivated by a desire to allow these tools to be used with virtual machines that make use of the GNU Classpath library rather than simply as part of the larger IcedTea or OpenJDK distribution with the HotSpot or CACAO virtual machines. The advantages of using this toolset as opposed to existing tools distributed with Classpath-based solutions are:

  • A 1.5 capable Javadoc generator (gjdoc still needs support for the new constructs)
  • Provision of the apt tool for which there is no other Free software solution. This tool is needed to build the JikesRVM.
  • More heavily tested implementations of javac, javah and javap than those provided by ecj and the GNU Classpath tools

Unlike IcedTea, IcePick's only dependency is a 1.5 capable compiler which can be provided by ecj, a gcj which uses ecj or an existing copy of javac. Because the OpenJDK class libraries and HotSpot are not being built, their requisite dependencies (see BuildRequirements) are no longer needed. As a result, IcePick is buildable on a wider range of systems including those not yet supported by IcedTea. This includes those architectures other than x86, x86_64, ppc and ppc64 (the latter two having experimental support on IcedTea thanks to Gary Benson) and systems which can't meet the arduous build requirements of IcedTea/OpenJDK. It also provides a solution for users who want the OpenJDK toolset but don't want to build the entire distribution.

Building IcePick

  1. Download IcePick from its Mercurial repository either using hg clone http://icedtea.classpath.org/hg/icepick or by grabbing a tarball
  2. Get hold of a copy of the langtools from the OpenJDK. You'll find this in an existing copy of OpenJDK/IcedTea or from its Mercurial repository via hg clone http://hg.openjdk.java.net/jdk7/jdk7/langtools/ or a tarball
  3. Build as follows
./autogen.sh
./configure --with-langtools-src-dir=<directory where langtools was extracted>
 make

The build produces a C-based wrapper for each of the tools. make install will install them in the prefix passed to configure (/usr/local/icepick by default)

Proposed Features

  1. Wrappers using JNI (started in wrapper.c)
  2. Ahead-of-Time compiling using GCJ (based on Dalibor Topic's Summer of Code work)

My deepest thanks to all those who have worked on the GNU Classpath (and related VMs), OpenJDK and IcedTea projects for making this possible.

Personal tools