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.
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);
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");
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());
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
- 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.
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
Indie
To be announced
For independent developers.
- Commercial application development
- Full browser API
- Commercial redistribution under license
- Maintenance and update options
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
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.
JWebView is a product in development; names, scope and availability may change. Chromium, Java and all other product names are trademarks of their respective owners. levlabs is not affiliated with them.