İleri Programlama Dersi 2. Ünite Özet

Java Programlama Diline Giriş

Giriş

Java Programlama Dili, günümüzde hemen hemen her sektörün ihtiyaçlarını karşılayan masaüstü uygulamaları, web uygulamaları, servisler ve Android uygulamaları geliştirmeye olanak sağlayan nesneye yönelik programlama dilidir.

İlk olarak 1991 yılında elektrikli ev aletlerinin birbirleri ile iletişimini sağlamak için James Gosling tarafından proje olarak geliştirilmiştir. Halka açık ilk sürümü Java 1.0 1995 yılında çıkmıştır.

Java’nın geliştirilmesindeki amaç yazılan kodun bir kere yazılıp sonra birçok işletim sisteminde çalıştırılabilmesidir. Bu çerçevede sahip olduğu özellikleri şu şekilde sıralamak mümkündür:

  • Nesneye yönelik programlama dili: Java içerisindeki ilkel veri tipleri dışında tüm elemanlar nesnedir.
  • Platform bağımsızlığı: Java programlarının çalıştığı sanal makineler yazılan programın doğrudan işletim sistemine erişmemesi için kullanılır.
  • Sağlamlık: güçlü hafıza yönetimi yeteneği sayesinde programcıya hataları yakalama olanağı sağlar.
  • Dağıtık yapıdadır: Java ortamında programın bütün parçaları dağıtık bir şekilde olabilir.
  • Çevrilen ve derlenen dil: Java kaynak kodu, bayt kod formatına dönüştürülür ve bu format hedef platforma bağımlı değildir.
  • Otomatik hafıza yönetimi: yeni nesneler oluşturulduğunda hafızanın bölüştürülmesi kontrol edilmektedir. Aktif işaretçisi olmayan nesneler bellekten otomatik olarak silinmektedir.
  • Basittir: Programcının tehlikeye düşebileceği durumları ortadan kaldırmak ve riskleri minimize etmek için birtakım yöntemler geliştirilmiştir.
  • Çoklu-iş parçacıklarını destekler: Çoklu-İş parçacıklarını (multithreaded) destekliyor olması, programın aynı anda birden fazla işi yerine getirmesine olanak sağlamaktadır.

JavaScript ile Java arasında; isimleri, yazılım şekli ve standart kütüphanelerindeki benzerlikler dışında herhangi bir bağlantı yoktur ve iki dilin semantikleri (anlam bilimi) çok farklıdır.

Java Platformu

Java sadece bir programlama dili değil aynı zamanda bir yazılım platformudur. Bu platform, işletim sistemi üzerinde çalışan, uygulamalara çeşitli servisler veren, bunu her işletim sistemi için standart bir biçimde yapabilen bir yapıdır. Java programlama dili ise, bu platform üzerinde yazılım geliştirmek için kullanılan dildir. Java programları aşağıda sıralanan aşamalarla geliştirilir:

  • Yazılımcı java kodunu yazar
  • Yazılan kod derlenir ve sonucunda bayt kod denilen sanal makine kodu ortaya çıkar.
  • Bayt kod java sanal makinesi tarafından işletilir. Bu aşamada bayt kodlar teker teker yorumlanabileceği gibi anında derleme kullanılarak da yapılabilir.

Programlama dili, makine ile insan arasında iletişim kurmak için kullanılan bir dildir. Programcı bilgisayara istediklerini yaptırmak için bir dil kullanmalıdır ve bu dil ne kadar konuşma diline yakınsa programcı için o kadar kolay olur. Bilgisayar işlemcisinin dili ise sayılardan oluşan bir makine dilidir. Önceden programcılar her bir işlemci türü için sayılardan oluşan farklı kodlar yazmaktaydılar ve bu kodlar başka işlemcilerde çalışmazdı. Ancak şimdi programlama dili sayesinde yazılanlar makine diline çevrilir ve yazılan program birden fazla işlemci üzerinde çalıştırılabilir.

Programlama diliyle yazılan programa “kaynak kodu (source code)” ismi verilmektedir. Java diliyle yazılan kaynak kodları uzantı olarak “.java” uzantısı ile kaydedilmektedir. Makine dilinde ifade edilen koda ise “ikili kod (binary code)” denilmektedir. Programlama dilinden makine diline çevirme işlemi iki şekilde yapılmaktadır. Bunlardan birincisi “anında”, ikincisi ise “önceden” çevirme işlemi olarak isimlendirilmektedir. Anında çevirme işlemi, programlama dilindeki ifadeleri bir yandan okuyup bir yandan makine diline çevirmek demektir. Bu işleme “yorumlama (interpretation)” denilmektedir. Önceden çevirme işlemi ise, programlama dilindeki ifadelerin çalıştırılmadan önce makine diline çevrilmesi, sonra da çalıştırılması anlamındadır. Buna da “derleme (compilation)” ismi verilmektedir. Derleme işleminin amacı aslında çalışabilir bir kod elde etmektir. Derlemenin yorumlamadan en önemli farkı hızlı olmasıdır

