Mirror of Apache Netbeans HTML4J (Incubating)
Switch branches/tags
Clone or download
Latest commit 0064887 Sep 22, 2018
Permalink
Failed to load latest commit information.
boot-agent-test Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
boot-fx Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
boot-script Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
boot-truffle Bringing in state as of release-1.4 and merging with Apache licensing… Sep 8, 2017
boot Properly construct delegating visitor to make sure all annotations ar… Sep 2, 2018
context Removing unused imports Sep 18, 2018
equinox-agentclass-hook Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
geo Getting ready for next development iteration Dec 28, 2017
html4j-maven-plugin Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
json-tck Properly construct delegating visitor to make sure all annotations ar… Sep 2, 2018
json Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
ko-felix-test Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
ko-osgi-test Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
ko-ws-tyrus Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
ko4j Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
sound Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
src/main/javadoc updated links in documentation Aug 31, 2018
xhr4j Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018
.gitignore Testing the result of the Gradle build Apr 19, 2018
.travis.yml Turning on travis build on JDK11 Sep 22, 2018
COPYING Adding NOTICE, LICENSE and changing the file headers to standard Apac… Sep 3, 2017
DEPENDENCIES NETBEANS-98: Listing knockout.js with its MIT license as 3rd party co… Nov 4, 2017
DISCLAIMER Adding maven-remote-resources-plugin to generate DEPENDENCIES, NOTICE… Oct 12, 2017
LICENSE Adding NOTICE, LICENSE and changing the file headers to standard Apac… Sep 3, 2017
NOTICE Adjusting NOTICE as suggested by Bertrand Oct 12, 2017
README.md Adjusting to new Apache gitbox repository Nov 6, 2017
pom.xml Depend on JavaFX maven artifacts to build on JDK11 Sep 22, 2018

README.md

HTML/Java API

In need of cross platform, client side interaction between Java and JavaScript?

Build Status

The HTML/Java library provides basic building blocks as well as advanced high level concepts to make communication between JavaScript and Java as smooth as possible.

Read more in the latest javadoc documentation.

Portable Applications

Every browser widget Java API offers ways for communication between Java and JavaScript running in such widget. However, each of them is unique - e.g. one writes different code when communicating with JavaFX WebView, different one when communicating with Android WebView, yet another one when talking to iOS WebView.

The goal of HTML/Java API is to unify this communication. By providing simple and highly portable building blocks one can create sophisticated APIs (like UI bindings, charts, maps, canvas, or SnapSVG) that can be embedded into Swing or JavaFX applications, executed headlessly on a server or executed anywhere HTML/Java API was ported.

Various ports of this rendering pipeline were built including support for pure webkit desktop rendring, Android WebView and iOS WebView developed by DukeScript project.

This technology has also been adopted by some Java bytecode to JavaScript transpilers - for example TeaVM or Bck2Brwsr VM - as such you can also run the same Java application in a pluginless browser.

Porting of HTML/Java rendering pipeline is as easy as implementing Fn.Presenter interface and successfully passing the test compatibility kit.

Getting Started

The HTML/Java API is IDE and build tool neutral. It can be used with Ant, Maven or Gradle. It is easy to edit it with Eclipse, IntelliJ or NetBeans.

The most comprehensive getting started guide is available from the DukeScript project website.

Contributing

You can contribute to development of this library by forking its GitHub repository. Change, modify, test:

$ mvn clean install

and create a pull request, which may then be merged into the official Apache repository.

Full History

The origins of the code in this repository are older than its Apache existence. As such significant part of the history (before the code was donated to Apache) is kept in an independent repository. To fully understand the code you may want to merge the modern and ancient versions together:

$ git clone https://github.com/apache/incubator-netbeans-html4j.git html+java+both
$ cd html+java+both
$ git log boot/src/main/java/net/java/html/boot/BrowserBuilder.java

This gives you just few log entries including the initial checkin and change of the file headers to Apache. But then the magic comes:

$ git remote add emilian https://github.com/emilianbold/netbeans-html4j.git
$ git fetch emilian
$ git replace 408363d d029b8e

When you search the log, or use the blame tool, the full history is available:

$ git log boot/src/main/java/net/java/html/boot/BrowserBuilder.java
$ git blame boot/src/main/java/net/java/html/boot/BrowserBuilder.java

Many thanks to Emilian Bold who converted the ancient history to his Git repository and made the magic possible!