Java’yı Nasıl Öğrendim?
Bu yazıya başlamadan önce Bir Yazılımcı Nereden Başlamalı adlı yazımı okumanızı öneririm.
En çok sorulan soruya detaylıca cevap vermek için bu yazıyı yazma gereği duydum.
Java Programlama Dili’ni keşfetmek öğrenmek isteyenlere yol gösterici olması açısından, kendi deneyimlerimi aktararak yardımcı olmaya çalışacağım.
Java’ya Hazırlık
Öncelikle bilmeniz gereken Algoritma’dır. Algoritma biliyorsanız diğer başlıklara geçebilirsiniz. Algoritma sadece Java’nın değil tüm programlama dillerinin temelini oluşturmaktadır. Algoritma kurma yeteneği ne kadar gelişmişse problem çözme yeteneği ve bu poblemi ortadan kaldırıcı yazılımlar yapma işlemi kolaylaşır ve kaliteleşmeye başlar. Algoritmanın yanında matematik, analiz de önemlidir. Matematiğin önemi yazılama yeni adım atan ve “amatör” olarak adlandırılanlar için ilk başta bir şey ifade etmeyebilir ancak ileri seviye programlamalarda katkısı oldukça yüksektir.
Java’ya Merhaba
Java hakkında bilgi edinmem gerekiyordu. Bu bilgi Java’nın kullanım alanları, nasıl bir yapıda olduğu yani kısaca Java’nın ne olduğunu öğrendim. Öğrenmem gerekiyordu çünkü kendimi yenilemem gerekiyordu. O meşhur soruyu bende sordum. “Java öğreneceğim hangi kitabı tavsiye edersiniz?” herkes kendi kitabını söyledi, yorumlar yorum üstüne iyice kafam karıştı. Kendi öğrenme şeklime uygun bir kitap olmalıydı. Öğrenirken daha çok pratik yapabileceğim. Bir ünite hakkında temel bilgileri verdikten sonra detaylıca bol örnekli bir kitap olmasını istedim. Çeviri olmamasına dikkat ettim. Çeviri kitap istemememin sebebi başka kitaplarda yaşadığım talihsizlikler yüzünden. Öğrenme aşamasında eksik yanlış çeviri yüzünden hata yapmak istemezdim. Kendime göre en uygun kitap Kim Korkar Java‘dan oldu. Çok ama çok güzel şekilde anlatılmış ve bol örnek olması pratiğimin gelişmesine katkı sağladı.
Java’da Pratikleşmek
Mantığını ve temel Java’yı öğrendikten sonra bir proje yaparak deneyim sağlamaya başladım. Bir Swing projesi olacaktı. Bu Swing projesinde herhangi bir veriyi veritabanına kaydetmek, silmek güncelleme işlemlerini öğreneceğim gibi Swing uygulaması ile Desktop App’a adım atarak Java’nın derinlerine girmeye başladım. Bu aşamada herhangi bir kitap almadım. Swing gelip geçici bir hevesti Java’yı öğrenmek için basit bir adım. OOP ye yönelmeden veritabanı işlemlerini kullanabileceğim fonksiyonlar oluşturarak pratiğimi tamamladığımı düşündüm.
Java OOP
Nesneye yönelimli programlama bilmek şart, profesyonel bir biçimde çalışmanın şartı. Bu mantığı anlamak adına Swing ile yaptığım uygulamayı OOP olarak yapmaya başladım. İnternetten bulduğum yerli ve yabancı kaynaklı yazıları buldum örnekleri inceledim. İncelediğim örnekleri kendi projeme nasıl uyarlayabilirim oldukça dikkatli davranarak yapmaya çalıştım. Bu arada bilmediğim takıldığım yerleri sorma ihtiyacında ise sosyal kanallardan dilediğim cevaplarıda aldım. Bu anlamda sosyal medya’da ki yeriniz de çok önemli yazılım camiasında az da olsa nazım geçtiği için sorularıma cevap bulabildim. Çok pratik yaptım bu aşamada özellikle birden fazla uygulama geliştirmeye çalıştım. Hala deneyim açısından aklıma geldikçe bazı kodlar yazmaya çalışırım. Bu noktayı iyi kavramak Java’da herşeyi kolaylaştırıyor.
Java Denizi
Hatta okyanus demeyelim. Pratiğimi arttırdıkça neler yapabilirim diye düşünmeye Java Teknolojilerinde kendime en uygun dalın ne olduğunu araştırmaya başladım. Java’nın eşsiz dünyasında kendime yer kapmak oldukça zor oldu. Java Teknolojilerinin ne olduğunu anlamam neden bu kadar çok kavram olduğunu öğrenmem de çileli oldu. JavaSE , J2ME, Java EE, JSF, JSP, JDBC gibi daha bir çok kavramı hazmetmem zaman aldı diyebilirim. Java öyle bir dil ki her ihtiyaça bir çözümü var ve o yüzden bu kadar derya deniz. Ayrıca açık kaynak olması Java kullanan milyonlarca insanın Java Dünyasına katkı sağlama isteği oldukça büyüyen, büyüdükçe de durmayan bir dünya.
Bu dünyanın içine girdikçe Türkçe kaynak gitgide azaldı. İngilizce’nin önemi ortaya çıktı. Belli bir yere kadar Türkçe kaynak bulabildim ancak ilerisinde hep ingilizce kaynaklara yöneldim ve sorularımı ingilizce olarak yöneltmek durumunda kaldım.
Java Teknolojilerinde Web teknolojisini seçtim. Bir Türkçe kaynak aldım. Sadece bir sayfasına baktım ve o kitabı daha da açmadım. (Kitabın ismini sormayınız.) İnternetteki kaynaklardan yola çıkarak yine bir proje yaparak Java Web Teknolojilerine adımımı attım. Deneyim kazanmaya başladıkça daha çok kaynak ihtiyacı hissettim ve ingilizce bir kaynak aldım. Bu kaynağı yaladım yuttum diyebilirim. Örneklerini adım adım yaparak, bakmadan yaparak ve adım adım çalışmasını izleyerek öğrendim okudum.
Web teknolojisi derken nelerden bahsettiğimi biliyorsunuz zaten. Java Server Pages ve Java Server Faces ve Servlet’ten bahsediyorum hatta PrimeFaces’dan . İlk öğrenme sürecim JSP ile başladı. JSP’den sonra Servlet’ler ile çalıştım. Servlet’ler de çok oyalandım diyebilirim. Ardından JSF çalışmalarına başladım. Ve olmazsa olmaz Hibernate ile ilgilenmek durumunda kaldım.
Java Açık Kaynak Felsefesi
Java ya da herhangi bir programlama dili elbet öğrenilir ancak Java’nın bana en büyük katkısı paylaşma isteğimi daha çok artmasına katkı sağladı diyebilirim.
Java Dünyası’na girdikten sonra beni heyecanlandıran güzelliklere denk geldim. O da adını hep duyduğum ama tam olarak ne olduğu hakkında tam bir fikrim olmadığı “Açık Kaynak Felsefesi” oldu. Topluluklar ihtiyaçlarına göre kütüphanelerin geliştirildiği, ihtiyacın olduğu anda kendi projenize dahil edebildiğiniz gibi kullanım amacınıza yönelik değiştirebileceğiniz bir felsefe ile karşılaştım. Bu felsefe ile paylaşmanın önemini de gittikçe kavradım. Paylaşmak bilginin çığ gibi büyümesine bilgi havuzundan içtikçe doymanızı sağlayan bir şey olduğunu Java ile fark ettim diyebilirim.
Uzun Lafın Kısası
Uzun lafın kısası aslında çok çalışmak, bıkmadan hemde. Severek çalışmanında etkisi çok büyük. Programlama dili öğrenmek kolay iş. İlerisinde deneyim kazanmak ve kendini ispatlamak en zor olanı. Bu zor olanı başarmak için çok okumak, her bilgiyi öğrenme isteği yani merak etmekte çok büyük etken. Algoritma yeteneğiniz varsa öğrenilmeyecek bir programlama dili yok. Kendinize asıl sormanız gereken soru aslında herhangi dili öğrenirken yeteri kadar sabrınız var mı? Takıldığınız konularda sabırla çözmeye çalışmak, sorularınıza cevap bulamadığınızda sinirlenmek yerine sabredip öğrenmeye çalışmak.
Java Teknolojilerinde hala öğrenmeye, bu adımları tekrar ederek kendimi geliştirmeye devam etmekteyim/edeceğim. Öğrenmenin sonu yok hele yazılımcıysanız.
Çok güzel bir yazı olmuş Burak. Java dünyasına uzak .Net Framework dünyasından biri olarak öğrenme süreçlerindeki ortak ve farklı noktaları öğrenme şansı buldum. Keyifliydi, tebrikler.
Teşekkür ederim. Ahmet bey.
Teşekkürler burak hocam bir kaç sorum olacaktı;
1.Java web teknolojileri ile ilgili aldığınız ingilizce kaynak hangisi idi?
2.Java temelinden sonra yaptığınız swing projesi hakkında bilgi verebilir misiniz daha başka proje örnekleri önerebilir misiniz?
3.Jsf ile ilgili nasıl bir proje yada projeler yaptınız örnek olarak bir kaç tane söyler misiniz?
Biraz uzun oldu sorularım cevap verirseniz mutlu olurum malum sormadan öğrenilmiyor…
Merhaba Ali. Java ile aldığım yabancı kaynaklı kitaplar şöyle, JAVASE için sunsoft Press Core JAVA. JSP için o’reilly 3 second. Jsf ise Core Jsf Prentice Hall.
İkinci sorunun cevabı aklınıza ne gelirse. Gelir gider defteri olur, stok takip olur amaç sadece pratik yapmak olsun.
Son sorunuz ise JSF için ilk yaptığım şey Telefon rehberi oldu. Sonra bir günlük uygulaması yaptım. En sonda kendim için diyet takibi diye bir program yaptım.
Umarım yeterli bir cevap verebilmişimdir.
Yazin icin cok tesekkurler,Cok kaliteli ve gereken turden bir yazi olmus bu tur yazilarin cok olmasi dilegi ile 🙂 Bir sorum var Servelt+JSP islemlerine girmeden direk JSF+Primeface(video egitimi var mimar aslan)+hibernate uzerinden gidilebilir mi? Bu kodu hakkinda cok farkli yorumlar aldim birde size sormak istedim tesekkurler 🙂
Hakan bey değerli yorumunuz için teşekkür ederim. Sorunuza gelince Servlet JSP konularına girmeden JSF’e giriş yapan arkadaşlarımın sayısı oldukça fazla. Ancak ben temelin öğrenilmesinden yanayım. JSF kullanırken bazı durumlarda Servlet’ler ile uğraşabilirsiniz. JSP olmasa da Servlet kesinlikle bilinmeli. Yani JSF den direk başlasanız bile, muhakkak öğrenme sürecinde Servlet’ler hakkında bilginiz olsun.
Merhabalar Burak bey, Delphi’ye uzun yıllarını ve emeğini vermiş ve hala kopamamış ama artık yavaş yavaş JAVA’ya hatta JAVA’nın üstünden atlayıp direk vaadin’e dalmaya çalışan biri olarak yazınızı ve yazınızdan daha çok sitenize hayran kaldım. Elinize kolunuza sağlık.
Emre bey, Değerli yorumunuz için çok teşekkür ederim. Ufak bir katkım olduysa ne mutlu efendim.
elinize saglık da yani sizce herhangi bi kursa vs. gitmeye gerek yokmu kendi kendinize mi ögrendiniz tamamen ayrıca bilgisayar mühendisi ögrencisi falan mısınız ?
Ne olduğum, ne yaptığım Hakkımda bölümünden öğrenebilirsiniz.
Hocam tüm bu anlattıklarınıza dayanarak kaç aylık bir süreçten bahsediyoruz?
Yaklaşık 1 sene diyebilirim ama hala öğrenme aşamasındayım tam olarak öğrendiğimi hiç bir zaman düşünmüyorum Selim bey.
Değerli bilgileriniz için teşekkür ederim Hocam. Şöyle bir sorum olacaktı size.
Java EE ile web üzerine değilde masaüstü üzerine ilk olarak yönelmek istiyorum bunun için Java EE ‘ nin hangi bölümlerini izlemeyelim bunu anlayamadım bir türlü.Yardımcı olabilir misiniz? yada bir kılavuz gösterebiliri misiniz?
Yanlış birşey söylediysem affola..
İyi Çalışmalar Hocam,
Hocam ben bilgisayar mühendisliği öğrencisiyim, alan derslerimin çoğunda java yazıyoruz, java ya ilgi duyuyor ve kendimi sürekli geliştirmek istiyorum. Yazınız bana dahada fazla gaz verdi diyebilirim öncelikle yazınız için teşekkür ederim. Hocam ben kendimi Java da mobil platform da geliştirmek istiyorum tavsiyeleriniz ve önerileriniz benim için önemli ve düşüncelerinizi merak ediyorum. bu konuda tavsiye ve önerileriniz nelerdir?
Yazınızın katkısı çok büyük oldu gerçekten JSE ‘ yi bende sizin gibi okulum aracılığıyla öğrendim. Saten OOP bilgim lise’den gelmekte bunu iyice Java ile pekiştirdim. Okulum microsoft teknolojilerine yönelsede ben kendimi java’da geliştirme sürecine girmek istiyorum. iş hayatına atılmadan önceki son yılım diyebilirim.Bende JAVAEE ye nerden başlayacagımı bi türlü bilemedim yazınızla beni aydınlattınız çok teşekkür ederim.Sizin takip ettiniz yolu takip edeceğim.
Meslek hayatınızda başarılı olmanız dileğiyle..
Merhabalar,
yazınız çok hoşuma gitti. Şu an ben de java öğrenmeye ve kendimi bu alanda geliştirmeye adadım:)
Elektrik elektronik mühendisliği okuyorum ama mikrodenetleyiciler olsun, mikroişlemciler olsun gözüm hep işin yazılım tarafında.
Kalemine sağlık.
Merhaba. JSP için host bulmakta sıkıntı çekiyor musunuz? Fazla kullanılmadığı için hiç bulaşmak istemiyorum aslında. Beni ikna edebilir misiniz?
Hocam yazınız çok güzel benim içinde rehber oldu ki ben de kim korkar javadanı aldım başladım çok memnun ilerliyorum.
Javayı isteme nedenim daha çok android .. sizce android yazılımları için ne düzeyde java bilgisi gerekli ? yani atlayıp sonra devam edebilceğim kısımlar var mı ? Mesela biri sanırım GUI. androidin farklı olduğu için gerekli olduğunu düşünmüyorlar ?
Kısacası amacım java eğer temel düzey olarak android için yeterliyse javanın temel düzeyini iyice kavrayıp androide geçip sonraki adımlarda java bilgimi daha da geliştirmek istiyorum sizce doğru yol bu mudur ?
Bu yararlı bilgiler için teşekkür ederim. Keyifle okudum.
Fikirlerin ve düşüncelerin yeni başlayanlar için yol gösterici olmuş. Java güzel bir dil.
Merhaba çok yeniym bu konularda swing gibi arayüzler ile oop aynı şeyler değilmi acaba bu konuda bilgilendirebilirmisiniz?
çok yardımcı oldu yayınladığın için teşekkür ederim şuan yazılım bölümünde okuyorum a++ ile geçtim