java programmer

JAVA ile Programlama

Giris

Bu egitimde iyi bir java programcısı olmak için gerekli olan tüm bilgileri yogun uygulamalar çerçevesinde
inceleyecegiz. Bu bilgileri ögrenirken aslında bilgisayar programcılıgının tüm temellerini de ögrenecek, çalısmamızı
tamamladıgımızda da java programlama dilinin tüm sözdizimi yapısını, dilin kurallarını ve bu dil içerisinde yer alan
temel paketlerin kullanımını rahatlıkla kavramıs olacaksınız. Ayrıca temel kavramları ögrendikten sonra ileri
düzeyde interaktif bir program yazabilmeniz için gerekli olan kullanıcı arayüz tasarımının Java ile nasıl
yapılabilecegini de görecegiz.

Bu Egitim Kimler çin?

Teknik detaylara girmeden önce sunu belirtmek gerekir ki bu çalısma daha önce hiç bilgisayar programcılıgı ile ilgili
çalısmayanlar için çok iyi bir baslangıç ve az çok bu isi bilenler için de iyi bir arsiv olacak sekilde hazırlanmıstır.
Egitim içerisinde en temel kavramları anlatırken hem mevcut bilgilerinizi ilerletecek hem de önceden ögrendigimizi
sandıgımız temel bilgilerinizi tekrarlamıs olacaksınız. Ayrıca arasıra deginecegimiz pratik ipuçları sayesinde de, uzun
zaman harcayarak elde edecegimiz bazı bilgilere, hemen erisme sansına sahip olacagız.

Java Platform Bagımsızdır

Dogasında platform bagımsız olarak çalısan Java uygulamalarımızı ve uygulamaları olusturmak için kullanacagımız
araçları hem Windows hem de Linux isletim sistemlerine yönelik hazırladıgımızdan herhangi bir kısıtlama içerisine
de girmeyeceksiniz.
Bu dersimizde Java programcılıgına giris yapacak ve asagıda listelenen baslıkları ögrenmis olacagız:
* Java nedir? Nerelerde kullanılır?
* Nesne yönelimli programcılık nasıl olur?
* Java paketleri
* Kurulum ve ilk ayarlar
* Java ile bir uygulamanın çalıstırılması
* Nesne kavramı ve sınıf tasarımı
* Temel yazım kuralları
Egitim boyunca ögrenecegimiz tüm bilgileri dikkatlice okumanızı ve sıklıkla tekrar etmenizi öneririm. Ayrıca anlatım
sırasında ve pratik amaçlı verilecek örnekleri de mutlaka kendiniz de yazıp denemelisiniz. Unutmayınız ki iyi bir
bilgisayar programcısı olmak, bir müzik aletini iyi çalabilmeye benzer. Bunu basarmanın en kolay yolu da sayısız
pratik yapmaktır. 1lk baslarda anlamsız ve kolay gibi görünen uygulamaları sabırla yazıp denediginizde ne kadar çok
yere takıldıgınızı farkedeceksiniz. Ayrıca bu pratiklerin ilerleyen haftalarda nasıl bir yetenek kazandırdıgına
inanamayacaksınız 🙂

Nedir Bu Java?

1lk olarak Java programlama dili ve nesne yönelimli programlama teknigi hakkında kısaca bilgi edinmek iyi bir
baslangıç olacaktır.
Adı “Green Project” olarak bilinen bir projenin içerisinde yer alan James Gosling, proje için en uygun dilin
belirlenmesi isini üstlenmisti. 1984’de Sun Microsystems’de göreve baslayan Gosling, çalısmalarına C++ ile baslamıs
ancak bu dilin proje için yeterli olmayacagı düsüncesiyle, yine bu dilin bir türevi olan ve ilk adı “Oak” olan yeni bir
dili gelistirmeye baslamıstı. Daha sonra yerel bir kafeden çagrısım yaparak bu dilin adını Java olarak degistirmistir.
O günlerden bu güne Java halen gelistirilmekte olan ve günümüzde pöpülaritesi tartısılmaz olan bir dil olarak
kullanılmaktadır.

java

Java nesne yönelimli bir dildir

