Name : Mike Arthur
Email/MSN : mike@mikearthur.co.uk
Homepage/Blog: http://mikearthur.co.uk/
CV: http://mikearthur.co.uk/cv.pdf
Abstract
Currently, GCJ can be installed with the 'gcj' use
flag, passed when compiling GCC. With GCC 4.1, we have
seen that many programs can compile to native bytecode.
This project will aim to integrate this into the
Portage package management system, and produce patches
for popular programs, benefiting Gentoo, Java
developers and the open source community.
1 Benefits to the Gentoo Community
* Support for GCJ/GIJ through java-config.
* Support for compiling packages using OSS APIs.
* (Time limited) Investigating the benefit of compiling
Java packages to native bytecode.
* Allowing Java programs to be used on architectures
with no JVMs currently available (e.g. Alpha).
2 Project Details
With GCJ 4.1 and the GNU Classpath, we have an
increasingly sophisticated GPL compiler and class
library. Already, Fedora (and I) have managed to get
applications such as Azureus and Eclipse running with
GIJ. GCJ compiles Java programs to a Compiled Native
Interface and GIJ interprets compiled bytecode.
Currently, we have an experimental overlay, which can
be used to provide GCJ as a compiler for Java files,
and a 'native' use flag, that can be used as a JDK.
However, there are some issues with this, such as
static linking with GCC libraries, and the debate
whether ECJ is best used for compiling bytecode, that
need to be resolved.
The benefits of this to the community range from
preventing the requirement on fetch restricted packages
(such as the Sun-JDK) to run popular pieces of software
at acceptable standards (such as Azureus or Eclipse).
Packages generally will fall into three categories:
* Packages (such as Azureus) that already compile and
run acceptably with GCJ, and don't make use of
outside libraries that will not compile
* Packages that will require basic patching of code in
order to retain functionality and compile
* Packages that require extensive patching in order to
work, and may require a vast rewrite in order to
perform this.
By current counts there are 295 packages (excluding Sun
packages, JREs and JDKs). Priority will then be placed
on major used in-tree software (e.g. Eclipse, Tomcat,
Azureus, Hibernate, Ant) and their relevant
dependencies. These will be categorised into the 3
above groups.
The languages used will be Python, BASH and Java.
Python may not need to be used, but as it is the
language that both Portage and java-config are written
in, it is important that, if any extensions need to be
made to Portage or java-config, that they are also
written in Python.
BASH will be used to create Gentoo ebuilds, which will
be a crucial part of this project, as this will be used
to physically distribute and install my work on the
machines of end-users. Within this, shell scripting may
be used to modify files, if only basic modifications
are required.
Java will be used to modify and create patches for the
relevant programs.
3 Project Schedule
* May 22nd: Find out whether proposal has been accepted.
* May 22nd - 28th: Prioritise and research packages
that will be able to be/have been compiled already
using GCJ.
* May 28th - June 8th: On holiday to Italy
* June 8th - June 15th: Produce Ebuilds for Azureus and
any other high-priority packages that compile cleanly
* June 15th - August 7th: Work on patching packages,
starting from high to low priority.
* August 7th - August 12th: Freeze on patching. Any
packages that work, produce Ebuilds to install them.
Briefly analyse performance benefits/drawbacks of
using GIJ or ECJ compared to GCJ native code.
* August 12-19th: Working on outdoor activity camp in
Scottish Highlands
* August 19th-21st: Complete any last minute cleaning.
4 Biography
My name is Mike Arthur, and I am a third year
undergraduate at The University of Edinburgh. I study
Computer and Management Science.
I have been using Java at an increasingly sophisticated
level over 3 years, and this year, recently completed a
peer to peer distributed filesystem, using the Chord
protocol, in Java. I am familiar with using large
amounts of the 1.4 and 1.5 API, and familiar with other
methods that would be beneficial to this project, such
as shell scripting, regular expressions and Python.
My Enterprise Computing coursework, written in Java and
JSP, in the latter part of 2005, was impressive enough
to warrant me obtaining a 95/100 mark, and for the
course lecturer to create a unique 4th year project for
me, using AJAX to augment the existing practical,
denying any other students access to this project.
I have been using Gentoo for 4 years, originally as a
server platform, before moving to using it exclusively
on my AMD64 desktop for a year. I contribute help to
other Gentoo users on #gentoo and the forums, and am
familiar with filing and checking bugs using the Gentoo Bugzilla.
I feel my experience with Gentoo and Java would make me
an ideal candidate for this project.
Firstly, I have been using Java to perform a vast array
of projects over the last 3 years, from a web platform
to a filesystem to a processor simulator, and I feel
this array would allow me to identify quickly how to
duplicate functionality from sun.* or proprietary
classes with OSS. Aside from my Java experience, I have
taken courses in efficient algorithmic design,
optimising code, writing secure Java code and
preventing attacks, and working individually to solve
large scale, multifaceted projects, such as the
previously mentioned filesystem, that bear strong
resemblance to this one, in terms of time and effort required.
Secondly, I am organised, and my Management experience
gives me the ability to manage my time well, and
project the time required for subprojects. I feel this
would allow me to be able to provide visible results
for Gentoo, rather than 5 incomplete sub-projects.
Finally, I am passionate about OSS, and other than the
2.5 weeks I have mentioned above, I plan on dedicating
the 2.5 months working at this project as a full-time
job. The prospect of this project really excites me,
both in terms of the outcomes (GCJ used extensively and
integrated into Portage) and also the prospect of being
able to spend the summer working on something I am
interested in. I believe this will help me to be
incredibly motivated to not only work hard, but retain
focus on the real gains of this project to the
community, and not get sidelined.
I hope to learn a lot this summer, and give a lot, if
accepted, which would benefit Gentoo, the open source
community (as these patches may well be accepted
upstream) and my future career.