• 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 มากขึ้น

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น