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 🙂
Toplam görüntülenme sayısı: 15916
Barış Gün
31 Ağustos 2012 @ 13:15
Uzun zamandır java öğrenmek isteyip nerden başlayacağını bulamayanladan biri de benim. Umarım sizin sayenizde bir başlangıç yapacağım. Yer imlerimin ilk sırasına aldım. Sürekli kontrol edeceğim yeni yazınız yayımlanmış mı diye 🙂
Akin
31 Ağustos 2012 @ 13:22
Teşekkür ederim. Bu konuda bir kaç yazı daha yazacağım.
Emir Buğra KÖKSALAN
01 Eylül 2012 @ 21:39
evet hakikaten java sadece C++ sintaksından ibaret olmayan bir dil ve profesyonel olarak sizden bişeyler istendiği zaman mutlaka üçüncü parti ürünler kullanmanız gerekiyor. ayrıca java, diğer dillerle asla karşılaştırılmamalı. çünkü javanın büyük bir geçmişi, büyük bir kullanıcı kitlesi var ve javanın asıl zenginliği burdan geliyor. saygılar…
Cihan Rüzgar Yılmaz
21 Ekim 2012 @ 19:28
Merhaba,
Bu yıl Bilgisayar programcılığı bölümü okumaya başladım.Bu bölüme gerçekten çok hevesliyim inşallah yazılarınızında desteğiyle kendimi geliştirme imkanı bulabilirim.
Teşekkür ederim/Size iyi yazmalar 🙂
Akin
22 Ekim 2012 @ 15:33
Ben teşekkür ederim. İnsallah faydalı olurum. Kolay gelsin.
Şeref
26 Nisan 2013 @ 10:54
Açıklamanız iyi olabilir ama çok terim kullanmışsınız yeni başlayanların hiçbiri bunları bilmiyordur pek faydalı göremedim
Akin
27 Nisan 2013 @ 00:42
Yorum icin tesekkurler.
Ben bu dizide anlattigim siraya uygun bir sekilde notlarimi yaziyor ve bu siteden yayinliyorum. Dolayisiyla o notlari okuyup, calisanlar, bahsettiginiz terimlerin ne anlama geldigini iyi bir sekilde ogrenmis olacaklardir.
Ece
29 Haziran 2013 @ 22:04
Bence Java’ya nereden başlayacağını bilmeyenler için çok güzel yazı olmuş, tebrikler ve teşekkürler. Tüm arkadaşlarıma paylaşıyorum. Ayrıca bilmediğimiz kelimeleri ya da terimleri de bir zahmet bizim araştırıp öğrenmemiz gerekir ki yazılımcıda olması gereken kişilik özelliği olan araştırıp öğrenme de burada başlar.
Akin
30 Haziran 2013 @ 10:52
Herhangi bir seyi ogrenemede. “nasil ogrenilecegi” kanimca en onemli kisim. Ben de bu ayzi dizisinde bunu yapmaya calisiyorum. Yayinladigim ders notu olan sunumlar ve orneklerle birlikte Java, cok rahat bir sekilde ogrenilebilinir diye dusunuyorum. Tesekkur ederim ilginiz icin.
sekaist
04 Ağustos 2013 @ 18:33
Dökümanlarınızı bugün bulma fırsatım oldu. Kısa sürede hepsini okuyup bilgilenmek için can atıyorum 🙂
Yusuf
14 Aralık 2013 @ 21:39
Java ya merak saldığım şu günde ilk olarak sizin yazılarınızda tanışmam benim için büyük şans oldu. 10 senedir yazılımla uğraşmama rağmen her “hello world” yazdığımda “ben bu dili öğrendim” dememin ne kadar trajikomik olduğunu ve Java gibi bir dilin nasıl “öğrenilmesi” gerektiğini açıkladığınız için çok teşekkür ederim. İstanbul da olsaydım muhakkak tanışmak ve yüzünüze ders almak isterdim. Samimi güzel paylaşımlarınızdan dolayı tekrar teşekkür ederim. Antalya ya yolunuz düşerse tanışmayı ve birere dumanı üzerinde Java kahvesi içmeyi çok isterim. Bol Javalı günler dilerim
Akin
14 Aralık 2013 @ 21:46
Guzel sözleriniz için çok teşekkür ederim. İnşallah bir gün birlikte kahve iceriz 🙂
Misafir
15 Eylül 2014 @ 03:00
Faydalı bir yazı olmuş teşekkürler. Ayrıca şu bağlantıdan da yararlanabilirsiniz:
http://goo.gl/SP7389
Akin
15 Eylül 2014 @ 09:17
Tesekkur ederim.
Tuğrul Turan
16 Ağustos 2016 @ 15:37
Çok güzel bir yazı teşekkürler Java geleceğin dili zannımca mobilin de etkisiyle.
Akin
16 Ağustos 2016 @ 18:53
Tesekkur ederim.