Proposal for Commons ME Package for Java Micro Edition

(0) Rationale

Java on small devices, especially mobile phones, is a very rapidly growing area. Open Source participation in this area has been relatively small, owing to code signing and restricted permissions hurdles put in place by manufacturers and operators. In addition, many development tools and debugging environments have been Windows only, restricting the available pool of developers. However, the recent open sourcing by Sun of the JavaME codebase (formerly J2ME) as phoneME, the development of the Sun WTK for Linux, and work by Google on their Android platform are starting to make open source participation more attractive.

Because of historically low levels of open source participation in this area, there is a strong need for many basic tools and helper libraries. Many developers are currently re-inventing the wheel every time, and not always making it round... Some common, open source libraries could allow greatly improved productivity amongst JavaME programmers, and possibly help build a community around wider open source participation in this JavaME arena.

There are currently a few open source tools and libraries for JavaME development, but none covering a commons-style area. These include:

(1) Scope of the Package

This proposal is to create a new apache commons component to provide "missing" JavaME functionality (functionality present in JSE, desired for JavaME but not present), and JavaME targetted helper components. All of these will follow Apache quality standards and development practices. By being hosted in Apache Commons, it will hopefully gather the required developer and user community, and evolve into a must-have component for Jave micro edition developers.

Initially, only CLDC 1.1 and MIDP 2.0 will be targetted, but the project will expand to cover newer JavaME profiles as developer interest for them justifies it.

Another part of the project will be to tweak existing commons components to work on the JavaME environment. Before starting any porting, the original commons component team will be contacted to discuss the best area for this work to take place. That work could either be in a svn branch of the original project, or in the ports area of the commons-me svn tree. Once porting is complete, if the work was in the commons-me tree, then the original project will be re-contacted to discuss re-integration of the changes.

(1.5) Interaction With Other Packages

me relies on standard Java Micro Edition APIs for development and deployment. As such, the Sun WTK (Wireless Toolkit) is required, to provide JSE compatible implementations of the JavaME API. This may be freely downloaded from Sun.

For unit testing, the JUnit unit testing framework for developing and executing unit tests is required, but this is of interest only to developers of the component.

The standard build and distribution process only need the standard ant tasks, as it is expected that end-users will pre-verify the classes as part of their standard JavaME application build process, and so standard Java 1.1 classes will normally be all that is required.

However, to allow pre-verified classes and jars to be built, for the few special cases that require them, both Antenna and SvnAnt are required by the pre-verified jar task. If you do not require pre-verified classes (and most users do not), then these two libraries are not needed.

No external configuration files are utilized.

(2) Initial Source of the Package

The original Java classes are created from scratch based on some JavaME work done and entirely owned by Nick Burch.

The proposed package name for the new component is org.apache.commons.me.

(3) Required Apache Commons Resources

(4) Initial Committers

The initial committers on the me component shall be: