Hermes JS Engine Nedir?
Nedir?
Android’de react native çalıştırmak için optimize edilmiş açık kaynak bir javascript motorudur.
Nasıl çalışır?
Geleneksel Javascript motorları uygulama yüklendikten sonra yani çalışma anında javascript kodlarını derleyerek bytecode üretir. Bu durum uygulama açılışında geçikmelere sebep olur.
Hermes ise uygulamanın oluştulması sırasında bytcode üretir. Bu işlemi daha performanslı yapmak için bolca zamanı vardır.
Ne fayda sağlar?
- Uygulamanın ilk açılış süresini kısaltır.
- Uygulama apk’sının boyutunu düşürür.
- Verimli bellek kullanımı sağlar.
- Kolay bir şekilde entegre edilebilir.
Nasıl kullanılır?
Değişikleri yaptıktan sonra eğer projenizi temizlemezseniz uygulamanız sürekli açılış kısmında çökme yaşayabilir.
Canlıda kullanan uygulamalar var mı?
Facebook kendi canlıda olan uygulamalarında kullanmıştır.
Test uygulamamda aldığım sonuçlar
Uygulamanın repository’si: https://github.com/burhanyilmaz/hermestest
Test edilen cihaz: General Mobile Android One
Açılış süresi
hermes ? “00:01:22” : “00:01:79”
Burda çok fark görünmüyor fakat uygulama boyutu arttıkça bunu daha net göreceğinize eminim.
Hermes aktif iken aldığım apk.
Alt kısımda bulunan resimde app bundle’da olan boyut farkını görebilirsiniz(ilki hermes aktif olmadan elde edilen). Bundle içeriklerini incelediğimde hermes aktif değilken js kodlarını okuyabiliyordum. Hermes’i aktifleştirdiğimde ürütilen bundle içeriklerini okuyamıyorum çünkü artık onlar bytecode :) Bu kısma nasıl çalışırda değinmiştik.
Bu resimde genel olarak hermes aktif iken (new size) ve aktif değilken (old size) elde edilmiş olan iki apk arasındaki farkı görebilirsiniz.
Android App Bundle olarak çıktı aldığımda ise aşağıdaki gibi bir sonuç elde ediyorum.
hermes ? app_new.abb : app_old.aab
Bu uygulamayı aab olarak playstore yüklediğimde, kullanıcılar bu uygulamanın boyutu yaklaşık olarak 5mb olarak görecekler. Bu konuya başka yazımda değineceğim.
Yan etkileri neler?
- Uygulama içinde javascripten kaynaklanan hataların oluşması durumunda crashlytics kullanan ya da benzeri bir hizmet kullananların hatanın neden kaynaklandığını görememesine sebebiyet verebilir(varsayım test edilecek).,
Karşılaşılaşılan sorunlar neler?
react-native:0.60.2`
versionunda uygulama çıktısı alınamıyor.0.60.3
`bu sorunu çözüyorlar.- hermes ile ilgili kod değişikliği yaptığınızda mutlaka projenizi temizlemeniz gerekiyor. Yoksa uygulama açılışta çöküyor.
Hermes’in sınırlılıkları var mı?
Bu linkte detaylıca görebilirsiniz.
⃟ https://github.com/facebook/hermes/blob/master/doc/Features.md
Componentlerin mount olma sürelerin kıyaslanması
Kıyaslama yapıldığında yazılacak.
Kaynaklar
Hermes ile ilgili daha fazla bilgi almak isteyenler için :