Skip to content
fakeivchenko edited this page Oct 9, 2026 · 13 revisions

lwjwae is a Java library that shows a web page in a native window. You write the interface in HTML, CSS, and JavaScript, and the logic in Java. The window uses the web engine that the operating system already has, so the application stays small and starts fast.

In this tutorial, you build a small notes application step by step. By the end, the application saves notes in Java, shows them on the page, draws its own title bar, exports notes through a native file dialog, keeps running in the system tray, and shows a notification when an export is done. Then you give it an icon and a name, build it as a native executable, and package it for Linux, Windows, and macOS with the lwjwae Gradle plugin.

The finished notes application on KDE Plasma and on Windows 11

Tutorial

Each page adds one feature to the notes application and ends with a link to the next one.

  1. Set up the project
  2. Open a window
  3. Call Java from the page
  4. Send events from Java to the page
  5. Draw your own title bar
  6. Export notes through a native dialog
  7. Keep the application in the tray
  8. Show notifications
  9. Give the application an icon and a name
  10. Build a native executable
  11. Package the application

Guides

Each guide shows one feature beyond the tutorial, with a small application that you can run.

Reference

  • Gradle plugin: what the plugin does, the short form of a build script, the page built with npm, the packages, signing, and the tasks.
  • Gradle plugin configuration: every setting of the lwjwae {} block, with its default.
  • README: the whole API, the modules, and the requirements of each platform.
  • Releases: the versions and what changed in each.
  • lwjwae-codecs: the JSON codecs for typed bindings and events.

Clone this wiki locally