The net.java.html.json has been primarily designed to run in a browser. However almost every application in a browser tries to communicate with some server. The application logic is then split into two distinct systems - yet certain parts of the code need to run on both sides (think about validation - prevalidate on client, re-validate on server, before database is modified). Can we use the same code in browser as well as on server?
A new module has been donated to Jersey version 2.1. Just include it on your server own application path as
<dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>html-json</artifactId> <version>2.1</version> <!-- once released, version 2.6 will have new, updated bits --> <scope>runtime</scope> </dependency>
$ hg clone https://hg.java.net/hg/html~demo $ cd html~demo/chat/server/ $ mvn process-classes exec:java
The (Jersey and Grizzly based) server starts on port 8080. Just open your Chrome browser (there are some problems with Firefox and my use of XHR's POST method) and point it to http://localhost:8080. In a few seconds, you should see a chat application running via the Bck2Brwsr VM. The message is represented by a Message class and this class is the same on the server as well as in the browser. It is transmitted in a JSON format, but it can also contain additional (for example validation or presentation) logic.