I'll try to answer any questions. I have also gathered some questions at
the Jamiga2 project page, but they're not very technical.
Jamiga can simplified be said to consist of two things:
* The JVM, Java Virtual Machine. This handles execution of the compiled Java programs, the bytecode.
* Class libraries. The class library is what builds up Java. These are all the standard Java classes for handling lists, threading, file I/O and other standard stuff. Jamiga uses the GNU Classpath class libraries, and we're also looking in to using Oracle's OpenJDK.
What is a Java program?A Java program consist of class-files, files with bytecode instead of machine code. Class files can be run by issuing a command like
java HelloWorldThis will start a Java Virtual Machine process, that tries to find a class named HelloWorld.class with a main-method to run (much like C's main-function).
Java applications usually come packed in so called JAR-files. This is basically zip-archives that contain several class files. The aim is of course that these Jar-files can be double-clicked and started like any Amiga program.
So Java program does not have a single .exe-file -- rather they have class files run by the main Jamiga executable, "java". These class files are the same, no matter where they are run, be it AmigaOS 4, MorphOS, Aros, Windows or MacOS.
What does Jamiga's java.library do?The java.library and Jamiga's other libraries (javanio, javanet, etc) are only for internal use by Jamiga. No other programs should use them. All Jamiga stuff could easily reside in one big executable, but the library usage is consistent with how the GNU Classpath is done.
The java libraries (java.library and so on) contain code that "hooks" the class libraries to native Amiga stuff (so called native methods). So whenever you in java do:
java.io.File = new java.io.File("myfile.txt");a call is made to
IDOS->CreateFile(); which reside in javanio.library.
How does graphics in java work?GUI and graphics stuff is supported in the standard Java classes using what is called AWT (Abstract Window Toolkit). this contain classes for buttons and windows and such GUI stuff. There are also methods for primitives such as "draw me a line"-methods.
The current Jamiga AWT implementation uses GadTools and Intuition. We're currently looking at using MUI for this, since that is supported by all Amiga platforms.
There are also classes for OpenGL and sound stuff -- some of it is standard official JDK-stuff, and other is un-official. But basically its only a matter of writing native C code to create the necessary native methods.
What can Jamiga currently do?If one were to try and run any of the games you suggest, it should preferrably not run with a "ClassNotFoundException", or just plainly crash.
Currently Jamiga supports threading, some AWT/graphics stuff, file I/O and upcoming network stuff. What's missing feature wise is sound support, some graphics stuff (can't say exactly what atm) and other low level/internal stuff.
If these games only require Java 1.4, the aim is to have them running. If they require 3rd party libaries, there is a bit more work to do. But once we get Java 1.4 running, 3rd party libraries is as easy/complicated as porting other applications.
Perhaps not very good answers. Its rather hard to tell what will work, and how much work it will be to get things to work. But it should be possible to get things running without for instance sound support, and only create empty native methods.
But I doubt that they will run without adding more stuff to Jamiga.