JWebAssembly/README.md

49 lines
1.4 KiB
Markdown
Raw Normal View History

2017-03-19 11:54:29 +01:00
JWebAssembly
======
2017-03-20 22:07:39 +01:00
[![Build Status](https://travis-ci.org/i-net-software/JWebAssembly.svg)](https://travis-ci.org/i-net-software/JWebAssembly)
2017-03-20 20:19:47 +01:00
[![License](https://img.shields.io/github/license/i-net-software/jwebassembly.svg)](https://github.com/i-net-software/jwebassembly/blob/master/LICENSE.txt)
2017-03-19 11:54:29 +01:00
2017-03-26 11:25:02 +02:00
JWebAssembly is a Java to [WebAssembly](http://webassembly.org/) Compiler. It uses Java class files as input.
2017-03-19 11:54:29 +01:00
Status of the project
----
2018-03-28 20:09:35 +02:00
### Finished Components
* Java byte code parser
* test framework
* Public API of the Compiler
### Partially Finished
* Binary format file writer (97/256)
* Text format file writer (97/256)
### Future Features
* In the future there should be a Gradle plugin to easy integrate it in the build process and a Eclipse build command to see compiler errors in in the IDE.
2017-03-19 11:54:29 +01:00
Required Java Version
----
JWebAssembly requires Java SE 8 or higher. It is tested with Java SE 8 on [travis-ci.org](https://travis-ci.org/i-net-software/jwebassembly).
2017-04-11 21:40:53 +02:00
## Usage
2017-03-19 11:54:29 +01:00
2017-04-11 21:40:53 +02:00
### Exporting functions
2017-04-14 11:06:57 +02:00
To export a Java function to make it accessible from JavaScript you need add the annotation org.webassembly.annotation.Export
2017-04-11 21:40:53 +02:00
```java
import org.webassembly.annotation.Export;
@Export
public static int add( int a, int b ) {
return a + b;
}
```
### Java Limits
2017-04-14 11:06:57 +02:00
In version 1 of WebAssembly you can only compile:
2017-04-11 21:40:53 +02:00
* static methods
* use the data types int, long float and double
2017-04-14 11:06:57 +02:00
### Alternatives
* [TeaVM](https://github.com/konsoletyper/teavm)