JWebView by levlabs · In Development

Chromium for Java.

Embed Chromium in your Java applications with a comprehensive browser API. Control navigation, JavaScript, DOM, network requests, profiles, downloads, and more.

Schedule a demo Join Early Access

A Product Preview is a conversation about the product concept and the planned architecture. There is no demo yet.

The API at a glance.

Written against the API contract. Names and details may change.

Proposed API · Subject to change
EmbeddedPage.java

Idiomatic Java · draft spelling, not part of the documented API

WebViewConfiguration configuration =
    WebViewConfiguration.hardwareAccelerated()
        .licenseKey(System.getenv("JWEBVIEW_LICENSE"));

JWebView page = new JWebView(configuration);
page.navigation().loadUrl("https://example.com");

JFrame frame = new JFrame("My application");
frame.add(page);
frame.setSize(1100, 720);
frame.setVisible(true);

Snake Case · as in the current API draft

WebView_configuration configuration =
    WebView_configuration.hardware_accelerated()
        .license_key(System.getenv("JWEBVIEW_LICENSE"));

JWebView page = new JWebView(configuration);
page.navigation().load_url("https://example.com");

JFrame frame = new JFrame("My application");
frame.add(page);
frame.setSize(1100, 720);
frame.setVisible(true);
BrowserWindow.java

Idiomatic Java · draft spelling, not part of the documented API

// Tabs, address field and toolbar, one JWebView per tab.
WebViewConfiguration configuration =
    WebViewConfiguration.hardwareAccelerated()
        .licenseKey(System.getenv("JWEBVIEW_LICENSE"));

BrowserView view = new BrowserView(configuration);
view.displayMode(DisplayMode.MINIMAL_UI);
view.loadUrl("https://example.com");

Snake Case · as in the current API draft

// Tabs, address field and toolbar, one JWebView per tab.
WebView_configuration configuration =
    WebView_configuration.hardware_accelerated()
        .license_key(System.getenv("JWEBVIEW_LICENSE"));

Browser_view view = new Browser_view(configuration);
view.display_mode(Display_mode.MINIMAL_UI);
view.load_url("https://example.com");
Greeter.java

Idiomatic Java · draft spelling, not part of the documented API

public class Greeter
{
  @JsAccessible
  public String greet (String name)
  {
    return "Hello, " + name;
  }
}

// The page can now call app.greet("Ada").
page.mainFrame()
    .executeJavaScript("window")
    .putProperty("app", new Greeter());

Snake Case · as in the current API draft

public class Greeter
{
  @Js_accessible
  public String greet (String name)
  {
    return "Hello, " + name;
  }
}

// The page can now call app.greet("Ada").
page.main_frame()
    .execute_java_script("window")
    .put_property("app", new Greeter());
API style and naming All names are provisional.

A comprehensive browser API.

Planned capabilities. Nothing listed here is available yet.

Browser

  • Navigation and historyLoad URLs and HTML, walk the history, reload and stop.
  • Frames and DOMRead and change the loaded document, iframes included.
  • JavaScript executionCall JavaScript from Java and let the page call back.
  • Profiles and sessionsSeparate cookie, cache and password spaces, private sessions too.

Network

  • Request interceptionInspect and change requests, set headers.
  • Cookies and authenticationManage cookies and answer HTTP and proxy authentication.
  • Proxy configurationSend traffic through a proxy of your choice.
  • Custom schemesRegister your own URL schemes and answer them from Java.

Desktop

  • Downloads and dialogsChoose where files go, and handle or replace dialogs.
  • Printing and PDFPrint a page or write it to a PDF file.
  • DevToolsOpen the developer tools, or a remote inspector.
  • Hardware and off-screen renderingPaint with hardware acceleration or into a buffer.

How you can use JWebView.

Where an embedded browser tends to earn its place in a Java desktop application.

  • Hybrid desktop interfaces

    Build parts of the interface with web technology and let them talk to your Java code.

  • Enterprise desktop software

    Show internal portals and web applications inside the client instead of a separate browser.

  • Financial and insurance applications

    Bring web-based forms, documents and reports into an existing desktop workflow.

  • Industrial software

    Put a web-based operator or configuration view next to the tools that need it.

  • Developer tools

    Embed documentation, previews and web-based editors in a tool or IDE.

How it fits together.

Your Java process

Separate browser process

Java Application
JWebView API
Versioned IPC
CEF Host
Chromium
Flow from the Java application through the JWebView API and a versioned IPC boundary to the CEF host and Chromium.
  • Chromium runs in its own process; the JVM loads no CEF library.
  • The Java API and the host talk over a versioned IPC protocol (Thrift).
  • No dependency on the JetBrains Runtime.

A process boundary separates concerns. It does not by itself guarantee that a browser crash cannot affect the application, or that every failure recovers cleanly.

JWebView is in development.

We're building JWebView to make advanced Chromium integration easier to adopt and maintain in Java desktop applications, and we're speaking with developers and software vendors to prioritize the first release.

  • The architecture is decided: Chromium in its own process, a versioned protocol to the Java layer.
  • The Java API is drafted as a written contract.
  • There is no public build and no release date.

Target platforms: Windows x64 / ARM64, macOS Intel / Apple Silicon, Linux x64 / ARM64, with Java 17 or newer. None is declared verified yet.

Let's talk about your Java application.

Exploring embedded Chromium for an existing or upcoming Java desktop application? We'd like to understand your requirements.

Schedule a demo

In Development · No public release date announced

Simple licensing for Java developers.

Licensing options for open-source projects, independent developers and software teams.

Open-source projects

Free

For open-source applications. Proprietary applications require an Indie or Business licence.

  • Full browser API
  • Redistribution of the proprietary JWebView binary JAR
  • No time limit
  • JWebView itself stays proprietary; source code is not included
Tell us about your project

Indie

To be announced

For independent developers.

  • Commercial application development
  • Full browser API
  • Commercial redistribution under license
  • Maintenance and update options
Discuss Licensing

Business

Contact us

For companies building and distributing Java applications.

  • Full browser API
  • Commercial redistribution under license
  • Team and product licensing
  • Maintenance and support options
Schedule a demo

JWebView is in development. Licensing terms, pricing and availability will be announced closer to release.

Be first in line when early access opens.

Join the wait list. One email address, nothing else, and a note from us when there is something to try.

Stored on our own server, used only for this announcement.