Java on Everything! JOE gets back to basics with no OS
Java on Everything (JOE) implements an object-oriented design that tosses the entire operating system. What benefits are there to saying sayonara to the OS? This virtualized Java environment has some tricks to make applications more secure and better designed.
Ready for a piping hot cup of JOE – Java on Everything? Java on Everything holds the key to how to run Java on just about anything. No OS? No problem. JOE works without an operating system. What are the advantages to ditching the OS?
Created by Joseph Kulig (also known as Joe Koolade – perhaps a long lost brother of the mascot), Java on Everything is a virtualization tool that implements an object-oriented view. Why did Kulig create JOE? On GitHub, he cites a quote from Dan Ingalls – a pioneer of object-oriented computing programming:
An operating system is a collections of things that don’t fit into a language. There should not be one.
By implementing the virtualized Java environment, you can simply provide objects that create operating systems services. There is no need to have an entire operating system and without it, developers can focus on the essential parts of an application.
On GitHub, Kulig lists three main advantages of tossing the OS into the recycling bin. JOE makes it easier to design applications, it increases application security, provides automatic portability and increased application speed, and reduces the total size of the system.
Boosted security: Without an OS, you also forgo the potential security downfalls that the operating system already comes with. If a system size is small, its security is higher as there is less for a potential hacker to work with. JOE keeps the target small, so there’s less surface area to attack.
Easier application design: Getting rid of the OS eliminates one of the most complex constraints that a developer has to keep in mind while creating software. It also frees up the developer from having to continuously maintain it, and thus prevents potential errors.
Increased speed: Firing the OS means more speed for your applications. How does this happen? “No paging hardware is needed or expected. Unix programs are linked and compiled to run from an address space starting from zero. That is what virtual memory and paging hardware provide. Java does not need that ability. Not needing paging and virtual memory saves on program context switching time.” Anything that helps save time is a tool worth bookmarking in our humble opinion.
Automatic portability: Kulig writes on GitHub that “the ability to run your application relies on if the appropriate compilers and hardware objects are implemented to run that application on a specific hardware platform. That means for x86 platform compiler and hardware objects for the APIC, cpu, interrupt vectors and handling, timers, ethernet cards, and so on need to be implemented to support running applications on a stock x86 platform.”
Reduced system size: This advantage comes as no surprise. Without the heavy weight of an entire operating system, the system size is lighter. According to GitHub, the final product is a tiny image that hovers around only 19MB! Kulig states that he is confident that this number can get even lower. How low can we go?
Ready to throw out your OS?
If JOE is right for you, then you’ll need Ant to compile and build the files and images. All of JOE is written in Java and the development tools. Therefore, it runs on anything that supports the Java runtime environment.
As always, find out more specific instructions on how to get started on GitHub. Prepare to put Java on everything and say good-bye to your heavy OS.