Java’ya Nasıl Başlarım? Java’yı Nasıl Öğrenirim? – I

Çok sıklıkla “Java’ya nasıl başlarım” ya da “Java’da nasıl uzmanlaşırım” gibi emailler alıyorum. Sanırım biraz daha derli toplu bir şekilde bu soruya cevap vermek gerekli. Bu ve takip eden bir kaç yazıda bunu ele almaya çalışacağım.

Öncelikle Java’da bilgilenmenin, yüzeysel olarak, sadece örneklere bakıp, onları çalıştırarak bir kanı edinmek şeklinde değil de, sistematik olarak, en temelinden başlayarak, sağlıklı bir anlama düzeyinde gitmesi gerekli ki öncesinde “öğrenmek” sonrasında da “uzman olmak”dan bahsedebilelim. Yoksa çok sık karşılaştığım gibi, EJB ya da JMS gibi detaylı uzmanlık gerektiren ileri konularla uğraşırken, temel konulardaki eksikliklerinizden dolayı sıkıntı çekersiniz.

Java’yı öğrenmekten derken, öncelikle Temel Java’yı yani Java SEyi (Standart Edition) öğrenmeyi kastediyoruz. Java SE ya da Temel Java, “C’yi biliyorum” derken kastettiğiniz en temel programlama diline karşı gelen Java sürümüdür (buradaki sürümden kasıt, “version”a karşılık gelen sürüm değildir, temel Java dili ve ilgili yapılarını içinde barındıran bir pakettir). Java’nın ayrıca, kurumsal uygulamalarda kullanılan örneğin dagıtık transaction yönetimi ya da web arayüzleriyle ilgili bileşenlerini içeren, EE (Enterprise Edition), bir de gömülü (embedded) uygulamalarda kullanılan ME (Micro Edition) isimli iki farklı sürümü daha vardır. Bu iki farklı sürümden hangisini kullanacaksanız kullanın, öncesinde muhakkak Java SEde yetkin hale gelmelisiniz. Dolayısıyla genel olarak “Java’yı bilmek” öncelikle Java SE’yi bilmek demektir.

Sadece Java SE’yi bilmek her zaman yeterli olmayabilir. Çünkü piyasada çalışan yazılımcılar açısından Java’da yetkin olmak genelde Java SE’yi bilmekten daha çok şey bilmek anlamına gelmektedir. Bunun sebebi, kurumsal uygulamaların çoğunlukla bir ya da daha çok Java EE yapısını içinde barındırmasıdır. Örneğin, kurumsal uygulamalar ezici bir oranda, kullanıcılarına Java SEnin parçası olan Swing ile değil de Java EE’nin parçası olan web teknolojileri ile kurgulanmış web arayüzleri üzerinden hizmet vermektedir ve bu yüzden Java EE’nin parçası olan örneğin servlet, JSP ya da JavaServer Faces (JSF) bilmeyi gerekli kılmaktadır.

Öte taraftan gerek SE ve ME gerek ise EE olsun, Java en geniş, açık kaynak kodlu olsun ya da olmasın, üçüncü el (“3rd party” böyle mi çevriliyordu?) bileşenlere ve ürünlere sahip bir dildir. Çünkü Java, standartlar üzerine kurgulanmış ve nesne-merkezli yapısı ile, bileşen tabanlı geliştirme için çok iyi bir eko sistem kurgulamıştır.  Özellikle Java EE’nin standart bileşenlerinden olan örneğin web bileşenlerinin (yani Servlet, JSP ve JSF’in) pek çok üçüncü el alternatifi vardır. Farklı amaçlara yönelik olarak tasarlanıp geliştirilmiş ve Java programcılarına sunulmuş olan bu web çerçeveleri (ya da çatıları, iskeletleri) (framework), farklı tipteki web ihtiyaçları için çözümler sunmaktadırlar. Örneğin, Struts, GWT, Vaadin ya da Spring MVC, üçüncü el web çatılarından sadece bir kaçıdır. Gerek ülkemizde gerek ise dünyada bu üçüncü el çözümler o kadar yoğun kullanılmaktadır ki bazıları alanında ilgili standart çözümden daha çok kullanılır hale gelmişdir. Örneğin 2000′li yıllarında başında Struts, web projelerini, önce MVC (Model-View-Controller) yapısında kurgulamak sonra da web yapılarında ciddi problem olan görsel bileşen (widget), sıra dışı durumlar, uluslararasılaştırma (I18N) vb. pek çok konuyu halletmek amacıyla ortaya çıkmıştı. Struts öyle ilgi gördü ve yaygınlaştı ki, Java EE’nin standart web bileşenlerinin en temeli olan servletlerin ihtiyacını ve kullanımını neredeyse ortadan kaldırdı. Benzer durum, Spring, Hibernate vb. diğer üçüncü el çerçeveler için de söz konusudur. Dolayısıyla Java’da yetkin olmak çoğu zaman Java SE’nin üzerine, bazen standart Java EE’nin bazen de bir takım üçüncü el çerçeveler ve bileşenlerin bilgi ve tecrübesini koymak anlamına gelmektedir.

