In 2024, should we use the Java programming language on the Amiga?
But first, what's an Amiga?
The Amiga computer was a pioneering and innovative computer that emerged in the late 1980s. What set the Amiga apart from its contemporaries was its advanced multimedia capabilities, which were ahead of their time.
The Amiga featured custom graphics and sound chips that allowed for impressive graphics, animation, and audio capabilities, making it a favorite among early multimedia enthusiasts, graphic designers, and video game developers.
One of the key strengths of the Amiga was and still is its multitasking operating system, called AmigaOS. It allows users to run multiple programs simultaneously—a feature that was very rare in personal computers at the time. Combined with its powerful hardware, it made the Amiga a versatile and capable computer.
Although the Amiga's popularity declined in the 1990s, its legacy lives on through the continued enthusiasm of its dedicated fans and the impact it had on the development of multimedia technologies.
Now, what is Java?
Java is a complete and versatile programming language used to develop a wide variety of software applications. It was first released by Sun Microsystems in 1995 and has since become one of the most popular programming languages in the world.
One of Java's key features is its "write once, run anywhere" mantra, which means that Java programs can be developed on one platform and run on any other platform with a Java Virtual Machine (JVM). This portability makes Java an attractive choice for developers working in diverse environments. Java is known for its simplicity and readability, making it accessible to beginners while still providing advanced features for seasoned developers.
Finally, why consider Java on the Amiga?
Unfortunately, there are not only advantages when programming on/for the Amiga. Since its beginning, Amiga programming involved using the C and 68000 assembly languages. This pair wasn't initially perceived as a problem but tends to be challenging for novice programmers.
This problem still exists today. If you want to write an application that runs concurrently with other system applications, you'll need to use multiple system's APIs with a "C"-like interface.
To create an application with a graphical user interface or that makes use of many system resources, you will need to write a lot of "boiler plate" code. That's in comparison to newer operating systems or languages. This could be overwhelming to many developers. This could lead to many unnecessary bugs.
How potentially useful could Java be to the Amiga?
Java offers the potential to bring newcomers to the Amiga. Java would help them by lowering the barrier of entry. The Java syntax is designed to be easy to read and understand, making it accessible to beginners. Java also benefits from a plethora of learning resources: many books, online forums, and courses. It has a large and active community of developers who are willing to help beginners.
Java comes with a comprehensive standard library that provides built-in functionality for common tasks like input/output operations, data manipulation, networking, and user interfaces. Beginners or experienced developers can leverage these libraries without worrying about Amiga peculiarity or having to reinvent the wheel.
Java might also appeal to experienced programmers considering the Amiga platform. These developers, strangers to the Amiga but not to Java, could come from various industries, including game development.
Java would be beneficial for the Amiga, which has a unique operating system and architecture but few developers. The continual development of applications is crucial for maintaining user engagement and ensuring the vitality of the computer.
Why isn't Java already popular on the Amiga?
Since Java gained popularity after the decline of the Amiga as a commercially viable computer, no official Java port was ever developed by Sun or another company. Two Amiga companies did announce their Java port in 1997 as commercial products. These were Merapi from Haage-Partner and MOca from Finale Development. Another company, Nordic Global, did announce its port, Daytona, in early 1999. None of which were ever commercialized.
Since then, a few open-source JVMs and compilers have tried to make their way to the Amiga, with various levels of success.
Here's a list of all known working implementations available as today, 24/05/05, followed by a short description:
JVM Name | Latest Version | Supported SDK | JIT? | Minimum Requierements | Maintained? |
---|---|---|---|---|---|
Kaffe | 1.0.7 | 1.4/1.5 | Yes | AmigaOS2 | No |
JAmiga | 0.0.5 | 1.4.1 | Maybe | AmigaOS3 | No |
JAmiga2 (JamVM) | 1.3 | OpenJDK8 | Almost | AmigaOS4 | Yes |
JavaGrinder | 20230919 | Unknown | No | AmigaOS1 | Yes |
The projects KoFFIE, P'Jami, and AmJay are not included in the list because we couldn't find no information, source code, or functional binaries. (If anyone knows anything, please contact us at info@ptidej.net!)
Kaffe, first released in 1996, was the original open-source Java implementation. Its development stopped in August 2011 with version "1.1.10-pre". It comes with a subset of the Java Platform, Standard Edition (Java SE), Java API, and provide a Java Runtime Environment.
Kaffe is a lean and portable virtual machine. When compared to the reference implementation of the JVM written by Sun Microsystems, Kaffe is significantly smaller. This smaller size makes it a good candidate to use on the Amiga's limited resources.
JAmiga was a project started from a clean slate. It was developed directly from the JVM documentation provided by Sun Microsystems. It is not a port of any other existing JVM.
JAmiga was a research project by its authors, Peter Werno, and some other contributors. They wanted to learn the inner working of Java. Thus, they decided to write a VM. They chose to write it for AmigaOS because of the lack of a decent JVM for it at the time (2003).
JAmiga2 continues the work of JAmiga but the author, Joakim Nordström, decided to replace the original JVM with a port of JamVM, which was required to use the newer Java Development Kits.
JamVM is an open-source JVM developed to be extremely small compared with other VMs while conforming to the JVM specification version 2.
JAmiga2/JamVM can be configured to use the GNU Classpath or the OpenJDK Java class library and recent versions support object finalization, Soft/Weak/Phantom References, the Java Native Interface (JNI), and the Reflection API.
Java Grinder, by Michael Kohn and some other contributors, is a tool that gives the ability to write programs in Java to run natively on microcontrollers, game consoles, and computers.
Java Grinder is not a JVM, but instead translates byte-code from Java .class
files into native assembly code much like a JIT or an "ahead of time" compiler (AOT compiler). On the game console and computer ports, there are Java APIs to directly manipulate the graphic and sound chips.
On the Amiga, Java Grinder is currently setup to interact with the chipset only. Java Grinder will freeze the operating system operation, which can be useful to write games or demos but makes impossible to write multitasking applications that talk with the operating system APIs.
Part 2 will explore the usability of the current Java implementations on an average Amiga system. It will present some simple demonstrations and speed benchmarking results.
Stay tuned!