mirror of
https://github.com/i-net-software/JWebAssembly.git
synced 2025-03-15 02:44:47 +01:00
JWebAssembly
JWebAssembly is a Java to WebAssembly compiler. It uses Java class files as input. That it can compile any language that compile to Java bytecode. As output it generates the binary format (.wasm file) or the text format (.wat file).
Status of the project
Finished Components
- Java byte code parser
- test framework
- Public API of the Compiler
Partially Finished
- Binary format file writer (134 of 201 byte code instructions)
- Text format file writer (134 of 201 byte code instructions)
Open Features
- Exception handling - required the next version of WebAssembly
- Multiple threads - required the next version of WebAssembly
- Memory Management - required the next version of WebAssembly
- Gradle plugin to easy integrate it in the build process
- Eclipse build command to see compiler errors in in the IDE.
Required Java Version
JWebAssembly requires Java SE 8 or higher. It is tested with Java SE 8 on travis-ci.org.
Usage
Exporting functions
To export a Java function to make it accessible from JavaScript you need add the annotation org.webassembly.annotation.Export
import org.webassembly.annotation.Export;
@Export
public static int add( int a, int b ) {
return a + b;
}
Java Limits
In version 1 of WebAssembly you can only compile:
- static methods
- use the data types int, long float and double
Alternatives
For Tool Developer
If you want to develop some tools like plugins for a build system or an IDE, then you need
- to include the full contents of the packages de.inetsoftware.jwebassembly and de.inetsoftware.classparser and its subpackages.
- Create an instance of de.inetsoftware.jwebassembly.JWebAssembly class and use its API.
Description
Languages
Java
99.6%
JavaScript
0.4%