Zaman zaman, Java’yı yani Java SE’yi bilmeden, doğrudan Java EE’ye giriş yapan kişileri duyuyorum. Böyle bir durum daha çok JSP için geçerli gibi görünüyor; çünkü JSP bir script yapısına sahip olmanın getirdiği özelliklerle, hızlıca öğrenilip ayağa kaldırılabilecek bir bileşen. Hiçbir şekilde sağlıklı olmayan bu doğrudan Java EEye giriş, genç arkadaşlara, Java EEnin diğer bileşenlerine de hızlıca girilebilir izlenimi veriyor. Java EE, yukarıda da ifade ettiğim gibi tamamen Java SE üzerine kurgulanmış bir katmandır, dolayısıyla ancak ciddi bir Java SE bilgisi üzerine bina edilebilir. Java EE, Java SE’den daha geniş ve daha karmaşıktır. Java EE yapılarını çalıştırmak, Java SE’dekiler kadar kolay da değildir; genelde özel yapılara ihtiyaç duyar ki bunlara kab (container), web kabı (web container) ya da EJB (EJB container) gibi, diyoruz.

İletişim protokolleri ya da daha aşağı seviyede, donanıma daha yakın yapıların öne çıktığı projelerde sadece Java SEnin kullanıldığına sık sık şahit oluyorum. Genelde kullanıcı arayüzlerine sahip olmayan bu gibi yapılarda Java EE pek de kullanılmıyor. Bu gibi projelerde yer alana kişiler, Java EE ile ilgili pek fazla bilgi ve tecrübe sahibi olmuyorlar ama Java SE’de çok yetkin oluyorlar ve yoğun olarak da kullanıyorlar. Yurt dışında çok daha fazla sayıda olsalar da ülkemizde de bu şekilde çalışan pek çok yazılım ya da teknoloji evleri mevcut. Dolayısıyla ancak bu gibi ortamlarda sadece Java SE ve ilgili 3. el yapılarda yetkin olmanız yeterlidir.

Bundan sonraki yazılarda, Java SE ve EE’yi öğrenmenin detaylarından bahsedeceğim.

Bol Javalı günleeeerrr :)

 

Bu yazı toplam 497 defa görüntülenmiştir.

Share

Java ve .NET bağlamında Bilmek ve Öğrenmek Üzerine

Geçenlerde Friend Feed‘de(FF) bir soru vardı: “Java mı .NET mi?” Sanırım soruyu soran kişi bir yazılım şirketinde ya da bir şirketin BT bölümünde çalışıyordu ve önlerindeki bir proje için teknoloji seçimi yapmak noktasındaydılar. Bu son derece tabi bir durum; pek çok şirket bu iki teknolojinin dışındaki teknolojileri kullanıyorlarlar ve hayatlarının belli bir noktasında daha yaygın olan bu iki teknolojiden birini seçip onunla devam etmek istiyor.  FF’de sorulan böyle bir soruya cevap verenler derin teknik analizler yaparken ya da tecrübelerini aktarırken ben de ufak bir katkıda bulunmak istedim ve seçimdeki temel kriterin “bilmek” olduğunu söyleyiverdim.
okumaya devam …

Bu yazı toplam 116 defa görüntülenmiştir.

Share

Java Tutorial ya da Kendi Kendine Java Öğren

Java’ya yeni başlayanların en çok aradığı şeydir güzel bir kaynak. Aslında biz Türkler işin daha çok örnek program tarafıyla ilgileniriz, çok okumadan örneklerden yola çıkarak öğrenmek yani. Tabi programlama örnek görmeden ve yapmadan öğrenilmez, bu doğru. Ama sadece örnekle de öğrenilmez ya da hem çok uzun sürer hem de eksik kalan noktalar olur. Bu yüzden bana Java ile ilgili kaynak soranlara verdiğim ilk kaynak Java Tutorial‘dır. Java Tutorial, taa 1996 yazından bu yana kitap olarak basılıyor. Ben ilk baskısını almıştım çıktıktan hemen sonra. O zaman tek ciltti, sonra önce iki sonra da üç cilt olarak basılmaya başlandı.
Adındaki tutorial kelimesinden de anlaşıldığı gibi özel ders tadında, kendi başınıza çalışarak öğrenmenize yardımcı olacak kadar basit ve detaylı anlatan kitaplar bunlar. Yüzlerce Java program örneği var bu kitapların, her konudan var, basiti de var karmaşığı da. İşin güzel tarafı bu kitaplar, taa bir cilt olduğu günlerden bu yana internette, burada online olarak erişilebilir durumda.  Aynı sayfadaki linkten giderek bu üç cilt kitabı HTML olarak makinanıza indirebilirsiniz. Tutorial bir kaç ayda bir yenileniyor ve bahsettiğim sayfada yenilenme tarihi de var, ona göre her zaman en son halini makinanızda bulundurabilirsiniz.

Üç cildin ilki en temel bilgileri içeriyor. Java’yı anlamakta zorluk çekiyor ve en temel konularda bile bilgi eksikliği hissediyor ve hata yapıyorsanız muhakkak bu kitaba göz atın. İkinci cilt, Swing hakkında. Yani Java’yı kullanarak kullanıcı grafik arayüzüne (GUI) sahip yazılımlar ele alınıyor. Bu kitabın örneklerini Netbeans uygulaması olarak makinanıza proje halinde indirebildiğiniz gibi, tutorialın HTML sayfalarındaki linklere basınca JNLP   ve Java Web Start yardımıyla başka birşey yapmadan örnek programın çalıştığını ve grafik arayünün görüntülendiğini göreceksiniz.

Üçüncü cilt ise ağ programlama, RMI ve JDBC gibi nispeten daha ileri konuları kapsıyor.

Java’ya vakit ayırarak sağlam bir şekilde öğrenmek isteyenler için ilk adım bence Java Tutorial olmalı.

Bu yazı toplam 259 defa görüntülenmiştir.

Share