Close
0%
0%

How to build a Novel JavaOS?

An operating system written in Java

Similar projects worth following
Do you need a flexible and secure OS? Then JavaOS is your choice. JavaOS is a project based on JX project. The architecture of this OS has three parts: kernel, interface and user land. The name of the kernel is jxcore. It is a microkernel. Above that is the Domain Zero. It is the interface between Java and the kernel. The userland is purely written in Java. It is a SDK for Java applications. The future work consists of a kernel written in Rust, and porting to other platform e.g. arm and RISC-V. Maybe we will add support to other programming languages like: Python and JavaScript. Are you interested in this project? Please, let me know in the comments. JavaOS is made for Scientific Researches, and the main goal is to build a lightweight distributed systems on network.

Source Code

kernel: https://github.com/sPyOpenSource/jcore

compiler: https://github.com/sPyOpenSource/compiler

os: https://github.com/sPyOpenSource/os

applications: https://github.com/sPyOpenSource/applications

jx-usenix.pdf

paper

Adobe Portable Document Format - 104.49 kB - 09/12/2025 at 08:35

Preview

ISOTest6.iso

demo cd

octet-stream - 8.07 MB - 09/11/2025 at 08:37

Download

  • CHANGELOG

    X. Wang02/21/2026 at 07:38 0 comments

    v1.16 XW 04-05-2022

    reorded: code

    v1.15 XW 04-02-2021
    reorded: source files
    updated: SDD

    v1.14 XW 14-08-2020
    cleaned: code

    v1.13 XW 07-08-2020
    fixed: cpu usage too high (issue #30)

    v1.12 XW 12-11-2019
    fixed: run.sh

    v1.11 XW 11-11-2019
    added: OS and testOS

    v1.10 XW 23-08-2019
    added: syscalls (issue #11)

    v1.9 XW 01-08-2019
    changed: init memory size

    v1.8 XW 30-07-2019
    fixed: printf (issue #8)
    fixed: missing zero_FastMemory.s file (issue #9)

    v1.7 XW 29-07-2019
    removed: unnecessary headers
    added: return line after printf

    v1.6 XW 28-07-2019
    changed: start point to AI/AI
    updated: Zero Java code
    improved: run.sh
    added: console out put at atomicvariable
    removed: something

    v1.5 XW 26-07-2019
    fixed: loads multiple times (issue #5)

    v1.4 XW 20-07-2019
    fixed: naming COPY TO DOMAINZERO

    v1.3 XW 18-07-2019
    removed: kernel.dep in makefile

    v1.2 XW 12-07-2019
    removed: jdk and zero
    moved: source code into src (issue #2)

    v1.1 XW 08-07-2019
    removed jx

    v1.0 XW 05-07-2019
    working

  • Bootlog

    X. Wang09/12/2025 at 08:32 0 comments

    Memory start=0x00c99800 end=0x1fff0000 size=523593728

    Block size: 1024
    Bitmap size (bytes): 63915
    Bitmap size (blocks): 63
    Number of blocks: 511322
    Free blocks: 511259 (99%)
    Current block: 63
    Allocated memory: 64512
    Available memory: 523529216
    init system
    IRQ 0 disabledIRQ 1 disabledIRQ 2 disabledIRQ 3 disabledIRQ 4 disabledIRQ 5 disabledIRQ 6 disabledIRQ 7 disabledIRQ 8 disabledIRQ 9 disabledIRQ 10 disabledIRQ 11 disabledIRQ 12 disabledIRQ 13 disabledIRQ 14 disabledIRQ 15 disabledfinished irq init
    finished system init
    init system
    IRQ 0 disabledIRQ 1 disabledIRQ 2 disabledIRQ 3 disabledIRQ 4 enabledIRQ 5 disabledIRQ 6 disabledIRQ 7 disabledIRQ 8 disabledIRQ 9 disabledIRQ 10 disabledIRQ 11 disabledIRQ 12 disabledIRQ 13 disabledIRQ 14 disabledIRQ 15 disabledfinished irq init
    OKatomicfn initatomicfn init completedinit threads systeminit threads system - profiler partinit threads system completedStarted DomainZero.

    call class constructor for java/lang/Class
    Terminate DomainZero initial thread.

    call class constructor for java/lang/Class

    Init running...
    !!ATTENTION!!                                      !!ATTENTION!!
    !!ATTENTION!!  No Security Manager is used         !!ATTENTION!!
    !!ATTENTION!!                                      !!ATTENTION!!
    Init finished.
    call class constructor for java/lang/Class
    call class constructor for jx/devices/pci/PCIClassCode
    call class constructor for jx/devices/pci/PCIVendorCode
    call class constructor for jx/devices/pci/PCIDeviceCode
    call class constructor for jx/devices/fb/PixelColor
    getmethods jx/fb/StartFBDevice -> 0x0196f9a0
    getmethods jx/devices/pci/PCIGod -> 0x0196fd70
    getmethods jx/keyboard/Main -> 0x01970a2c
    getmethods jx/wm/WindowManagerImpl -> 0x01971570
    call class constructor for jx/awt/JXToolkit
    call class constructor for jx/awt/peer/JXMenuThread
    call class constructor for jx/awt/peer/MenuHandler
    call class constructor for jx/awt/peer/FocusHandler
    call class constructor for jx/awt/peer/SlaveWindowHandler
    newInstance jx/awt/JXToolkit -> 0x01972350
    getmethods test/jx/awt/Main -> 0x01972d24
    MenuThread started.
    START : jx/fb/StartFBDevice
    INVOKE STATICargs[0]=FB
    args[1]=jx/devices/fb/emulation/EmulFBFinder
    args[2]=fb_emul.jll
    args[3]=279
    args[4]=null
    Trying class jx/devices/fb/emulation/EmulFBFinder in component fb_emul.jll
    DRIVER ARG: 279
    call class constructor for jx/devices/fb/emulation/EmulFBFinder
    newInstance jx/devices/fb/emulation/EmulFBFinder -> 0x01974994
    VESA: 1024x768, 2048 bytesPerLine, 16 bitsPerPixel
    init system
    IRQ 0 disabledIRQ 1 disabledIRQ 2 disabledIRQ 3 disabledIRQ 4 enabledIRQ 5 disabledIRQ 6 disabledIRQ 7 disabledIRQ 8 disabledIRQ 9 disabledIRQ 10 disabledIRQ 11 disabledIRQ 12 disabledIRQ 13 disabledIRQ 14 disabledIRQ 15 disabledfinished irq init
    return from fbemulation_opencall class constructor for jx/devices/fb/emulation/FBImpl
    START : jx/devices/pci/PCIGod
    INVOKE STATICDomain PCI speaking.
    Success reading PCI configuration port
    now checking pci bus
    capability bit set, but no capability list (uhh??)
    PCIAccess registered
    START : jx/keyboard/Main
    INVOKE STATICKeyboardImpl::KeyboardImpl()
        init keyboard
    KeyboardImpl.init()
    wrCommand :76
    ClearBuffer:
      OK.
    Reset:
      OK.
    ResetFinish: 
      OK.
    Keyboard reset ok.
    Detected PS/2 Mouse Port.
    PS/2 Mouse available: true
    Started IRQ handler.
      Thread   0x019793f4   stack=0x04badc00, stackTop=0x04bafc00
    wrCommand :77
      Thread   0x0197969c   stack=0x04bafc00, stackTop=0x04bb1c00
        keyboard initialized
    START : jx/wm/WindowManagerImpl
    INVOKE STATICStarting window manager...
    WDisplay::SetMode() 1024/768/CS_RGB16
    WBitmap::init(1024, 768, 2048)
    WFont::scanFonts()
    WBitmap::init(8, 8, -1)
    WBitmap::init(8, 8, -1)
    Window manager is now ready to accept requests.
    START : test/jx/awt/Main
    INVOKE STATICgetCurrentDomain (2)...

    Read more »

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates