2023-03-06 06:58:24 -08:00
|
|
|
# TeaVM
|
|
|
|
|
2021-03-10 00:05:49 -08:00
|
|
|
|
2017-05-24 04:25:12 -07:00
|
|
|
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.teavm/teavm-maven-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.teavm/teavm-maven-plugin)
|
2021-03-22 04:51:40 -07:00
|
|
|
[![Download](https://teavm.org/maven/latestBadge.svg)](https://teavm.org/maven/_latest)
|
2017-05-24 04:26:13 -07:00
|
|
|
[![Gitter chat](https://img.shields.io/badge/gitter-join%20chat-green.svg)](https://gitter.im/teavm/Lobby)
|
2015-10-09 22:55:22 -07:00
|
|
|
|
2021-03-09 05:49:24 -08:00
|
|
|
See documentation at the [project web site](https://teavm.org/).
|
2013-12-18 04:58:49 -08:00
|
|
|
|
2017-09-28 04:48:48 -07:00
|
|
|
Useful links:
|
2014-10-06 05:16:39 -07:00
|
|
|
|
2021-03-09 05:49:24 -08:00
|
|
|
* [Getting started](https://teavm.org/docs/intro/getting-started.html)
|
|
|
|
* [Gallery](https://teavm.org/gallery.html)
|
2017-09-28 04:48:48 -07:00
|
|
|
* [Flavour source code repository](https://github.com/konsoletyper/teavm-flavour)
|
|
|
|
* [Site source code repository](https://github.com/konsoletyper/teavm-site)
|
2023-03-06 06:28:06 -08:00
|
|
|
* [Discussion on Google Groups](https://groups.google.com/forum/#!forum/teavm)
|
2014-10-06 05:16:39 -07:00
|
|
|
|
|
|
|
|
2023-03-06 06:58:24 -08:00
|
|
|
## Building TeaVM
|
2013-12-18 04:58:49 -08:00
|
|
|
|
2023-01-03 06:29:13 -08:00
|
|
|
Simply clone source code (`git clone https://github.com/konsoletyper/teavm.git`)
|
2023-02-14 02:43:39 -08:00
|
|
|
and run Gradle build (`./gradlew publishToMavenLocal` or `gradlew.bat publishToMavenLocal`).
|
2013-12-19 00:19:58 -08:00
|
|
|
|
2014-10-06 05:16:39 -07:00
|
|
|
|
2023-03-06 06:58:24 -08:00
|
|
|
### Useful Gradle tasks
|
|
|
|
|
|
|
|
* `:tools:classlib-comparison-gen:build` – build Java class library compatibility report.
|
|
|
|
result is available at: `tools/classlib-comparison-gen/build/jcl-support`
|
|
|
|
|
|
|
|
|
|
|
|
## Embedding TeaVM
|
2014-10-06 05:16:39 -07:00
|
|
|
|
2023-01-03 06:29:13 -08:00
|
|
|
If you are not satisfied with Maven, you can embed TeaVM in your program
|
|
|
|
or even create your own plugin for any build tool, like Ant or Gradle.
|
|
|
|
The starting point for you may be `org.teavm.tooling.TeaVMTool` class from `teavm-tooling` artifact.
|
|
|
|
You may want to go deeper and use `org.teavm.vm.TeaVM` from `teavm-core` artifact, learn how `TeaVMTool` initializes it.
|
|
|
|
To learn how to use `TeaVMTool` class itself, find its usages across project source code.
|
|
|
|
You most likely encounter Maven and IDEA plugins.
|
2017-02-19 05:59:46 -08:00
|
|
|
|
|
|
|
Please, notice that these APIs for embedding are still unstable and may change between versions.
|
2014-10-14 10:22:01 -07:00
|
|
|
|
2014-03-20 23:29:04 -07:00
|
|
|
|
2023-03-06 06:58:24 -08:00
|
|
|
## WebAssembly
|
2017-02-19 05:59:46 -08:00
|
|
|
|
2023-01-03 06:29:13 -08:00
|
|
|
WebAssembly support is in experimental status. It may lack major features available in JavaScript backend.
|
2023-03-06 06:28:06 -08:00
|
|
|
There's no documentation yet, and you should do many things by hands
|
2023-01-03 06:29:13 -08:00
|
|
|
(like embedding generated `wasm` file into your page, importing JavaScript objects, etc).
|
|
|
|
Look at [samples/benchmark](https://github.com/konsoletyper/teavm/blob/master/samples/benchmark/) module.
|
|
|
|
You should first examine `pom.xml` file to learn how to build `wasm` file from Java.
|
|
|
|
Then you may want to examine `index-teavm.html` and `index-teavm.js`
|
|
|
|
to learn how to embed WebAssembly into your web page.
|
2019-10-07 05:03:48 -07:00
|
|
|
|
|
|
|
|
2023-03-06 06:58:24 -08:00
|
|
|
## License
|
2019-10-07 05:03:48 -07:00
|
|
|
|
|
|
|
TeaVM is distributed under [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).
|
|
|
|
TeaVM does not rely on OpenJDK or code or other (L)GPL code.
|
2023-01-03 06:29:13 -08:00
|
|
|
TeaVM has its own reimplementation of Java class library, which is either implemented from scratch or
|
|
|
|
based on non-(L)GPL projects:
|
2019-10-07 05:03:48 -07:00
|
|
|
|
|
|
|
* [Apache Harmony](https://harmony.apache.org/) (Apache 2.0)
|
|
|
|
* [Joda-Time](https://github.com/JodaOrg/joda-time) (Apache 2.0)
|
|
|
|
* [jzlib](https://github.com/ymnk/jzlib) (BSD style license)
|
|
|
|
|
2023-01-03 06:29:13 -08:00
|
|
|
If you want to contribute code to implementation of Java class library,
|
2023-03-06 06:28:06 -08:00
|
|
|
please make sure it's not based on OpenJDK or other code licensed under (L)GPL.
|
2014-10-19 13:31:28 -07:00
|
|
|
|
|
|
|
|
2023-03-06 06:58:24 -08:00
|
|
|
## Feedback
|
2014-10-19 13:31:28 -07:00
|
|
|
|
2021-03-09 05:49:24 -08:00
|
|
|
More information is available at the official site: https://teavm.org.
|
2017-02-19 05:59:46 -08:00
|
|
|
|
2023-03-06 06:28:06 -08:00
|
|
|
Ask your questions by email: info@teavm.org. Also, you can report issues on a project's
|
2023-01-03 06:29:13 -08:00
|
|
|
[issue tracker](https://github.com/konsoletyper/teavm/issues).
|