- TeaVM เป็นเครื่องมือที่ช่วยให้นักพัฒนา Java พัฒนาเว็บแอปพลิเคชันได้โดยไม่ต้องรับมือกับความซับซ้อนของสแตกการพัฒนา JavaScript
- เป็นคอมไพเลอร์แบบ ahead-of-time ที่แปลง Java bytecode เป็น JavaScript และ WebAssembly เพื่อให้รันบนเบราว์เซอร์ได้
- คล้ายกับ GWT แต่ใช้ bytecode แทนซอร์สโค้ด (ไฟล์ class) จึงรองรับ Kotlin และ Scala ด้วย
- สามารถตั้งค่าโปรเจ็กต์ใหม่ได้อย่างง่ายดายผ่าน Maven archetype หรือ Gradle plugin
- ไม่ต้องมีการตั้งค่าที่ซับซ้อนอย่าง npm, Webpack, Babel และ TeaVM จะจัดการทุกอย่างให้อัตโนมัติ
- ให้ความเร็วในการคอมไพล์สูง และ JavaScript ที่ได้ก็ มีขนาดเบาและรันได้รวดเร็ว
- แสดงให้เห็นถึงเวลาเริ่มต้นและประสิทธิภาพการทำงานที่รวดเร็วแม้บนอุปกรณ์พกพา
เป้าหมายของ TeaVM
- มุ่งเน้นหลักไปที่ การพัฒนาเว็บฟรอนต์เอนด์
- ไม่ได้มีไว้เพื่อแปลงโค้ดเบส Java หรือ Kotlin ที่มีอยู่ทั้งหมดให้เป็น JavaScript
- Java ไม่ได้ถูกออกแบบมาให้รันบนเบราว์เซอร์อย่างมีประสิทธิภาพ และ API บางส่วนของ Java (เช่น reflection, resources, class loader, JNI) ก็ยากที่จะทำให้มีประสิทธิภาพ จึงมีการจำกัดการใช้งาน
- กรณีที่เหมาะกับการใช้ TeaVM
- หากคุณเป็นนักพัฒนา Java และต้องการ พัฒนาเว็บฟรอนต์เอนด์ตั้งแต่ต้น
- หากกำลังใช้แบ็กเอนด์ที่พัฒนาด้วย Java และต้องการผสานรวมกับโค้ดฟรอนต์เอนด์อย่างใกล้ชิด
- หากต้องการนำโค้ดบางส่วนจากแบ็กเอนด์กลับมาใช้ซ้ำในฟรอนต์เอนด์
- หากพร้อมจะเขียนโค้ดใหม่ให้สอดคล้องกับข้อจำกัดของ TeaVM
จุดแข็งของ TeaVM
- ปรับโครงสร้างโค้ดต้นฉบับใหม่เพื่อสร้าง JavaScript ที่ใกล้เคียงกับการเขียนด้วยมือ
- เครื่องมือเพิ่มประสิทธิภาพขั้นสูงทำงานดังนี้:
- กำจัดโค้ดที่ไม่ได้ใช้งาน เพื่อสร้าง JavaScript ที่มีขนาดเล็กมาก
- แปลง virtual call ให้เป็นการเรียกฟังก์ชันแบบสแตติกเพื่อเพิ่มประสิทธิภาพ
- ใช้ตัวแปรเดียวซ้ำกับตัวแปรโลคัลหลายตัวเพื่อเพิ่มประสิทธิภาพการใช้หน่วยความจำสูงสุด
- ปรับชื่อเมธอดให้สั้นที่สุดเท่าที่เป็นไปได้ (โดยทั่วไป UglifyJS จะไม่ทำการเพิ่มประสิทธิภาพลักษณะนี้)
- รองรับเธรด: แม้ JavaScript จะไม่มี API สำหรับเธรด แต่ TeaVM มีการทำงานของ green thread
- ความเร็วในการคอมไพล์ สูง
- สามารถดีบักได้โดยตรงจาก IDE ผ่าน source map และปลั๊กอินสำหรับ IDEA
- มี API สำหรับ การทำงานร่วมกัน (interop) กับ JavaScript
ทำไมจึงควรใช้ TeaVM
- หากนักพัฒนา JavaScript มีสภาพแวดล้อมที่ตอบโจทย์อยู่แล้ว ก็ไม่จำเป็นต้องใช้ TeaVM
- แต่สำหรับนักพัฒนา Java, Kotlin, Scala นั้นมีข้อดีอย่างมาก:
- ลดเวลาและต้นทุนในการเรียนรู้ JavaScript
- ใช้ประโยชน์จาก ระบบนิเวศการพัฒนาเดียวกัน: สามารถนำ build tool (Maven, Jenkins) และเครื่องมือคุณภาพโค้ด (SonarQube) กลับมาใช้ได้
- ลด context switch ระหว่างแบ็กเอนด์กับฟรอนต์เอนด์ให้น้อยที่สุด
- TeaVM มอบ ประสบการณ์แบบเดียวกับสภาพแวดล้อมการพัฒนาแบ็กเอนด์ ให้กับงานฟรอนต์เอนด์ด้วย
การออก TeaVM 0.11.0: รองรับ WebAssembly GC
- เวอร์ชัน 0.11.0 ใหม่ของ TeaVM รองรับ WebAssembly GC
- ส่งผลให้ประสิทธิภาพดีขึ้น และทำให้แอปพลิเคชันของ TeaVM สามารถ ทำงานได้อย่างเป็นอิสระจาก ECMAScript มากขึ้น
ยังไม่มีความคิดเห็น