JOE - Building an OS into your Java application
Posted: Sat Apr 04, 2020 11:17 am
I would like to announce my OS project JOE. JOE is not a tradition or typical OS. It explores the relationships and boundaries between application, OS, virtual machine, and processor. It can be found at
https://github.com/joekoolade/JOE
JOE can run a Java program without an operating system by building the operating system into the program. This makes it easier to run, configure, and deploy a program onto any machine, real or virtual.
JOE is a process virtual machine that can run a Java applications without an operating system. It builds the OS into the program by virtualizing the OS and hardware. This removes the boundaries between the OS, hardware, user code, and virtual machine. The overhead and complexities in the user/supervisor crossing, program security, memory protection, virtual addressing, and the JNI library interface are replaced with simpler and more efficient mechanisms found in the Java language. JOE seamlessly blends those layers together by implementing them all in Java. This virtualized Java environment provides a secure, safe, cohesive, and consistent object oriented operation from application to hardware.
The main branch of the project is stable and runs on a i386 qemu virtual machine. The ia-32e-mode branch is actively being worked on and is not guaranteed to be stable. It also has working, but limited networking capabilities (IP/UDP, not fully integrated with Java library). JOE is not 100% Java compatible but will strive to be compatible as needed.
Some of the goals of JOE are
https://github.com/joekoolade/JOE
JOE can run a Java program without an operating system by building the operating system into the program. This makes it easier to run, configure, and deploy a program onto any machine, real or virtual.
JOE is a process virtual machine that can run a Java applications without an operating system. It builds the OS into the program by virtualizing the OS and hardware. This removes the boundaries between the OS, hardware, user code, and virtual machine. The overhead and complexities in the user/supervisor crossing, program security, memory protection, virtual addressing, and the JNI library interface are replaced with simpler and more efficient mechanisms found in the Java language. JOE seamlessly blends those layers together by implementing them all in Java. This virtualized Java environment provides a secure, safe, cohesive, and consistent object oriented operation from application to hardware.
The main branch of the project is stable and runs on a i386 qemu virtual machine. The ia-32e-mode branch is actively being worked on and is not guaranteed to be stable. It also has working, but limited networking capabilities (IP/UDP, not fully integrated with Java library). JOE is not 100% Java compatible but will strive to be compatible as needed.
Some of the goals of JOE are
- Make it easier to run a program on any machine
- Provide application safety, security, and protection using language as opposed to relying on the OS and processor hardware and capabilities
- Simplified toolchain; only tools needed are Java compiler and Java VM
- Application mobility
- Eliminate a need of a file system
- Reduced size of the deployment of an OS and applications