- TeaVM ist ein Tool, das Java-Entwicklern hilft, Webanwendungen zu entwickeln, ohne die Komplexität des JavaScript-Entwicklungs-Stacks bewältigen zu müssen
- Als Ahead-of-time-Compiler wandelt es Java-Bytecode in JavaScript und WebAssembly um, damit dieser im Browser ausgeführt werden kann
- Ähnlich wie GWT, verwendet jedoch Bytecode statt Quellcode (
.class-Dateien) und unterstützt daher auch Kotlin und Scala
- Neue Projekte lassen sich einfach über Maven-Archetypes oder ein Gradle-Plugin einrichten
- Komplexe Konfigurationen wie npm, Webpack oder Babel sind nicht nötig; TeaVM übernimmt alles automatisch
- Bietet schnelle Kompilierungszeiten, und das erzeugte JavaScript ist leichtgewichtig und schnell in der Ausführung
- Zeigt auch auf Mobilgeräten schnelle Startzeiten und gute Laufzeitleistung
Ziel von TeaVM
- Frontend-Webentwicklung ist das Hauptziel
- Es ist nicht dafür gedacht, eine gesamte bestehende Java- oder Kotlin-Codebasis nach JavaScript zu konvertieren
- Java wurde nicht dafür entworfen, effizient im Browser zu laufen, und einige Java-APIs (Reflection, Resources, Class Loader, JNI usw.) lassen sich nur schwer effizient implementieren, daher ist ihre Nutzung eingeschränkt
- TeaVM wird benötigt, wenn
- man als Java-Entwickler ein Web-Frontend von Grund auf entwickeln möchte
- bereits ein Java-basiertes Backend genutzt wird und man den Frontend-Code eng damit integrieren möchte
- ein Teil des Backend-Codes im Frontend wiederverwendet werden soll
- man bereit ist, Code an die Einschränkungen von TeaVM anzupassen
Stärken von TeaVM
- Rekonstruiert die ursprüngliche Codestruktur und erzeugt JavaScript, das handgeschriebenem Code ähnelt
- Fortgeschrittene Optimierungswerkzeuge übernehmen unter anderem folgende Aufgaben:
- Erzeugen durch Dead-Code-Eliminierung sehr kleines JavaScript
- Umwandeln von virtuellen Aufrufen in statische Funktionsaufrufe zur Performance-Optimierung
- Wiederverwenden mehrerer lokaler Variablen in einer einzigen Variable zur maximalen Speichereffizienz
- Optimieren von Methodennamen auf möglichst kurze Formen (UglifyJS führt solche Optimierungen normalerweise nicht durch)
- Thread-Unterstützung: JavaScript bietet keine Thread-API, aber TeaVM implementiert Green Threads
- Schnelle Kompilierung
- Debugging direkt in der IDE über Source Maps und ein IDEA-Plugin
- Bietet eine Interop-API für die Zusammenarbeit mit JavaScript
Warum man TeaVM verwenden sollte
- Wer als JavaScript-Entwickler bereits mit seiner Umgebung zufrieden ist, braucht TeaVM nicht
- Für Java-, Kotlin- und Scala-Entwickler bietet es jedoch große Vorteile:
- Weniger Zeit- und Kostenaufwand für das Erlernen von JavaScript
- Nutzung eines einheitlichen Entwicklungsökosystems: Build-Tools (Maven, Jenkins), Code-Qualitätswerkzeuge (SonarQube) usw. können weiterverwendet werden
- Minimierung von Kontextwechseln zwischen Backend und Frontend
- TeaVM bietet im Frontend dieselbe Erfahrung wie in der Backend-Entwicklungsumgebung
TeaVM 0.11.0 Release: Unterstützung für WebAssembly GC
- Die neue Version 0.11.0 von TeaVM unterstützt WebAssembly GC
- Dadurch wurde die Performance verbessert, und TeaVM-Anwendungen können noch unabhängiger von ECMAScript arbeiten
Noch keine Kommentare.