PushMode - HTML streaming for Java

PushMode is a server-side Java library that streams web app's HTML output down to the browser while user's actions are streamed back to the server. The only code the browser ever sees is a tiny JavaScript file provided by PushMode. Application effectively runs all on the server, but interactivity is almost the same as if it were running in the browser.

This core streaming capability is then combined with Hookless reactive programming to provide a highly productive platform for development of low-cost and yet fully interactive, high-quality web apps.

Why?

Good library is not so much about the features you can use but rather about the headaches you can forget. Here's a short list of common app development problems that are obsoleted by PushMode.

Download

Get PushMode from Maven Central:

Tool
<dependency>
    <groupId>com.machinezoo.pushmode</groupId>
    <artifactId>pushmode</artifactId>
    <version>0.7.0</version>
</dependency>

Or clone sources from GitHub or Bitbucket. Don't forget to configure your build for Java 8+. Sources and binaries are distributed under Apache License 2.0.

Status

PushMode is still in development. Important APIs may change without warning.

PackageClassConceptAPIDocsTests
ElementIdIndexevolvingexperimentalnonenone
PageExecutorstableevolvingobsoletenone
PageFrameevolvingtemporarynonenone
PagePoolevolvingexperimentalnonenone
PollServletobsoletetemporarynonenone
PushPagestableevolvingobsoletenone
PushScriptServletevolvingexperimentalnonenone
SubmitServletobsoletetemporarynonenone
binding*experimentalinitialnonenone
domDomAttributestablestablecommentsnone
domDomAttributesstableevolvingincompletenone
domDomBindingexperimentalinitialnonenone
domDomContainerstablestablejavadocnone
domDomContentstablestablejavadocnone
domDomElementstablemostly stableincompletenone
domDomEventexperimentalinitialnonenone
domDomFormatterstableevolvingcommentsnone
domDomFragmentstablestableincompletenone
domDomListenerexperimentalinitialnonenone
domDomTextstablestablejavadocnone
domHtmlstablestablejavadocnone
domSvgstablestablejavadocnone
events*experimentalinitialnonenone
Development status by class

Classes that are not even mentioned in the table are all experimental.

Contribute

PushMode is being developed by Robert Važan. If you have any suggestions, including requests for documentation, report an issue (GitHub, Bitbucket) or submit a pull request (GitHub, Bitbucket). You can reach the author via email .