NetBeans Web Toolkit


According to the documentation the HTML/Java API is "an alternative to Swing and JavaFX for creating applications with a graphical user interface."

I'm going to first start by rebranding it to the NetBeans Web Toolkit (NBWT). People might have heard about Google Web Toolkit and I think it's a better parallel.

What's the NetBeans Web Toolkit good for? To write cross-platform web-like apps in a mix of Java for the 'backend' and plain-old HTML / CSS for the UI. And there's a Java-Javascript bridge to help you.

The HTML UI will generally be in a browser, but what's interesting for existing Java desktop apps (NetBeans Platform-based or not) is that the UI here could be a JavaFX embedded web view. This creates a migration path from the desktop to the browser while keeping existing code intact.

Here is the simplest demo app I could come up with: something that shows you the date.

The full source code is at

The HTML is very basic. You show the clock and you use Knockout bindings to make sure the clock gets updated:

<div data-bind="text: clock">Is this thing on?</div>
Next, with a @Model annotation I auto-generate a model for my clock, I instantiate it, bind it and start a timer to update the clock.

@Model(targetId = "", className = "ClockModel", properties = {
    @Property(name = "clock", type = String.class)
public class Clock {

    public static void setUp() {
        ClockModel model = new ClockModel();
        model.setClock("Please wait...");
        Timer timer = new Timer(true);
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                model.setClock(new Date().toString());
        }, 0, 1000);
and finally I just load the HTML and bootstrap my Java class with a simple call:
FXBrowsers.load(browser, Main.class.getResource("index.html"), Clock.class, "setUp");
Of course, to create the window there is some more scaffolding but that's the gist of it. You just need 3 Maven dependencies: And you have to remember to call the code generator: