Nelere? Nasıl? Çalışmalıyım

Merhaba arkadaslar,

Sıkça Java’da nelere çalışmalıyım neler öğrenmeliyim gibi bildirimler almaktayım. Öncelikle beni “bilen” biri olarak gördüğünüzden dolayı teşekkür eder, aksi olduğunu belirterek konu hakkında birkaç kelam edeceğim. Bırakın benden tecrübeli insaları benden çok daha bilgili/ilgili öğrenci arkadaşlarım var, onları bulun onlara da sorun

Öncelikle ben nasıl ve nelere çalıştım onlardan yola çıkarak şu tavsiyelerde bulunabilirim;

  • Java SE temeli sağlam olmalıdır. Java temelinizin ne kadar sağlam olduğunu yada olmadığını kestiremiyorsanız sağlam degildir muhtemelen Öncelikle eğer Türkçe kaynaklardan çalışıyorsanız kaliteli Türkçe Java kitaplarını okuyun. Alper Akalın hocamızın Kim Korkar Java’dan ve Herber Schildt’in Java kitapları bu ihtiyacı karşılayacaktır. İngilizce kaynak olarak da Effective Java ve Head First’ün Java SE kitapları çok kalitelidir. Bu kitapları ben okumuştum zamanında. Ayrıca OCP gibi sertifika’lara da hazırlanmanız temelinizi fazlasıyla iyileştirecektir.
  • Java SE ile beraber genel yapıları kullanabilecek duruma geleceksiniz muhtemelen. Java SE’de benim en önem verdiğim konular şunlardır; Her Java’cının SE sürecinde Collection Framework ve Threadler ile birlikte event listener gibi konular da mutlaka ama mutlaka temelinin sağlam olması gerekir, kişisel düşüncemdir.
  • Java SE öğrenirken bolca örnekler, pratikler yapın, OOP konularında teorik ve pratik olarak eksiğiniz bulunmasın.
  • Eğer SE tamamdır, öğrendim, anladım, uyguladım diyorsanız yapacağınız tek iş Java EE konularına bakmaktır. Sektor açısından Java SE yeterli değildir. Java EE’ye nasıl başlarım gibi de sıkça sorular gelmektedir. Ben SE’den sonra Head First Servlet&Jsp kitabını okumuştum. Java EE’ye girmeyi düşünen arkadaşlara ilk kaynak tavsiyem bu olacaktır.
  • Java EE sürecinde ilk öğrenilecek konu SERVLET’tir. Servlet’ler, diğer Java EE teknolojilerinin temelini oluşturur. Bu nedenle ilk olarak öğrenilmesi gereken konudur. Servlet öğrenirken bir Java Web Application nedir nasıl çalışır mantığı yapısı nedir gibi konuları öğrenmiş olacaksınız. Bunun yanında temel HTTP bilgilerini de öğreneceksiniz. Servlet ile birlikte request/response, session, cookie, filter, listener gibi yapıları öğreneceksiniz. Bu aşamada JSON/XML gibi yapıları basit oldugundan bir arada götürebilirsiniz.
  • Tabi MCV mimarisinde Servletler, Controller olarak görev almakta. View olarak da Servletlerden sonra yada zorlanmıyorsanız beraber bir şekilde JSP öğrenebilirsiniz. Servlet&Jsp ile bazı web projeleri yapabilirsiniz. Bunları yaparken web contaıner olarak Tomcat, Glassfish gibi Web Server’ları kurcalayabilirsiniz. Sektörde genel de Tomcat kullanmakla beraber ek olarak WAS, Weblogic gibi web server/application server’lar da kullanılmaktadır. Kurcalamak iyi olacaktır.
  • Servlet&Jsp’den sonra değişik alternatifler bulunabilir. Java ekosisteminde farklı frameworklar ile çalışabilirsiniz. Benim önerim Servlet&Jsp’den sonra JPA ve bunun bir implementasyonu olarak Hibernate mesala ORM yapısını öğrenmeniz şeklindedir.
  • Yeni aşama ise bence Web Service konuları olmalıdır. Jax-RS ile RESTful konuları yada Jax-WS konularına bakabilirsiniz. Her yeni öğrendiğiniz yapıları bir projeye ekleyerek devam ediniz.
  • Servlet -> Jsp -> JPA -> Web Service’den sonra proje ve ihtiyaca göre seçimler yapılabilir. Struts, Vaadin, Spring, JSF gibi yapılar araştırılarak ilginizi çekiyorsa onlara da bakabilirsiniz. Tüm bu framewor/teknolojilerde birer uzman kolay kolay olamazsınız zaten. Ancak en azından birkaçında orta üstü bilgi ve beceriye sahip olmanız gerekmektedir.
  • Bir Web developer iseniz mutlaka JS bilmeniz gerekmektedir. Eğer zorlanmıyorsanız html/css/js çalışın. Ek olarak Backbone/Angular gibi MVC frameworklere bakmanız da faydalı olacaktır. Eğer html/css/js’e bulaşmak istemiyorsanız Java EE’de belli bir aşamaya geldikten sonra Vaadin’i inceleyebilirsiniz.

Java SE -> EE serüveni uzun ve yorucudur. Onun için acele etmeyerek, anlaya anlaya ilerlemek faydalı olacaktır. Framework’ler dışında her yazılımcının fikir sahibi olması gereken birkaç konu daha vardır. Bunlar Design Pattern ve Algoritma olarak sayılabilir. Design pattern’ların Java SE ve EE de nasıl uyarlandığına bakabilirsiniz. Bu kodunuzu daha performanslı/kullanışlı/esnek hale getirecektir ve belki de en önemli konudur bence. Yani siz istediğiniz teknolojiyi öğrenin ancak uygulamanızda bir sistematik yapı bir design pattern yok ise o kod olmamıstır bkz : Olmuş mu?

Ek olarak öğrendiklerinizi, çalıştıklarınızı kişisel blogunda yazmaya özen gösterin. Bu size hem disiplin olarak hem de sektör açısından hem de yazarken ek yapacağınız araştırmalar ile birlikte bilgi seviyeniz de artık olarak geri dönecektir.

Çalıştığım 1 yıl boyunca sektör de bu tecrübeleri ve tavsiyeler gördüm. Henüz mezun olmamıs bir öğrenci olarak fazla bilmişlik yapmayalım ve yazımızı sonlandıralım.

“Kibrin en kötüsü tevazunun içerisine gizlenmiş olandır” – Aldulhakim Arvasi(k.s)

“İlmi sevmeyende hayır yoktur. Böyle kimselerle dostluk ve bağlılığını kes. Çünkü, ilim kalblerin hayatı, gözlerin aydınlığıdır.” – İmam-ı Şafii (rahimehullah)

~ A.Akkus

1248 Total Views 3 Views Today