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-javafx
dizinindecompact1
profilliJavaFX
içeren JRE oluşturur. -
ejdk-compact2-javafx
dizinindecompact2
profilliJavaFX
içeren JRE oluşturur. -
ejdk-compact3-javafx
dizinindecompact3
profilliJavaFX
iç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-nashorn
dizinindecompact1
profilliNashorn
içeren JRE oluşturur. -
ejdk-compact2-nashorn
dizinindecompact2
profilliNashorn
içeren JRE oluşturur. -
ejdk-compact3-nashorn
dizinindecompact3
profilliNashorn
iç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.