Java’yı Nasıl Öğrendim?

10312629_10152490043223938_6432979453490371210_n

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.

20 comments

  1. Ahmet

    Ç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.

  2. ali

    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…

    • Burak
      Author

      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.

  3. hakan

    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 🙂

    • Burak
      Author

      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.

  4. C.Emre ÖZ

    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.

  5. hilal

    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 ?

    • Burak
      Author

      Yaklaşık 1 sene diyebilirim ama hala öğrenme aşamasındayım tam olarak öğrendiğimi hiç bir zaman düşünmüyorum Selim bey.

  6. FUrkan

    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,

  7. Ahmet

    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?

  8. Gökhan

    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..

  9. Samet

    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.

  10. Enes

    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?

  11. Burak Mestan

    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 ?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir