Java, ne kadar da leziz bir isim değil mi? Java.. resmen ağızda dağılıyor.

Java’ya sıradan bir başlangıç

Uygulama geliştirmek yahut freelance iş almak için değil, kurumsal bir şirkette iş bulmak amacıyla Java ve daha da önemlisi “software engineering” üzerinde kedimi geliştirmeye çalışıyorum. “Coder” olmak inşatta işçi gibi olmaktı, “Software developer” dediğimiz şey, daha çok mimarlik,mühendislik gibi. Bu elbette ki daha çok para ve mesleki tatmin demek.(Not: ekonomideki para dağılımı her zaman bu kadar toz pembe olmayabiliyor)

Bu yazı benim gibi kurumsal bir şirkette  işe girme amacıyla Java öğrenmek isteyenlere yöneliktir. Piyasada firmalar tarafından aranan teknoloji genel olarak JSE değil, JEE oluyor. Uygulama geliştirip zengin olacak arkadaşlar kendilerinden bir parça bulamayabilirler.

Daha önce bu yola girip başarısız olmuştum. JEE üzerinde çalışırken maven’da takılıp kalmıştım. Aradan geçen zamanda sağolsun Laravel’den gelen tecrübe daha hızlı yol almama neden oldu. Aslında genel mantık ilk bakışta aynı, detaylar ve kapsam düşünüldüğünde ise sigara ve nargile arasındaki farka benzer bir durum var.

Java öğrenmek için yola çıktığımda karşılaştığım en büyük problem şu oldu : Nerden başlamalı ve nasıl bir yol izlemeli? Bu kısım özellikle ilginçtir. Çok fazla kütüphanesi, framework’ü olan bir dili öğrenmek istediğinizde daha ilk adımda karşınıza onlarca yol çıkıyor.

Örneğin bir beginner olarak benim kafamda şu sorular sıraya yer etti :

JEE ne?

JEE mi yoksa JSE mi yoksa android mi?

Eclipse mi yoksa Netbeans mı?

-Bu noktada Eclipse ve JEE ye karar vermiştim sonrası şu şekilde gelişti:

-Jboss mu glassfish mi tomcat mi?

-Glassfish

(Glassfishi çözemedim)

-Tomcat olsun

-Maven ne?

-JSP mi JSF mi Spring mi Hibernate mi?

-Bunlar farklı işler yapıyormuş

-Spring+JSF+Hibernate+JEE

-Bu şekilde pek kulanılmıyormuş

-Spring + Hibernate

-Create new project mi? Create maven project mi?

-Create maven project anladım da ne tür bir maven project?

-Önce hibernate mi? Önce spring mi?

-Önce spring, sonra hibernate.

Burada bir düzine satırla anlatılan süreç, gerçekte 1 aydan fazla sürdü.

Peki Neden?

complex-simple

Bu “nerden başlayacağımı bilemiyorum”probleminin sebebi Java’nın çok farklı alanlarda kullanılıyor olması ve open-source olduğu için  dağınık bir geliştirici profiline sahip olması sayılabilir. Gerçekten JEE platformunda herhangi birşeyi yapmanın birçok yolu var. Aslında herhangi bir uygulama birçok farklı katmanı içinde barındırıyor. Her katman için oldukça çeşitli teknolojiler mevcut olduğunu düşününce Java’da geliştirilen bir uygulamanın ne kadar heterojen bir yapıya sahip olduğu ortaya çıkıyor.

Java daha çok Harley-Davidson gibi, her parçasını söküp değiştirebiliyorsun. Gerçekten ortaya çıkan şey sana ait bir tarz ürünü oluyor.

Bu durum öğrenme aşamasını inanılmaz zor hale getiriyor. Şöyle ki herhangi bir alanda spesifik bir probleme yanıt ararken, o problemi tetikleyebilecek bileşenleri göz önünde bulundurmak gerekiyor. Örneğin “neden 404 hatası alıyorum” diye soru sorarsanız sizden spring versiyonu, server tipini, spring configuration tipini(xml, java veya annotation şeklinde olabiliyor), klasör yapısını ve buna benzer birçok bilgiyi vermenizi istiyorlar. Çözümler genelde bu varyasyonlardan birine sahip oldukları için tüm varyasyonları sizin probleminizle aynı olan bir çözüm bulmak çoğu zaman mümkün olmuyor.

Çözüm genelde “servlet.xml’de şu satırı sil” şeklinde değil de, “servlet.xml ve web.xml konfigürasyou uyumlu değil” şeklinde oluyor. Hedefin hangi yönde olduğu belirtiliyor, 12’den vurmak size kalmış.

Bir JEE geliştiricisi adayı nasıl bir yol izlemeli? (Kaynaklarla birlikte)

* Öncelikle Eclipse ve JDK’yı kurmalısınız.

*  Temel JSE bilgilerine ihtiyacınız var. Temeli iyi kavramalısınız.  Head First Java harika bir kitap.  Yalnız bu kitap içindeki bazı konuları es geçmelisiniz, JEE’de kullanılmayan JSE’ye ait ve öğrenmek isterseniz de haftalar alacak olan  GUI (swing, awt…. etc , dekstop programlama için görsel arayüz tasarımı) kısmını es geçebilirsiniz. Ayrıca network ile alakalı konuları ve distributed computing konularını JEE sonrasına bırakabilirsiniz. Muhtemelen JEE platformu için JSE’nin bu alandaki fonksiyonu fazla soyut kalacktır.

*  Maven kullanmayı öğremelisiniz. Maven olmadan ilerlemek… pain in the ass.

*  Şimdi biraz araştırma yapmamız lazım öncelikle öğreneceğimiz şeyin ne olduğunu bilmeliyiz. Ne olduğunu bilmeden birşeyin nasıl yapıldığını öğrenmek sağlıklı olmaz. O yüzden Google üzerinde jsp, jee, spring, hibernate, mvc, tomcat, dependency injection gibi anahtar kelimeleri araştırıp fikir sahibi olmanız ve kendi resmi sitelerinden de incelemeniz gerekir. Lakin bu teknolojileri başlangıçta resmi sitelerinden öğrenmek zor olacağından beginner seviyesindeki tutorial’larla başlamanızı öneririm.

*  Tomcat’ı eclipse içinde kurup eclipse ile çalıştırmak görece daha anlaşılır ve kolay bir sunucu çözümü, tavsiye ederim. Çok farklı varyasyonları var, ben denedim canım yandı. İnstall tomcat in eclipse burada güzelce anlatılmış.

*   JEE projesi açarken Dynamic Web Project olarak değil de Maven Project olarak açıp Create simple project(skip archetype selection) seçeneği ile temiz bir başlangıç yaparsınız.

*  İyi bir JEE+Spring+Hibernate tutorial’ına ihtiyacınız var. Spring + Hibernate tutorial’ını almıştım çok memnun kaldım. Hiç bilmeyen birine adım adım öğretiyor. (Kurs sırasında maven kullanmıyor lakin maven’i öğrendikten sonra bu problem olmuyor)

* Sonrasında kesinlikle bir uygulama geliştirin, yapmadan bilemezsiniz.

Yazım kısa ve  kendi tecrübelerime dayanıyor, bir yazılım otoritesi olarak değil bir beginner olarak düşüncelerimi paylaşıyorum. Yorum kısmında görüşmek üzere, Happy coding,,