- TeaVM, Java geliştiricilerinin JavaScript geliştirme yığınının karmaşıklığı olmadan web uygulamaları geliştirmesine yardımcı olan bir araçtır
- Ahead-of-time derleyici olarak Java bayt kodunu JavaScript ve WebAssembly'ye dönüştürerek tarayıcıda çalışmasını sağlar
- GWT'ye benzer, ancak kaynak kod yerine bayt kodu (
class dosyaları) kullandığı için Kotlin ve Scala'yı da destekler
- Maven archetype veya Gradle eklentisi üzerinden yeni projeler kolayca kurulabilir
- npm, Webpack, Babel gibi karmaşık yapılandırmalara gerek yoktur ve TeaVM tüm işleri otomatik olarak halleder
- Hızlı derleme sunar ve ortaya çıkan JavaScript hafif ve hızlı çalışır
- Mobil cihazlarda da hızlı başlangıç süresi ve çalışma performansı gösterir
TeaVM'in amacı
- Ana hedefi web frontend geliştirmedir
- Mevcut bir Java veya Kotlin kod tabanının tamamını JavaScript'e dönüştürmek için tasarlanmamıştır
- Java, tarayıcıda verimli çalışacak şekilde tasarlanmadığından ve Java API'lerinin bazı bölümleri (reflection, resources, class loader, JNI vb.) verimli biçimde uygulanması zor olduğundan kullanımı sınırlar
- TeaVM'in gerekli olduğu durumlar
- Java geliştiricisi olarak web frontend'i sıfırdan geliştirmek istiyorsanız
- Java tabanlı bir backend kullanıyor ve frontend koduyla sıkı entegrasyon istiyorsanız
- Bazı backend kodlarını frontend'de yeniden kullanmak istiyorsanız
- Kodunuzu TeaVM'in kısıtlarına uyacak şekilde yeniden yazmaya hazırsanız
TeaVM'in güçlü yönleri
- Özgün kod yapısını yeniden kurarak elle yazılmış olana benzer JavaScript üretir
- Gelişmiş optimizasyon araçları şu işleri yapar:
- Ölü kod eleme ile çok küçük JavaScript üretir
- Sanal çağrıları statik fonksiyon çağrılarına dönüştürerek performansı optimize eder
- Birden fazla yerel değişkeni tek bir değişkende yeniden kullanarak bellek verimliliğini en üst düzeye çıkarır
- Metot adlarını mümkün olduğunca kısa olacak şekilde optimize eder (UglifyJS genelde bu tür optimizasyonları yapmaz)
- Thread desteği: JavaScript thread API'si sunmaz, ancak TeaVM green thread uygular
- Hızlı derleme
- Source map ve IDEA eklentisi sayesinde doğrudan IDE içinde debug edilebilir
- JavaScript ile birlikte çalışabilirlik (interop) API'si sağlar
Neden TeaVM kullanılmalı
- JavaScript geliştiricisi mevcut ortamından memnunsa TeaVM'e gerek yoktur
- Ancak Java, Kotlin, Scala geliştiricileri için büyük avantajlar sunar:
- JavaScript öğrenmeye harcanan zaman ve maliyeti azaltır
- Tek bir geliştirme ekosistemi kullanımı: build araçları (Maven, Jenkins), kod kalitesi araçları (SonarQube) vb. yeniden kullanılabilir
- Backend ve frontend arasındaki context switch ihtiyacını en aza indirir
- TeaVM, frontend tarafında da backend geliştirme ortamıyla aynı deneyimi sunar
TeaVM 0.11.0 sürümü: WebAssembly GC desteği
- TeaVM'in yeni 0.11.0 sürümü, WebAssembly GC desteği sunar
- Bunun sonucunda performans artmıştır ve TeaVM uygulamaları ECMAScript'ten daha bağımsız çalışabilir hale gelmiştir
Henüz yorum yok.