
JAVA DERSLERİ ANASAYFA SIRADAKİ DERS
Konu başlığına tıklayarak detayları görebilirsiniz!!!
Java dünya çapında kullanılan açık kaynak kodlu, platform bağımsız çalışabilen, çok işlevli bir nesnesel proglama dilidir.
- Ücretsiz olarak kullanılabilmesi ve Netbeans/Eclipse gibi çok güçlü ama ücretsiz IDE'lerle kodlanabilmesi.
- Java'nın güçlü yanlarından biri de mobil ve web alanında geliştiriciye bir çok seçenek sunmasıdır. Mobilde Android ve iOS, web'de JSF, Spring, Hibernate ve benzer teknolojiler ile entegre uygulamalar yazabilirsiniz. Mobil, Web, masaüstü uygulamaların yanısıra oyun geliştirmeleri için de kullanılabilir.
- Platform bağımsız olarak çalışabilmektedir. Yani herhangi bir işletim sistemine bağlı olarak çalışma zorunluluğu olmaması.
- Geniş bir kütüphaneye sahip olması ve api desteği konusunda sıkıntı yaşanmaması. Network kütüphaneleri, xml kütüphaneleri, database kütüphaneleri gibi örnekler olarak verilebilir.
- Yaygın kullanımı nedeniyle yardıma ihtiyacınız olduğunda internette bir çok kaynağa ve yardımcı olabilecek dokümana kolayca ulaşabiliyor olmanız.
- Açık kaynak kodlu olması nedeniyle modüller veya komple programlar kullanarak başka yazılımlara kolay entegre olabilir, yan ürünler geliştirerek de para kazanabilirsiniz.
- Başka bir dil öğrenmek istediğinizde (özellikle C++ konusunda) sizin için daha kolay anlaşılır olabilmesi.
Nesnesel programlama (Object Oriented Programming) yazılım içerisinde birbiriyle ilişkili çeşitli nesneler (objects) oluşturularak bu nesnelerin etkileşime girmesinin sağlanmasıdır.
Nesnesel programlama özetle nesne (object), bu nesnelere bağlı işlevler ve dış dünyayla etkileşimlerini sağlayan metod (function), nesnelerin özellikleri (attribute) ve nesnelere ait yapının oluşturulduğu sınıf (class)'lardan oluşmaktadır. Aynı sınıf içerisindeki tüm nesneler o sınıf içerisindeki metodlara sahip olurlar. Fakat tıpkı gerçek dünyadaki gibi nesnelerin bazı özellikleri birbirinden farklı olabilir. İnsan, ders, sınav gibi objeler oluşturarak birbiri arasında ilişki kurabilir ve birinin özeliiklerini diğerinde kullanabilirken, herbiri için ayrı ayrı benzersiz (unique) özellikler de belirleyebiliriz. Yani basit bir dille anlatacak olursak İnsan ve Hayvanı bir nesne olarak düşünürsek her ikisinin ortak özellikliği olarak nefes almayı belirleyebiliriz. Ama İnsan nesnesi konuşma özelliğine sahip olabilirken bu hayvan nesnesi için geçerli bir özellik olmaz.
Bir örnekle javada ekrana birşeyler yazdırmamımızı sağlayan System.out.println komutunu ele alacak olursak;
System -> sınıf, out -> nesne, println - > metoddur.
Nesnesel programlamada bu noktada üç kavram çıkmaktadır karşımıza;
Kuşatma (Encapsulation): Nesneye ait özelliklerin, metotların ve nesne içi etkileşimin gerekmediği sürece nesnenin dışına çıkmaması durumudur. Yani dışarıdan bakıldığında nesnenin sadece diğer nesnelerle etkileşim gerektiren parçaları görülür. Örnek olarak otomobili gaz, fren, vites ve direksiyon hakkında fikri olan herkes kullanabilir.
Çok Biçimlilik (Polymorphism): Bir işlevin, işlemin, metodun değişik nesneler tarafından aynı ya da değişik biçimlerde kullanılabilir olmasıdır. Örnek olarak “fren” adlı bir metod otomobil, bisiklet ve tren gibi farklı nesneler için ortak olarak kullanılabilir.
Kalıtsallık (Inheritance): Sınıfların genelden özele doğru sıradüzensel şekilde düzenlenmesidir. Örneğin “Taşıt” adıyla bir temel sınıf oluşturulabilir. Bunun alt sınıfları araba, motosiklet, kamyon, otobüs olabilir. Araba sınıfını da yine aile arabası, spor araba gibi ayırabiliriz. Taşıt sınıfında da ortak özellikler tanımlanabilir. Mesela tekerlek sayısı farklı sınıflarda farklı değerler alarak kullanılabilir.
Bu konulara yeri geldiğinde daha detaylıca değineceğiz ama aşina olmanız ve bir fikir edinmeniz açısından java programlarının genel yapısıyla ilgili olarak, yani bir java programını oluşturan ana elemanlarla ilgili giriş yapalım istedim.
Uygulama yazılımları ve uygulamacıklar (applets) olarak iki tür Java programı vardır. Aralarındaki fark uygulama yazılımları bilgisayarda çalıştırılırken, uygulamacıklar ise web üzerinden diğer bilgisayarlarla iletişime geçip onlar üzerinden çalıştırılırlar.
JAVA VIRTUAL MACHINE - JVM (Java Sanal Makinesi): Java programını çalıştırdığımız işletim sistemi (Windows, Mac vs.) ile java programı arasında oluşturulan bir sanal katman gibi düşünebiliriz. Bu sayede kodlarımız bu katman üzerinde çalışacaktır. Java Derleyicisi Java Bayt kodu adı verilen bir program yaratır (.class uzantılı dosyalarımız). Bu program herhangi bir bilgisayara ait olmayıp JVM adı verilen bir hayali bilgisayarın makine kodunu yaratır.
JAVA RUNTIME ENVIRONMENT - JRE: Yazdığımız Java kodlarının JVM (Java Virtual Machine) tarafından anlaşılmasını sağlayan kütüphaneleri içerir. İleride göreceğimiz üzere Java içerisinde birçok kütüphane (library) yani hazır yazılmış ve bize yardımcı olacak kodlar içerir. JVM tek başına herhangi bir işleve sahip değilken JRE byteocode'ların çalışması için ek bileşenlere sahiptir.
JAVA DEVELOPMENT KIT - JDK (Java Geliştirme Kiti): SDK (Software Development Kit) olarak da karşınıza çıkabilir. Java yazılımı geliştirmek istiyorsanız bu olmazsa olmazınızdır. Java'da yorumlama ve derleme gibi gorevleri üstlenmiş organ gibi düşünebiliriz. Yazılımımızı çalıştırmaya kalktığımızda debug (hata ayıklama) ve compile (derleme) işlemleri JDK sayesinde gerçekleştirilir. Bu indirilip kurulması gereken bir java bileşenidir.

