Compiles Java bytecode to JavaScript, WebAssembly, and C for running Java applications in web browsers and other environments.
TeaVM is a compiler that transforms Java bytecode into JavaScript, WebAssembly, and C, allowing Java applications to run in web browsers and other environments without a Java Virtual Machine. It solves the problem of bringing Java's robust ecosystem to web platforms by providing efficient compilation and a standalone class library implementation. This enables developers to write once in Java and deploy across multiple targets, including modern web applications.
Java developers who need to run Java applications in web browsers or other non-JVM environments, and teams looking to leverage existing Java codebases for web deployment without rewriting in JavaScript.
Developers choose TeaVM for its ability to compile Java to efficient web-ready code while maintaining license compatibility and avoiding GPL dependencies. Its standalone class library and integration with popular build tools like Maven and Gradle provide a seamless workflow for cross-platform Java development.
Compiles Java bytecode to JavaScript, WebAssembly and C
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
TeaVM avoids GPL dependencies by reimplementing the Java class library from scratch or using Apache-licensed code like Apache Harmony, ensuring safe use in commercial projects.
It compiles Java bytecode to JavaScript, WebAssembly, and C, allowing deployment in web browsers and other non-JVM environments without code rewrites.
With provided Maven and Gradle plugins, TeaVM integrates seamlessly into standard Java development workflows, as noted in the README's build instructions.
Its independent implementation of Java classes reduces reliance on the JVM, simplifying cross-platform deployment and avoiding licensing issues.
The README explicitly states that APIs for embedding TeaVM in custom programs are unstable and may change between versions, risking integration breakage.
TeaVM's reimplementation of the class library may not cover all Java SE features or third-party libraries, potentially causing compatibility issues with complex codebases.
Compilation to JavaScript or WebAssembly can introduce runtime overhead compared to native JVM execution, affecting performance-critical applications.
Embedding TeaVM requires using low-level classes like TeaVMTool, which the README admits involves deep diving and can be challenging for developers.