'. '

TeaVM

From APIDesign

Revision as of 04:50, 28 June 2015 by JaroslavTulach (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

TeaVM is a bytecode to JavaScript translator written by Alexey Andreev: https://github.com/konsoletyper/teavm

Alexey contacted me (as the author of Bck2Brwsr) and we were seeking for a way to cooperate. I suggested Alexey to extend his TeaVM to understand DukeScript's @JavaScriptBody annotation and he did it!

That is amazing! Now we have a common ground - a way to write Java libraries that talk to JavaScript and can execute them in a variety of environments (like FXBrwsr, DlvkBrwsr, NetBeans and Eclipse, via Bck2Brwsr or TeaVM). No need to worry about proprietary API to talk to different VMs! Use DukeScript - it is the ligua franca all VMs understand (well, somebody needs to enhance GWT and convince the Doppio guys).

Getting Started with DukeScript and TeaVM

Once your application is ready, you can then decide how you want to deploy it. Whether you want more feature rich Bck2Brwsr, or lightweight (but not as complete) TeaVM. The best way to get started is currently to use the MineSweeper application and modify it to your needs:

$ hg clone http://source.apidesign.org/hg/html~demo/
$ cd html~demo/
$ hg up -C b157a20a6945 # version b157a20a6945 is known to work
$ mvn clean install -DskipTests
$ cd minesweeper/
$ mvn -Pteabrwsr clean package bck2brwsr:show

And you can repeat the last step once you modify the HTML or Java code. And don't forget - the other way to execute the same application is FXBrwsr:

$ mvn exec:java

Competition is Good!

Now the competition between VMs can start! We have a way to write a sample application once and then execute it and compare the results. For example here is a minesweeper (written with DukeScript APIs) executed by TeaVM: http://xelfi.cz/minesweeper/teavm/ and here is one executed by Bck2Brwsr: http://xelfi.cz/minesweeper/bck2brwsr/ - the same HTML page, the same Java code - just different VMs (btw. I have speeded up the Bck2Brwsr start a bit; now it should be less than a second):

In any case, congratulation Alexey for your good work and thanks for sharing the common ground!

Personal tools