Apache Harmony is an open source implementation of Java SE 5 JDK. Once its complete, Apache Harmony is implemented with the intention of making it a fully certified implementation. A wide area of the JDK has already been implemented but there are many features and libraries that still need development and fixing.

FreeCol is an open source strategy game implemented in Java. Presently, FreeCol cannot be played using the Harmony JRE due to problems in graphical libraries. Harmony-demo-1 aims to rectify this issue and make FreeCol functional to a defined extent in Harmony.

This project aims to resolve issues in harmony by developing new functionalities and improving existing ones of the graphical libraries. The number of classes that have to be fixed is roughly estimated to be about 11%, i.e. around 100 classes (approx.) out of the whole number of graphical library classes. The project will involve code development, testing, bug fixing and code refactoring. After this project is completed the libraries that are fixed will be ready for use for many other applications.


FreeCol fails to work on Harmony due to problems in the graphical libraries and other related areas. After digging into the problem it was revealed that the AWT and Swing libraries have issues that have to be fixed. I will concentrate initially on the FreeCol "Hello World" scenario. This is the shortest possible path to start the application and quit without facing any exceptions or crashes, i.e. to launch application, press Quit and press Yes.

An estimation of the classes that need to be fixed for the "Hello World" scenario was made by running FreeCol on the Sun JDK and comparing the classes that were used, to the same classes that hardly passed any test on the Harmony JDK. [1] gives the list of classes used by FreeCol which fail their respective Unit tests. This gives a rough estimation that about 11% of classes, i.e. about 100 classes in the AWT/Swing libraries will have to be fixed. All of these classes may not be needed to be fixed for FreeCol enabling, but this gives a general guideline of the classes that should be addressed.

I may have to modify the FreeCol source code to achieve the desired functionality. These improvements, if any will be submitted to the FreeCol code base.

If I'm able to accomplish the Hello World scenario. I will also try to accomplish the following scenarios as well. These are given in order of priority:

  1. Start new game, set map parameters, generate new map and quit without making any move
  2. Same as 1 plus making a few moves - for example move the caravel to the nearest land and save game
  3. Load saved game + build the first colony
  4. Ensure all features in colony-view are workable

All of the scenarios addressed including the Hello World scenario will be developed for the Ubuntu platform. I will automate the scenarios if it is possible to gain full functionality.

List of Deliverables

Development Schedule

Community Interaction

The harmony-demo-1 project will be developed with the involvement Harmony community. I will regularly update the mailing list and maintain visibility on the project's progress. I will try to get the whole Harmony community involved in design decisions regarding this project. I will submit code to the dev list whenever possible to get feedback and code reviews from the experts in this area.

Even at this stage I'm involved in the mailing lists and I'm getting feedback from the community on this project, http://www.mail-archive.com/dev@harmony.apache.org/msg13173.html

About Me

I'm Tharindu Mathew, a 3rd year student of the University of Moratuwa, Sri Lanka. I'm majoring in Computer Science and Engineering.

I have developed Java applications for the past 2 years. I just concluded my internship period in which I worked at WSO2 Inc. I was responsible for designing and developing WSF/Spring from scratch, which is a top level project in WSO2. It is hosted at http://wso2.org/projects/wsf/spring. I also worked on adding Hessian protocol support to Apache Synapse. https://issues.apache.org/jira/browse/SYNAPSE-259. I've also been involved in developing Eclipse plug ins. I'm familiar with SOA, Apache Axis2, Apache Synapse, Apache Tomcat, Maven2, Spring and XML technologies.



TharinduMathew/GSoC2008/harmony-demo-1 (last edited 2009-09-20 23:35:30 by localhost)