All pastes #54371 Raw Edit

Anonymous

public text v1 · immutable
#54371 ·published 2006-05-08 19:48 UTC
rendered paste body
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.