KÜTÜPHANELER (Libraries): Çeşitli kitaplıklar içeren java içerisinde hazır halde yazılmış olan kodlardan ve bize çeşitli projelerde yardımcı olmak amacıyla başka geliştiriciler veya kişiler tarafından oluşturulmuş kod kümecikleri gibi düşünebilirsiniz. İlerde göreceğimiz üzere javanın kendi kütüphaneleri de mevcuttur. Bu kütüphaneler bizi ek kod yazmaktan kurtaran yardımcı bileşenlerdir. Kütüphaneleri kullanabilmemiz için yapmamız gereken bu kütüphaneleri projemizde Libraries kısmına eklemek ve ayrıca sınıfımızda yani class'ımızda bu kütüphaneyi kullanmak istediğimizi belirtmektir.
SINIF (Class): Daha öncede belirttiğimiz üzere Java nesnesel bir programlama dilidir. Nesneleri oluşturan sınıflardır. Sınıfları da ingilizce anlamlarının karşılığı olan class kelimesiyle tanımlıyoruz. Sınıflarda nesnelerin genel özelliklerini belirtiyoruz. Mesela cep telefonu diye bir sınıfımız olduğunu düşünürsek içerisinde ekran boyutu, hafızası, rami gibi değişkenlerle özelliklerini tanımlayabiliriz.
DEĞİŞKENLER (Variables): Değişkenler sınıflar içerisinde bazı özellikleri tanımladığımız veri türleridir. Integer (Sayı), String (text) gibi değişken türleri mevcuttur. Yukarıda verdiğimiz örnekteki gibi Cep Telefonu ile ilgili bir sınıf oluşturduğumuzda içerisinde değişkenler aracılığıyla ekran boyutu, hafıza, ram gibi özellikleri tanımlarız.
METHODS (Metodlar): Metodlar Nesneler veya değişkenler üzerinde işlem yapmamızı sağlayan yani bir bakıma yazdığımız kodlara dinamiklik kazandıran kodlardır. Yukarıdaki cep telefonu örneğinden gidecek olursak; sınıf ve değişkenleri tanımladıktan sonra telefonu aç gibi bir metod oluşturarak telefonu açmak için yazdığımız kodları bir metod olarak düşünebiliriz. Kimi yazılımcılar tarafından fonksiyon (function) olarak dillendirilebilir.
