Java 8 Embedded, Java çalışma ortamını (JRE), sınırlı bellek imkanlarına sahip gömülü cihazlarda, az bellek tüketimli olarak sunmayı amaçlayan düşüncenin ürünüdür.
Java çalışma ortamı, farklı işlemci ailesi ve farklı işletim sistemi ailelerine göre ayrıca hazırlandığı için platform bağımsızlığını sunmaktadır. Örneğin bugün x86 mimarili bir işlemci için Windows, Mac ve Linux türevi işletim sistemlerinde hem çalışma ortamını hem geliştirme ortamını kullanabiliyoruz. Ha keza, ARM 6/7 işlemci ailesine sahip makinelerde Java çalışma (JRE) ve geliştirme ortamını (JDK) kullanabiliyoruz.
Gömülü sistemlerde ARM mimarili işlemciler çok fazla tercih ediliyor. Örneğin elinizdeki akıllı telefonun ARM ailesinden bir işlemci olma olasılığı çok çok yüksek. Popülerliği oldukça yüksek olan bir gömülü cihaz Raspberry PI' de ARM ailesinden bir işlemci kullanıyor.
Gömülü cihazların kendine has sınırlılıkları bulunuyor. Bu sınırlılıkların en başında ise bellek sınırlılığı geliyor. ARM işlemci ailesine göre yapılandırılmış full bir JRE, disk ortamında yaklaşık olarak 47 mb yer tutuyor. 47 MB göze çok gözükmeyebilir, ama, örneğin 64 MB bir belleğe sahip gömülü cihaz için 47 MB çok fazla! İşte tam da bu noktada Java 8 Embedded devreye giriyor.
Java 8 Embedded, Java çalışma ortamını (JRE), gömülü cihazlar için kısmi modülerlik ile boyut olarak düşürmeyi amaçlamaktadır. Bu amaçla Java 8 Embedded geliştirim ihtiyaçlarına göre 3 tip JRE profili sunmaktadır. Bir de full profili katarsak toplamda 4 profil var.
Java 8 Embedded, compact 1, compact 2 ve compact 3 profillerini sunmaktadır. Bu profillerde, en çok ihtiyaç duyulabilecek spesifik Java paketleri gruplandırılarak boyut bakımından küçülme sağlanmaktadır.
Buna ilaveten, standart bir JRE için iki JVM modu bulunmaktadır. Bunlar client ve server mode dur. Bu iki seçenekte çalışma ortamına göre JIT Compiler bazında ayrıştırma yapılmaktadır. Java 8 Embedded için ise varsayılan olarak client ve server modu haricinde minimal modu gelmektedir. minimal modda bellek tüketimi minimize edilmektedir. Fakat bu modda azami %5 'lik bir performans düşümü makul karşılanmaktadır.
Birbirini içerir biçimde yapılandırılan Compact profiller, sık tercih edileceği düşünülen paketler bazında gruplandırılmıştır. Bu gruplamayı aşağıdaki şekilden görebilmekteyiz.
Örneğin gömülü sisteminizde en temel Java paketlerini kullanacaksanız compact 1 profilini seçmek size avantaj sağlayacaktır. compact 1 profilinde hazırlanan JRE yaklaşık 9.5 MB’dir. Profiller arası boyutsal kıyaslamaya dair grafiği aşağıda görüyoruz.
JavaFX eklentisi kullanıldığında, gömülü cihazınızda JavaFX kullanmak için gerekli paketler Embedded JRE içine dahil edilmektedir. Elbette, oluşan çıktıların boyutları artmaktadır (Yaklaşık 10M kadar daha).
> jrecreate -p compact1 -x fx:controls --dest ejdk-compact1-javafx (1)
> jrecreate -p compact2 -x fx:controls --dest ejdk-compact2-javafx (2)
> jrecreate -p compact3 -x fx:controls --dest ejdk-compact3-javafx (3)-
ejdk-compact1-javafxdizinindecompact1profilliJavaFXiçeren JRE oluşturur. -
ejdk-compact2-javafxdizinindecompact2profilliJavaFXiçeren JRE oluşturur. -
ejdk-compact3-javafxdizinindecompact3profilliJavaFXiçeren JRE oluşturur.
Java 8 ile birlikte gelen Nashorn JavaScript motoru, bir eklenti olarak ürettiğiniz ejre içine dahil edilebilmektedir. Bu sayee JVM içinde JavaScript dilinde yazılan uygulamaları çalıştırma imkanı elde edilmektedir. Nashorn eklentisi ejre çıktısına yaklaşık 1MB ilave etmektedir.
> jrecreate -p compact1 -x nashorn --dest ejdk-compact1-nashorn (1)
> jrecreate -p compact2 -x nashorn --dest ejdk-compact2-nashorn (2)
> jrecreate -p compact3 -x nashorn --dest ejdk-compact3-nashorn (3)-
ejdk-compact1-nashorndizinindecompact1profilliNashorniçeren JRE oluşturur. -
ejdk-compact2-nashorndizinindecompact2profilliNashorniçeren JRE oluşturur. -
ejdk-compact3-nashorndizinindecompact3profilliNashorniçeren JRE oluşturur.
|
Note
|
-x parametresiyle JavaFX eklentisi belirtildiğinde, JavaFX üretilen JRE içine dahil edilmektedir. -x parametresi fx:controls, sunec, sunpkcs11, locales, charsets, nashorn değerlerini kabul etmektedir. Birden fazlasını aynı anda kullanmak için (,) kullanılabilmektedir.
|
Java Me ile Java Embedded’in birbirine karıştırılması oldukça olası. Java ME, gömülü cihazlarda Java sanal makinesinin (JVM) çok çok küçük bellek tüketerek çalışmasına olanak sağlayan özel bir Java çalışma ortamıdır. Java 8 Me ile gömülü cihazların donanımsal birimlerini kontrol etmek mümkündür. Örneğin bir gömülü cihazın giriş/çıkış pinlerini, Watchdog Timer gibi bileşenlerini kullanabilirsiniz. Java ME içinde bunları kullanabilmek için özel paket ve sınıflar yer almaktadır.
Tekrar görüşmek dileğiyle.



