Skip to content
/ JWM Public
forked from HumbleUI/JWM

Cross-platform window management and OS integration library for Java

License

Notifications You must be signed in to change notification settings

LouisCAD/JWM

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java Window Management library

Vision

JWM is a cross-platform Java window management and OS integration library.

JWM aims to expose an interface that abstracts over window creation, input handling and OS integration. It’s planned to support all the primary desktop platforms:

  • Windows
  • macOS
  • X11
  • Wayland

Primary goals:

  • Native JVM API
  • High-quality OS integration (indistinguashable from native apps)
  • Plays well with (but does not require) Skija

Motto: “Electron for JVM, without Chrome and JS”

Alternatives

Traditionally, Java UIs struggled with high-quality OS integration. JWM plans to bring it to modern standards by implementing those integrations from scratch in modern low-level OS-native APIs. Prior art:

AWT:

  • Bullet-proof, works everywhere
  • Event loop is two-threaded (lags in UI)
  • Dated font management, color management, dpi management
  • No vsync

JavaFX:

  • Fixed threading model
  • Performance is sometimes great, sometimes terrible
  • Even more limited fonts/color/graphics API
  • VSync is weird in multi-monitor case
  • No real extensibility

Winit:

  • Tried at JetBrains
  • Complicated event loop model (tries to unify desktop + web + mobile)

GLFW via LWJGL, SDL2:

  • Game-oriented
  • Bad window management
  • No OS integration
  • Create one window and go full-screen is the main use-case

Electron:

  • Seems great, will use as inspiration

Scope

TBD, but these are a good start:

Status

Proof of concept, do not use.

Repository URL:

https://packages.jetbrains.team/maven/p/jwm/maven
Platform groupId artifactId version
macOS Intel org.jetbrains.jwm jwm-macos-x64 version
macOS M1 org.jetbrains.jwm jwm-macos-arm64 version
Linux N/A N/A N/A
Windows N/A N/A N/A

Developing

Prerequisites:

Git, CMake, Ninja, C++ compiler, JDK 11+, $JAVA_HOME, Python 3.

Build:

./script/build.py

Run examples:

./script/run.py

Run examples without building (use version from the table above):

./script/run.py --jwm-version <version>

About

Cross-platform window management and OS integration library for Java

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 40.1%
  • C++ 27.6%
  • Java 12.4%
  • Objective-C++ 10.3%
  • Python 6.1%
  • CMake 1.8%
  • Hack 1.7%