Java nesne yönelimli bir programlama dilidir. Bir programlama dilinin nesne yönelimli olması, dilin kendi özelligi
itibariyle aynı amaca yönelik görevlerin sınıf (class) denilen yapılar içerisinde toplanmasına ve bu prensibe göre
kullanımına izin vermesidir. Nesne yönelimli programcılıgın bir çok avantajı vardır. Bunlardan en önemlisi, bir
projede birbirinden bagımsız olarak tasarlanan sınıf nesneleri kullanılmasıdır. Böylece projeye belli görevlerin
eklenmesi veya çıkarılması projenin bütününe dokunmadan mümkün hale gelebilmektedir.

Bunu bir örnekle daha kolay kavrayabiliriz: Mesela icq benzeri bir program yazdıgımızı düsünelim. Böyle bir projede
kullanıcının karsısına gelecek uygulamanın görüntüsü ayrı bir mödül, sisteme kaydolan kullanıcıların kayıt islerinin
yürütülmesi ve veri tabanında saklanması isi ayrı bir mödül, ag baglantıları ve aga giris çıkıs kontrollerinin
yürütülmesi de ayrı bir mödül olarak tasarlanmakta ve daha sonra birlestirilmektedir. Bu tasarım sırasında herhangi
bir modülde meydana gelen aksama diger mödülleri etkilemeyecektir.
Bundan baska, belli bir görevi üstlenen bir sınıf nesnesi temel alınarak bu göreve yeni eklemeler yapmak (türetme)
Java gibi bir nesne yönelimli programlama dili ile oldukça kolaydır. Örnegin; ileriki konularda bahsedecegimiz
sekilde, siz bir pencere uygulaması tasarlamıs olabilirsiniz. Daha sonra bir baskası sizin tasarladıgınız bu pencereyi
hiç bozmadan kullanarak ve üzerine eklemeler yaparak internet explorer’a çok benzeyen baska bir pencere
uygulaması haline getirebilir. Egitimimiz devam ettikçe zaten bu teknigin aslında ne kadar vazgeçilmez oldugunu
daha iyi kavrayacaksınız.

Java Multithread Programlamayı Destekler

Aynı anda birden fazla isi yürütebilecek fonksiyonların çalısması ancak mutlithread destegi sayesinde mümkün
olacaktır. Java halihazırda buı yetenege sahiptir.

Güvenli ve Saglamdır

Java’da, C ya C++ da oldugu gibi pointer kullanımı kullanıcıya o kadar açık degildir. Bu nedenle pointer gibi kritik
kullanımlar neticesinde dogacak güvenlik problemlerine java da rastlanmaz.
Ayrıca Java’da built-in olarak bulunan birtakım araçlar sayesinde hafıza yönetimi dinamik olarak ele alınmaktadır.
Böylece hafızanın bir süre sonra dolması gibi problemler de Java dili içerisinde engel teskil etmez. Bu araçlardan en
önemlisi Garbage Collector denilen araçtır. Bu araç hafızada tutulan ve artık kullanılmayan nesneleri otomatik
olarak temizler.
Java’nın güvenli olmasının bir diger nedeni de içerisinde sagladıgı çalısma mekanizmasıdır. Bu mekanizmayı söyle
özetleyebiliriz:

Classloader ile gelen güvenlik

Yazılan ve derlenen programlar içerisinde gerekli sınıflar class loader denilen bir araçla programa dahil edilirler.
Ancak Class Loader ag üzerinden gelen sınıflarla lokal makinede yer alan sınıfları ayrı yerlerde tutar. Böylece daha
önceden güvenilen lokal sınıfların üzerine yazılma ihtimali ortadan kalakacaktır.
Ayrıca JVM tarafından yorumlanan byte-code ların da güvenilirligi test edilmektedir. Bu testi byte-code verifier
denilen bir araç üstlenir. Bu islem çalısma zamanı sırasında (run-time) gerçeklestirilmektedir.

Enterprise Uygulamalar çin Gelistirlmistir.

Java sagladıgı platformlar sayesinde dagıtık (distrubited uygulamaları gelistirmek için oldukça uygundur. Dagıtık
uyuglamardan kasıt, sunucu-istemci etkilesimli, veri tabanı kullanan çok katmanlı yapılardır. Bunun için Java
Teknolojilerini incelemek gerekmetedir.