Skip to content

Latest commit

 

History

History
67 lines (44 loc) · 5.54 KB

chapter-12.asc

File metadata and controls

67 lines (44 loc) · 5.54 KB

Java 8 Embedded

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.

raspberry pi
Figure 1. Raspberry PI

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.

compact profiles
Figure 2. Full JRE > compact 3 > compact 2 > compact 1

Ö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.

compact vss
Figure 3. Compact profile karşılaştırmaları

JavaFX Extension

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)
  1. ejdk-compact1-javafx dizininde compact1 profilli JavaFX içeren JRE oluşturur.

  2. ejdk-compact2-javafx dizininde compact2 profilli JavaFX içeren JRE oluşturur.

  3. ejdk-compact3-javafx dizininde compact3 profilli JavaFX içeren JRE oluşturur.

compact profiles fx
Figure 4. Compact profile karşılaştırmaları (JavaFX dahil)

Nashorn Extension

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)
  1. ejdk-compact1-nashorn dizininde compact1 profilli Nashorn içeren JRE oluşturur.

  2. ejdk-compact2-nashorn dizininde compact2 profilli Nashorn içeren JRE oluşturur.

  3. ejdk-compact3-nashorn dizininde compact3 profilli Nashorn 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 8 ME vs Java 8 Embedded

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.