Java bayt kod dosyaları uzantı olarak “.class” uzantısı ile kaydedilmektedir. Yazılan kaynak kod, derleme işlemi yapılarak bayt koda dönüştürülmektedir. Sanal işlemci ise bu bayt kodu makine koduna çevirme işlemini programın çalışması esnasında yapmaktadır. Bu sanal makineye “Java Sanal Makinesi (Java Virtual Machine - JVM)” ismi verilmektedir. Java’da platform bağımsızlığını sağlayan bileşen JVM’dir. Java ilk çıktığı zamanlarda yavaş olduğu için bazı yazılım geliştirme şirketleri “anında derleme (just in Time – JIT)” araçları üretmeye başladılar, ancak işlemci hızı ve bellek miktarlarının artışıyla anında derleme yazılımları popülerliğini kaybetmiştir.

Java diliyle yazılmış bir programın çalışması için mutlaka Java yorumlayıcısı olması gerekmektedir. Java uygulamasının çalışması için gerekli minimum gereçleri içeren yapıya “Java Çalışma Ortamı (Java Runtime Environment – JRE)” adı verilmektedir. Java programını çalıştıracak cihazda JRE kurulu olması gerekmektedir.

Java Geliştirme Paketi, programcıların yazılım geliştirme sürecinde gerekli olan bileşenleri içeren pakete verilen isimdir. JDK, bir JVM ve konuşlandırma ortamındaki sınıf kütüphanelerinin hepsinden oluşmaktadır. JDK denilen yapı içerisinde, Java derleyici, Java yorumlayıcı, uygulama geliştirme araçları, Java API kütüphaneleri, Java geliştiricileri tarafından Java uygulamaları geliştirmek için kullanılan dokümantasyonlar ve ayrıca JRE, JVM bulunmaktadır. Java yazılımlarında kullanılan yazılım kütüphanelerine genel olarak API denir. Java Applet, bayt koda dönüştürülmüş küçük boyutlu Java programlarıdır. Java Plug-in ise JRE ile yüklenen ve internet tarayıcısında çalışması gereken Java uygulamasını çalıştıran eklentidir. JSP: Java ile dinamik web sayfaları oluşturmak için hazırlanan uygulamalara Java Server Pages denilmektedir. JSF: Model Görünüm Kontrolcüsü (Model View Controller - MVC) mimarisine uygun olarak hazırlanmış ve Java ile web uygulamaları geliştirmeye olanak tanıyan bir çatıdır. Java Çöp Toplayıcısı (Garbage Collector) sayesinde sanal makine akıllı bir biçimde kullanılmayan bellek bölümlerini belirli aralıklarla ya da uyarlamalı yöntemlerle otomatik olarak temizlemekte ve sisteme geri iade etmektedir.

Kısaca Java,

  • Bir programlama dili,
  • Bir geliştirme ortamı,
  • Bir uygulama ortamı,
  • Bir kurulum ortamıdır.

Bu anlamda Java, klasik programlama dillerinden farklı olarak çok geniş bir yazılım geliştirme ekosistemi sunmaktadır

Java Tümleşik Geliştirme Ortamı Kullanımı

Java JDK kurulu bir sistemde, Java kaynak kodları yazmak için kullanılan işletim sisteminde bulunan herhangi bir metin editörü bile yeterli olabilmektedir. Bilindiği gibi kaynak kod derleme ve yorumlama aşamalarından geçerek çalışır hale getirilebilmektedir. Kaynak kodu yazarken Java diline has sözdizimi ve kuralları geçerlidir. “Tümleşik Geliştirme Ortamları (Integrated Development Environment - IDE)” sayesinde programcı hızlı ve rahat bir şekilde yazılım geliştirebilmekte, geliştirme sürecini organize edebilmekte ve bu sürecin daha verimli kullanılması sağlanabilmektedir. Bir tümleşik geliştirme ortamında olması gereken özellikleri şu şekilde sıralamak mümkündür;

  • Programlama diline göre sözdizimi renklendirmesi yapabilen kod yazım editörü.
  • Kod dosyalarının hiyerarşik olarak görülebilmesi amacıyla hazırlanmış gerçek zamanlı bir çizelge.
  • Tümleşik bir derleyici, yorumlayıcı ve hata ayıklayıcı.
  • Yazılımın derlenmesi, bağlanması, çalışmaya hazır hale gelmesi ve daha birçok ek işi otomatik olarak yapabilmek amacıyla küçük inşa araçları.

Eclipse çalıştırıldığında projenin çalıştırılacağı ortamın seçilmesi istenmektedir. Bu klasör genellikle “çalışma alanı (workspace)” olarak adlandırılmaktadır. Açılış karşılama ekranı üzerinde kısaca;

  • gözden geçirme (overview),
  • öğretici dokümanlar (tutorials),
  • örnekler (samples)
  • yenilikler (what’s new)

