Bck2BrwsrJavadoc
From APIDesign
Line 1: | Line 1: | ||
- | + | The goal of [[Bck2Brwsr]] project is to create small Java virtual machine capable to boot fast in modern browsers (even without any Java plugin installed). | |
+ | |||
+ | <h3>Build Your Own Virtual Machine!</h3> | ||
+ | |||
+ | Classes to perform [http://hudson.apidesign.org/hudson/job/bck2brwsr.javadoc/lastSuccessfulBuild/artifact/rt/vm/target/site/apidocs/index.html ahead-of-time compilation/transpiling] of any JVM bytecode classes to JavaScript. | ||
+ | |||
+ | <h3>JDK Core Libraries Emulation</h3> | ||
+ | |||
+ | The <b>Bck2Brwsr</b> VM emulates subset of <b>JDK7</b> class libraries called [http://hudson.apidesign.org/hudson/job/bck2brwsr.javadoc/lastSuccessfulBuild/artifact/rt/emul/compact/target/site/apidocs/index.html bck2brwsr compact profile]. The <b>Bck2Brwsr</b> VM can however run on even smaller subset of classes called [http://hudson.apidesign.org/hudson/job/bck2brwsr.javadoc/lastSuccessfulBuild/artifact/rt/emul/mini/target/site/apidocs/index.html bck2brwsr mini profile]. | ||
+ | |||
+ | To implement native methods these libraries may use [http://hudson.apidesign.org/hudson/job/bck2brwsr.javadoc/lastSuccessfulBuild/artifact/rt/core/target/site/apidocs/index.html JavaScriptBody & co.] annotations that allow direct communication with the JavaScript environment from Java. Btw. [http://hudson.apidesign.org/hudson/job/bck2brwsr.javadoc/lastSuccessfulBuild/artifact/rt/core/target/site/apidocs/index.html these annotations] are [[Bck2Brwsr]] specific - there are however general annotations (work on <b>HotSpot</b>, [[Bck2Brwsr]], [[TeaVM]] and other VMs) which one can use to write own libraries that talk to JavaScript - see [https://bits.netbeans.org/html+java/1.7/net/java/html/js/package-summary.html HTML for Java] APIs. | ||
+ | |||
+ | Support for reading ZIP files has been moved into [http://hudson.apidesign.org/hudson/job/bck2brwsr.javadoc/lastSuccessfulBuild/artifact/rt/emul/zip/target/site/apidocs/index.html separate library]. | ||
+ | |||
+ | <h3>Launching & Testing</h3> | ||
+ | |||
+ | The testing framework of <b>bck2brwsr</b> is build on top of [http://testng.org TestNG] and enhances it with [http://hudson.apidesign.org/hudson/job/bck2brwsr.javadoc/lastSuccessfulBuild/artifact/rt/vmtest/target/site/apidocs/index.html special support API]. | ||
+ | <p> | ||
+ | To launch a [[Bck2brwsr]] application one can use generic [http://hudson.apidesign.org/hudson/job/bck2brwsr.javadoc/lastSuccessfulBuild/artifact/launcher/api/target/site/apidocs/index.html Launcher API]. | ||
+ | |||
+ | <h3>Accessing HTML</h3> | ||
+ | |||
+ | Use [[Apache]] [http://bits.netbeans.org/html+java/1.7/net/java/html/json/package-summary.html MVVM library] or define your own library APIs (around existing JavaScript frameworks) using [http://bits.netbeans.org/html+java/1.7/net/java/html/js/package-summary.html @JavaScriptBody & co.] annotations. |
Revision as of 06:09, 25 May 2020
The goal of Bck2Brwsr project is to create small Java virtual machine capable to boot fast in modern browsers (even without any Java plugin installed).
Contents |
Build Your Own Virtual Machine!
Classes to perform ahead-of-time compilation/transpiling of any JVM bytecode classes to JavaScript.
JDK Core Libraries Emulation
The Bck2Brwsr VM emulates subset of JDK7 class libraries called bck2brwsr compact profile. The Bck2Brwsr VM can however run on even smaller subset of classes called bck2brwsr mini profile.
To implement native methods these libraries may use JavaScriptBody & co. annotations that allow direct communication with the JavaScript environment from Java. Btw. these annotations are Bck2Brwsr specific - there are however general annotations (work on HotSpot, Bck2Brwsr, TeaVM and other VMs) which one can use to write own libraries that talk to JavaScript - see HTML for Java APIs.
Support for reading ZIP files has been moved into separate library.
Launching & Testing
The testing framework of bck2brwsr is build on top of TestNG and enhances it with special support API.
To launch a Bck2brwsr application one can use generic Launcher API.