'. '

TeaVM

From APIDesign

(Difference between revisions)
Jump to: navigation, search
Current revision (04:50, 28 June 2015) (edit) (undo)
(Getting Started with DukeScript and TeaVM)
 
(9 intermediate revisions not shown.)
Line 1: Line 1:
[[TeaVM]] is a [[bytecode]] to [[JavaScript]] translator written by Alexey Andreev: https://github.com/konsoletyper/teavm
[[TeaVM]] is a [[bytecode]] to [[JavaScript]] translator written by Alexey Andreev: https://github.com/konsoletyper/teavm
-
Alexey contacted [[I|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 [http://bits.netbeans.org/html+java/0.7.6/net/java/html/js/package-summary.html @JavaScriptBody] annotation and he did it!
+
Alexey contacted [[I|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 @{{HTML4J|net/java/html/js|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 execute them in variety of [[environment]]s (like [[FXBrwsr]], [[DlvkBrwsr]], [[HTML|NetBeans and Eclipse]], via [[Bck2Brwsr]] or [[TeaVM]]). No need to worry about proprietary [[API]] to talk to different [[VM]]s! Use [[DukeScript]] - it is the [[wikipedia:Lingua_franca|ligua franca]] all [[VM]]s understand (well, somebody needs to enhance [[GWT]] and convince the [[Doppio]] guys).
+
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 [[environment]]s (like [[FXBrwsr]], [[DlvkBrwsr]], [[HTML|NetBeans and Eclipse]], via [[Bck2Brwsr]] or [[TeaVM]]). No need to worry about proprietary [[API]] to talk to different [[VM]]s! Use [[DukeScript]] - it is the [[wikipedia:Lingua_franca|ligua franca]] all [[VM]]s understand (well, somebody needs to enhance [[GWT]] and convince the [[Doppio]] guys).
-
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]].
+
== Getting Started with [[DukeScript]] and [[TeaVM]] ==
-
Also now the competition between [[VM]]s 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'' executed by [[TeaVM]]: http://xelfi.cz/minesweeper/teavm/ and here is the one executed by [[Bck2Brwsr]]: http://xelfi.cz/minesweeper/bck2brwsr/ - the same [[HTML]] page, the same [[Java]] code - just different [[VM]]s (and yes, [[I]] should probably speed up the [[Bck2Brwsr]] start a bit).
+
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:
 +
 
 +
<source lang="bash">
 +
$ 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
 +
</source>
 +
 
 +
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]]:
 +
 
 +
<source lang="bash">
 +
$ mvn exec:java
 +
</source>
 +
 
 +
== Competition is [[Good]]! ==
 +
 
 +
Now the competition between [[VM]]s 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]] [[API]]s) 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 [[VM]]s (btw. [[I]] have speeded up the [[Bck2Brwsr]] start a bit; now it should be less than a second):
 +
* [http://source.apidesign.org/hg/html~demo/file/4dce5ea7e13a/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java MinesModel]
 +
* [http://source.apidesign.org/hg/html~demo/file/4dce5ea7e13a/minesweeper/src/main/webapp/pages/index.html HTML]
In any case, congratulation Alexey for your [[good]] work and thanks for sharing the [[common ground]]!
In any case, congratulation Alexey for your [[good]] work and thanks for sharing the [[common ground]]!

Current revision

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
buy