Synopsis:With Java support, AmigaOS users can benefit from a plethora of applications and helpful technologies. Apart from desktop application and industry server software, Java also has a vast amount of third party libraries, which allows us to integrate existing AmigaOS applications with many of todays common format and API's, with Java libraries available for Word/Excel import/export, web services such as Twitter, Google Maps and much more.

With the Java virtual machine we not only get Java but also other programming languages, such as Scala (not to be confused with Amiga's Scala multimedia suite), and Groovy. With Java on AmigaOS, 9 million developers will have a new platform to target!

Milestone 1This bounty is for milestone 1 of Jamiga2. There are currently three milestones planned. Milestone 1 covers the basic functionality of a working Java implementation, which also offers some novel applications to AmigaOS. Milestone 2 and 3, will offer even more in terms of user gain, with GUI and graphics capabilities, and applet support.

Background informationBeing able to run Java applications requires a Java Virtual Machine (JVM) , and a class library. The JVM is responsible for executing the Java code (bytecode), and the class library contain standard functionality such as basic list and string handling and more advanced functions for sorting and other common tasks. To communicate with the host operating system, the Java Native Interface (JNI) is used. This connects the JVM to the host operating system, for access to file I/O, OS threads, networking, GUI and such things.

What does milestone 1 cover?This bounty is fulfilled when these criterions are met:

1. a JVM able to run Java 1.5 classes on AmigaOS 4
2. port of the GNU Classpath libraries (current version is 0.99),
3. including the JNI for AmigaOS supporting:
a) the minimum needed to run Java applications (i.e. threads, file I/O, etc)
b) network support

The JVMThe chosen JVM is JamVM. It will be able to execute Java 1.5 classes, and is a complete port of JamVM. JamVM has a JIT interpreter, but the bounty does not cover this, the focus is not speed in this milestone, but rather full functionality coverage and stability.
The classpath librariesThe GNU Classpath libraries delivered will be "java-io" and "java-nio" for I/O, "java-lang" mostly covering math functions, "java-net" for network support, and "java-util" for miscellaneous utility functions. Comparing with a complete GNU Classpath installation, the missing libraries are for graphics (i.e. AWT and Swing, "libawt", "libXXXpeer") and audio support ("libalsa", etc). These will be included in forthcoming milestones.

When is milestone 1 complete?Milestone 1 is completed when the Mauve test suite can be run with results matching a JamVM/GNU Classpath installation on a supported platform, e.g. Linux or Windows, excluding what is not part of milestone 1, as defined above. Test to pass include: java.util, java.nio, java.net, parts of java.security, java.beans, java.text, java.lang, java.math, java.io. Notably excluding java.awt and javax.*.

What can I, the user, actually do with Jamiga when milestone 1 is done?The proof that the milestone's criterions have been met consists of a few runnable Java console applications, based on open source modules. The aim is not to write entire new applications, but rather to use existing applications or being able to use available frameworks in order to quickly get useful applications. Most existing Java desktop applications use a GUI, and will therefore not be able to run with milestone 1 requirements. Console applications will however work.

Example of applications that will be possible:

Telnet/SSH clientA basic very simple Telnet/SSH client will effectively demonstrate the implementation of the network support.

Simple Twitter clientUsing third party library for Twitter connection, a simple console application for updating status should be feasible.

As progress develops, this list will be updated with more entries.

For more information on possible applications look at the Jamiga blog.

What don't I get?

Support for graphical applications, sound or java applets is not part of milestone 1.

In milestone 1, focus is not on speed or optimization. The supported console applications will of course be able to run at a decent speed. JamVM has a JIT-interpreter, but focus will not lie on enabling this feature.

Support for other Amiga-like operating systems such as MorphOS or Aros is not included in the bounty. The work done should however be easily ported, since the solution will use AmigaOS API's.

How will milestone 1 be finished?The JAmiga2 effort will be continued in order to meet the criterions. Work will focus on tying together the JamVM virtual machine, and continue implementation of the GNU Classpath libraries. As of this date (10 nov, 2012), threads can be started, a few issues are left concerning signal handling (i.e. halting the JVM with Ctrl-C), file and console I/O is functioning, and network support is being worked on with some issues probably involving the signaling issues.

The deadline of june 15, 2013 is set rather generously. My hope is that it won't take until then, but it is much dependent on external factors, mostly involving issues with the lack of hours per day.

Where can I get progress reports?The JAmiga2 blog will be continuously updated on the progress. You can also follow my Twitter feed, where I occasionally tweet on both Jamiga2 issues as well as interesting Java tidbits.