You are hereGökten Üç Java Düşmüş: J2SE, J2EE ve J2ME
Gökten Üç Java Düşmüş: J2SE, J2EE ve J2ME
Java manyağı olmama az kalmışken, bu satırları yazarak içimi dökme girişiminde bulunacağım. Maksat halkı bilinçlendirmek :P
Şimdi, Java dedikleri bir programlama dili. Her şeye baştan başlayıp toz ve gaz bulutu geyiğine girmeden, üçe bölümde incelenen bu Java'yı azıcık anlatayım.
Java programlama dili, C nin dilbilgisine sahip bir dil. C mantığını kapmış her insanın kolayca kodları okuyup takip edebileceği, anlamasa da üç aşağı beş yukarı tahmin yürütebileceği bir dil. Yıllar önce şöyle bir olay vuku buluyor: C geliştikçe gelişiyor. C++ çıkmış, Nesne Yönelimli [Object Oriented] diye bi' kavramı beraberinde geitirmiş ve izleyenleri hayretler içinde bırakmış. Ama amcalar bir program yazılyorlar, program Windows'ta çalışıyorsa, Linux'te çalışmıyor. Yani her işletim sistemi (daha genel anlamıyla her platform) için aynı programı tekrar tekrar yazmak, uğraşıp durmak lazım geliyor. Bundan dolayı da demişler ki, öyle bir programlama dili geliştirelim ki bi' defa yazalım, her yerde kullanalım, her Allah'ın platformu için bi' daha bi' daha kendimizi kasmayalım.... İşte Java diye diye artislik yaptığım programlama dilinin çıkışı böyle.
Bu slogan çok tutmuş olmalı. Şu an bile Java'yla alakalı her yerde bunun İngilizcesini görebilirsiniz; şöyle ki: Write Once, Run Everwhere!
İşte bu WORE sloganı, kulağa hoş geliyor, programcıların da gözünü parlatıyor ama Nilüfer'in, Asya'nın ve Müslüm Gürses'in ve akabinde de Duman'ın da "Olmadı Yar" adlı şarkıda dile getirdikleri gibi her şeyin bedeli vardır... Bu bedele biz Java Sanal Makinası diyoruz. Yani bir Java programını bir alette çalıştırmak için ona önce bir "Java Virtual Machine" yüklemek farz. Böylece bu makine kodları okur, işler felan filan.
Şimdi gelelim bu trilojiye. Biz bir programı yazıp her yerde kullanmak istiyoruz, tamam güzel ama uydu alıcısından ftp bağlantısı yapmak, koca sunucu bilgisayarından SMS göndermek ya da mutfak robotunda oyun çalıştırmak falan gibi fantazilere girmek çok akıllıca değil (En azından şimdilik pek değil). Dolayısıyla işte bu Javacı amcalar Java'yı platformlara ayırıp öyle inceleyim, ona göre programlar yazalım demişler. Bunlar Java'nın ikinci sürümüne geçerken tamamıyla karar kılmışlar.
Demişler ki elimizdeki bilgisayarlar bu işin standartını oluşturuyor. Bu platforma Standart Edition diyelim. Böyle koca koca sunucuların [server] felan hitap ettiği kesime Enterprise Edition diyelim. Bir de cück gibi gün geçtikçe cebe giren elektronik aletlere hitap eden Micro Edition olsun. Hazır ikinci sürüme de ulaşmışken bunları bir de baş harfleriyle kısaltalım, tam havalı havalı olsun:
Java 2 Standart Edition: J2SE
Java 2 Enterprise Edition: J2EE
Java 2 Micro Edition: J2ME
Böylece gökten üç Java düşmüş, benim başımdaki de J2ME olanı.
Blog
Musiki
Ben WORA yerine WODRA kullanıyorum genelde. :D Açılımı Write Once Don't Run Anywhere, yani "Bir kez yaz, hiçbir yerde çalıştırma". :D
Üzücü bir gerçek ama ne yazık ki böyle. Java heryerde çalışabilirliği ile övünüyor ama çoğu platformda da çalışabilme lüksünü başka üreticilere bırakıyor, bu da üreticilerin kafasına göre kendi standardını belirlemesine sebep oluyor.
Ör; Java ME, eski adıyla J2ME. Her cep telefonunda çalışması gerekir değil mi, hayır. Java ME destekli bir aygıtta her Java ME uygulamanın çalışması gerekiyor mu, o da hayır, MIDP veya CLDC sürümleri aynı olsa bile.
Sun Java ME ile ilgili açık bir kaynak kodu yayınlamış, üreticilerin bunu kendi keyiflerine göre geliştirip cihazlarına yüklemesi gerekli, tabi bunu yaparken de istedikleri eklemeleri yapabiliyorlar. Bu durumda bir oyun Java uygulaması olsa bile Nokia için yazılmış bir uygulama Nokia API desteği olmayan telefonlarda çalışmıyor, veya bir Siemens uygulaması diğer bir telefonda çalışmıyor.
Bundan başka Windows Mobile işletim sistemleri için Sun'ın masaüstü sürümleri gibi bir yazılımı yok, bu işletim sistemlerini kullanan cihazlara üreticileri kendi sanal makinelerini geliştirmek veya 3. parti bir yazılım yüklemek zorundalar. Bu durumda da örneğin en basit Java kütüphaneleri ile yazılmış bir uygulamada ekrana alt alta yazılar yazdırmak isterken, bunlar Esmertec Java emülatörüne sahip bir WM telefonda üst üste görünebiliyor, sonra ekranı temizlemek için verdiğiniz bir komut, uygulamayı kullanılamaz hale getirebiliyor.
Veya Java SE sürümünü düşünelim. Bu sürüm için geliştirdiğiniz uygulamalar sürüm 5'in üzerinde olmamalı, 6 olursa Mac OS'lerde çalışmaz. Veya Windows altında DirectX desteğiyle çalışan bir uygulama Linux altında OpenGL ile başarısız olaibliyor.
Bu tür sorunları var Java'nın, bu sebeple pek de sanıldığı kadar her yerde çalışma özelliğine sahip değil.
Sun Apple Iphone telefonlar için Java sanal makinesi geliştirmeyi düşünüyor ama önce daha yaygın platformlar için bir tane geliştirmeli. Nasıl Esmertec'in sanal makinesi neredeyse her sürüm WM telefona yüklenebiliyor, Sun'da böyle birşey yapmalı. HP iPAQ 900 için bir girişimi var ama sadece o modelle sınırlı, daha genel bir sürüm olmalı.
Ondan sonra tarihi eser Siemens C(ommodore) 65 cep telefonumda çalışan 5 MB boyutunda bir uygulama standart özelliklerine rağmen son model bir Nokia telefonda çalışmayabiliyor, çünkü telefonun uygulama boyut sınırı 1 MB. :D İşte bu gibi sebeplerden dolayı WODRA diyorum ben. :D
Öyle... Java ME için kesinlikle doğru bir yaklaşım. Ne diyebilirim ki... Ama Java'nın asıl kullanıldığı yer Java ME değil, hatta Java SE bile değil. Tüm güç Enterprise da gidiyor dünya üzerinde... Kurumsal uygulamalarda asıl para belki de :)
Evet, asıl para kurumsal uygulamalarda. Zaten SE uygulamaları tek başlarına çok yaygın veya çeşitli değil. Java SE'de de dediğim gibi Mac sistemler ile sürüm problemleri var, DirectX OpenGL problemleri vs. var, gerçi son söylediğim iyi birşey ama uygulamaların Linux altında yeterince performanslı olmasını engelleyebilir.
Kurumsal alanda Java EE de Türkiye'de pek yaygın birşey değil, çünkü Türkiye'de herşey Microsoft etrafında dönüyor. :D
Ama şu an en yaygın bulunduğu platform Java ME, Iphone ve yerli dizayn Çin telefonları dışında neredeyse her telefonda var. :)
Evet, asıl para kurumsal uygulamalarda. Zaten SE uygulamaları tek başlarına çok yaygın veya çeşitli değil. Java SE'de de dediğim gibi Mac sistemler ile sürüm problemleri var, DirectX OpenGL problemleri vs. var, gerçi son söylediğim iyi birşey ama uygulamaların Linux altında yeterince performanslı olmasını engelleyebilir.
Kurumsal alanda Java EE de Türkiye'de pek yaygın birşey değil, çünkü Türkiye'de herşey Microsoft etrafında dönüyor.
Ama şu an en yaygın bulunduğu platform Java ME, Iphone ve yerli dizayn Çin telefonları dışında neredeyse her telefonda var.
"Pek yaygın değil" diyemeyiz ama biz işin içine girmedikçe görmüyoruzdur. Birazcık da ne yaptığını bilmeyenler Java yerine Microsoft'u daha çok tercih ediyor. Ben iş ilanlarında örneğin, genellikle Java developer arayışı olanları görüyorum.
Yaygın tabii ki ama Microsoft kadar yaygın mı bilmem, yani bu ülkede onun sözü biraz daha fazla geçiyor da. :D
Bu konuda ben de fikrimi paylaşmak istiyorum