olmak üzere bir takım ekran sekmeleri bulunmaktadır. Proje ekranına geçmek için “tezgah (workbench)” tıklandığında boş Eclipse çalışma ortamı gelecektir. Yeni bir Java projesi oluşturmak için dosya menüsünden sırasıyla “File->New->Project” seçilerek proje oluşturma sihirbazı açılacaktır. Java projesi oluşturabilmek için en üstte olan “Java Project” seçilerek ilerleme yapılmalıdır. Java projesi oluşturma ekranında en üst kısma proje ismi yazılması gerekmektedir. Proje isminin alt kısmında ise bu projede hangi Java sürümüyle çalışılması, proje içerisindeki klasör ve sınıflar, projenin hangi çalışma alanına kaydedileceği gibi ayarların yapıldığı kısımlar bulunmaktadır. Java projesi için eklenmesi istenen kütüphaneler ve yardımcı kaynakların eklenebildiği ekranda projede kullanılacak temel kütüphaneler eklenmiş durumdadır, bunu görmek için “kütüphaneler (libraries)” sekmesi tıklanarak görülebilir. Gerekli ayarlamalar yapıldıktan sonra “tamamla (finish)” tuşu tıklanarak proje oluşumu tamamlanmalıdır. Bu aşamalar sonrasında proje oluşturulmakta ve “proje gezgini (Project Explorer)” penceresi içerisinde proje dosyaları görülebilmektedir. Burada görülen “src” klasörü, kodlarının yazılacağı sınıfları (Class) barındırmaktadır. “src” klasörüne sağ tuşla tıklayarak sırasıyla “New->Class” seçilerek yeni bir sınıf oluşturulabilmektedir. Bu ekranda “paket (package)” kısmı belirli sınıfları bir arada tutan klasörleri göstermektedir. “İsim (Name)” alanı ise oluşturulacak olan sınıfa isim verilen yerdir. Burada Java’da sınıf isimleri büyük harfle yazılmaktadır.

Java Sözdizimi ve İlk Java Uygulaması Yazımı

Programlama dillerinin de kendi içinde belirli kuralları vardır. Bu kurallara söz dizim denilmekte ve bunlara uyarak derleyiciye ve yorumlayıcıya kodu doğru bir biçimde ifade edilmelidir. Kod yazımında bu kurallara ihtiyaç duyulmasının nedeni aşağıda verilmiştir.

  • Yazılım üretimindeki %80’lik bir zaman dilimi, kod bakımına (maintanence) harcanmaktadır.
  • Çok az yazılım, kullanım zamanı boyunca ilk programcısı tarafından geliştirilmektedir.
  • Mühendislerin yeni kodu hızlı ve verimli bir şekilde anlamasının sağlanması önemlidir.
  • Kod yazma gelenekleriyle yazılımın okunması ve anlaşılması kolaylaşmaktadır. 
  • Yazılan kodu piyasaya açmak istendiğinde daha anlaşılır olacağı için daha kolay destek bulunabilmektedir.

Sınıf temelli nesneye yönelik programlama dili olan Java’da “{ }” şeklinde süslü parantezler içerisindeki bloklarla kodlar yazılmaktadır. Aynı zamanda “++” arttırma ve “--” azaltma işleçleri bu dilin belirgin özelliklerindendir. Kod satırlarının ilk satırı “//” işareti ile başlayan açıklama satırıdır (comment line). Açıklama satırları programcının programlama dili haricinde kendi anlayacağı bir dille yazmış olduğu satır ve satırlardan oluşmaktadır. Bu satırlar derleyici tarafından göz ardı edilmektedir. Açıklama satırından sonra gelen ve “public” olarak belirlenen erişim belirleyicisi o sınıfın bu sınıf haricinde diğer sınıflar ve paketlerden erişilebilirliğini yani dışarıdan erişilebilir olduğunu ifade etmektedir. Her Java programının mutlaka en az bir sınıfı ve her sınıfın da bir ismi olmak zorundadır. Aynı zamanda sınıf isimlerinin ilk harfi büyük harf ile başlamalıdır. Java’da özel amaçlı sözcükler (reserved words) veya anahtar kelime (keywords) olarak bilinen yapılar mevcuttur, bunlar derleyici tarafından bilinirler ve başka bir amaç için kullanılmazlar. Nesneye yönelik programlama konusu içerisinde bir kavram olan metotlar sınıfların içerisindeki davranışsal yetenekleri kazandıran yapılar olup nesneye hareketlilik katan yapıları temsil etmektedir. Süslü parantez “{“ işaretiyle sınıflar ve metotlar gibi kod bloğu içerecek yapılar başlar ve diğer “}” işaretiyle de sonlanır. Java dili içerisinde de “karakter dizileri (Strings)” karakterlerin yan yana gelmesiyle oluşan veri tiplerinden olup çift tırnak işareti içerisinde yazılmak zorundadırlar. Java’da her satır sonunda noktalı virgül “;” işareti, satır sonlandırıcı rolü üstlenmekte, o satırın sonuna gelindiğini ve o satır komutlarının bittiğini ifade etmektedir. Tümleşik geliştirme ortamlarının avantajlarından biri olarak derleme, yorumlama, çalıştırma aşamaları için tek tuşla kolaylıkla bu işlevler yapılabilmektedir. Eclipse ortamında menülerin altında hızlı menü tuşları içerisinde play tuşuna benzer bir tuş görülmektedir. Bu tuşa tıklayarak uygulamanın çalışması sağlanabilmektedir.