發(fā)布于:2021-01-15 10:50:04
0
211
0
如果您是需要從頭開始編寫Web前端的Java開發(fā)人員,TeaVM是Java字節(jié)碼到JavaScript的提前編譯器,可能會派上用場。但是,如果您想使用Java或Kotlin獲得現(xiàn)有的大型代碼庫并生成JavaScript,那么您來錯了地方。
Java開發(fā)人員,您的工具箱是什么樣的?如果您需要從頭開始編寫Web前端,這里還有一個工具可能會派上用場。 TeaVM是Java字節(jié)碼的提前編譯,并且能夠發(fā)出JavaScript和WebAssembly。
盡管其“近親”是GWT,但不同之處在于“ TeaVM依賴于現(xiàn)有的編譯器,無論是javac,kotlinc還是scalac”。這些編譯器產(chǎn)生的字節(jié)碼(*.class 或 *.jar 文件),然后TeaVM借此字節(jié)碼,并產(chǎn)生JavaScript代碼,”根據(jù)項目描述。
如果您是曾經(jīng)編寫后端代碼的Java(或Kotlin或Scala)開發(fā)人員,那么TeaVM可能是您的選擇。一個優(yōu)秀的開發(fā)人員(包括Java開發(fā)人員)確實(shí)可以學(xué)習(xí)JavaScript。但是,要成為專家,您必須花費(fèi)合理的時間。
你可以在以下情況使用TeaVM:
您是一名Java開發(fā)人員,您將從頭開始編寫web前端。
您已經(jīng)有了基于java的后端,并且希望將前端代碼緊密地集成到現(xiàn)有的開發(fā)基礎(chǔ)設(shè)施中。
您需要在前端重用一些Java后端代碼。
您已經(jīng)準(zhǔn)備好重寫代碼以與TeaVM一起工作了。
TeaVM的優(yōu)點(diǎn):
它嘗試重建方法的原始結(jié)構(gòu),因此在大多數(shù)情況下,它會生成您需要手工編寫的JavaScript。沒有臃腫的while/switch語句,不熟悉的編譯器通常會這樣做。
它支持線程。
它是快的
它生成源圖;teamm IDEA插件允許在IDE中調(diào)試代碼。
還有一個子項目叫做Flavour。
它是什么:一個編寫單頁web應(yīng)用程序的框架(可以與后端代碼一起使用)
它不是什么:一個服務(wù)器端框架。你應(yīng)該使用像OpenJDK這樣的“普通”JDK來編寫后端代碼,或者使用你喜歡的框架來編寫Oracle JDK。
運(yùn)行TeaVM最簡單的方法是使用TeaVM -maven-plugin。這里有一個例子:
<project> ... <build> <plugins> <plugin> <groupId>org.teavm</groupId> <artifactId>teavm-maven-plugin</artifactId> <version>0.5.1</version> <dependencies> <!-- This dependency is required by TeaVM to emulate subset of Java class library --> <dependency> <groupId>org.teavm</groupId> <artifactId>teavm-classlib</artifactId> <version>0.5.1</version> </dependency> </dependencies> <executions> <execution> <goals> <goal>compile</goal> </goals> <phase>process-classes</phase> <configuration> <mainClass>org.teavm.samples.HelloWorld</mainClass> <mainPageIncluded>true</mainPageIncluded> <debugInformationGenerated>true</debugInformationGenerated> <sourceMapsGenerated>true</sourceMapsGenerated> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>