Java ismi bir programla dilini ve bir platformu belirtir. Kelime anlamı ise ünlü Java ambleminin hatirlattığı gibi, "acı kahve"dir. Java, Sun Microsystems'de bir grup yazılım uzmanı tarafindan geliştirilmektedir. Bir şirket tarafından geliştiriliyor olması onun tescilli bir dil olması anlamına gelir, ancak görece "açık" olarak geliştirilen Java'nın tescilli olmasından Java'yı kullanan hiçbir programcı şikayet etmez. Sun, Java Platformunu (Java Sanal Makinesi - Java Virtual Machine) ve Java programlama dilini ihtiyaçlara göre yeniler.


Niçin Java ?

Devamlı değişen bir programlama dilini kullanmak biraz ürkütücü gözükebilir, ki bu haklı bir kaygıdır. Java ile yazdığınız büyük ölçekli bir yazılımı Java dilindeki değişikler doğrultusunda, hiçbir özelliğini değiştirmeseniz bile, yeni Java platformunda çalışması için yenilemeniz gerekebilir. Çünkü zamanla dil, eskiden kullanılan bazı metodları ya da biçimleri özellikle güvenlik sebebiyle yeni sürümlerinde kullanılmasına izin vermeyebilir. Ancak gelişen, özellikle de olumlu yönde gelişen bir dil olması, heyecanlı bir programlama yaşatsa da artıları sayesinde çok tutulmasını sağlar. Java'nın bu kadar çok tutulmasının en genel sebebleri şunlardır:

Basitlik: Java öğrenmesi kolay bir dildir. Biraz programlama geçmisi olan özellikle de C++ gibi nesne tabanli bir dilde deneyimi olan kisi için Java'yi anlamak çok kisa bir zaman alir. Ayrica yazilan kod da son derece basit ve anlasilabilirdir. Bir çok yildiz (*) ve 've isareti' (& içeren C++ kodunun yaninda Java kodu siir gibi görünür.

Mimariden Bağımsız Olma : Java ile yazilan programlar her platforma çalisir. Programi baska platformlara aktarmak için güç sarfetmeye gerek yoktur. Bu sayede ayni anda, örneğin PC üzerinde Windows veya Linux ve Macintosh üzerinde MacOS ile çalisan kullanicilar tamamen ayni program araciliği ile birbirleri ile kağit oyunu oynayabilirler.

Nesne Tabanlılık : Java Smalltalk'dan bu güne uzunan, "nesne tabanlilik" ilkesini zorunlu bir altyapi olarak kurmustur. Bugün en yaygin kullanilan nesne tabanli programlama dillerinden biri olan C++'da nesne tabanli kod ile nesne tabanli olmayan kod bir arada yazilabilir; ancak Java'da bu yapilamaz. Java'da yeni bir yapi nesneler ile olusturulmak zorundadir. Bu yapi programciyi nesne tabanli düsünmeye zorlayacağindan üretkenliği arttirir.

Dağıtık Programlama: Java'da dağitik programlama dil ile gelen bir özelliktir. Java'nin gelistirilken Internet'te dağilma özelliği hep göz önüne alinir. RMI (Remote Method Invocation - Uzak Yöntem Uyarimi) mekanizmasi sayesinde örneğin, sunucu istemcide çalisan Java programindaki yöntemi çağirip göre döndürdüğü değeri alabilir.

Güç : Java sadece küçük programlar yazmak için değildir. Java ile büyük araçlar tasarlanabilir. Aslinda Java ile büyük araçlar tasarlamak bir çok anlamda daha kolaydir. Kaba bir yaklasim, ayni isi yapan Java programinin C++ programindan yari yariya daha kisa bir sürede yazilabileceğini gösterir.

Çok Görevlilik (Multithreaded): Java ile çok görevlilik dilin kendisiyle gelir, ayri bir kütüphane kullanmaniza gerek yoktur. Bu sayede kolayca, program içerisinde programin birden fazla ufak kisimlari arka planda, ya da ayni anda çalisabilir.

Hatasız kod: Java ile çalisma zamaninda ortaya çikan (runtime) hatalar çok zor gerçeklesir. Pek çok hata kodun derlenmesi sirasinda ortaya çikar ve düzeltilir. Güçlü tip denetimi sayesinde bir nesnenin baska bir nesne yerine kullanilabilme durumlari kati bir sekilde belirlenmistir. Çalisma zamaninda ortaya çikabilecek hatalar (dosya bulunamamasi, Internet bağlantisi kurululamamasi) çerçevelenmistir ve programci istisna yakalama mekanizmasi (Exception Handling) ile bu hatalari dikkate almaya zorlanmistir. Çok kla*** "if (a=5)" hatasi Java'da gerçeklesmez.

Güvenlilik : Java programları çok çesitli güvenlik seviyeleri ile bir çok ihtiyaca cevap verecek sekilde çalisabilir. Bu özelliği sayesinde Internet bulunan Java appletleri güvenle çalistirilabilir.



Java Nasıl Çalışır ?

Java'nın nasil çalıştığını anlamak için önce başka dillerin nasıl çalıştığını anlamak gerekir. Bunun için Java dilinin kendisinden pek çok güzel özelliğini aldığı C ya C++ dilini seçilebilir.

Programcı tercihen bir program geliştirme arabirimiyle programın kaynak kodunu yazar. Yazdiği bu program derleyerek çalıştırılabilir bir dosya elde eder. Windows çalisma ortamında çalıştırılabilir dosyalarının uzantıları exe ya da dll'dir.

Ancak bu exe dosya baska bir platforma, örneğin Linux'e birebir kopyalansa da orada çalistirilamaz. Bunun sebebi programin Windows için "derlenmis" olmasidir. Yani exe dosyasi içerisinde Windows isletim sisteminin anlayabileceği "makine kodlari" içermektedir.

Programi Linux'da çalıştırmak için kodun Linux için yeniden derlenmesi gerekir. Ancak çoğu zaman kod üzerinde değişiklikler de yapmak gerekir. Pencere arabirimini kullanan bir program için (ki bilindiği gibi artık hemen her program böyledir) kodun çoğunun sıfırdan yazılması gerekir.

Java ile yazılmış bir program ise her platformda çalışır! Oldukça iddiali bir söz, ancak istisnalar dışında geçerli de. Bu Java'nin "Bir kere yaz, her yerde çalıştır!" ilkesini açıklar.


Java Sanal Makine

Java ile çalışan bir program her platformda çalisir sözü teknik anlamda tam olarak doğru bir tanimlama olmayacaktir. Aslinda bir Java programi sadece tek bir platformda çalisir: Java Sanal Makine.

Java Sanal Makine, (Java Virtual Machine - JVM) isletim sistemi üzerinde mini bir isletim sistemi olarak çalisir. Sanal makine özellikleleri Sun tarafindan belirlenmistir, isteyen her üretici bir sanal makine yazabilir. Internet Explorer altinda Java apletlerini Microsoft'un IE'ye entegre ettiği Microsoft Virtual Machine sayesinde çalistirabiliyoruz. Ya da el bilgisayarlari için KVM de basarili bir sanal makinedir. (Aslında Sun Java, Java 2, J2SE, J2ME ve J2EE isimlerini tescil ettirmiştir.)


Java API

API (Application Programming Interface - Uygulama Gelistirme Arabirimi) dilin sunduğu önceden programlammis ve iyi tanimlanmis arabirimlerle programci sunulmus çesitli islevlerin genel adidir. Örneğin programci sinüs fonksiyonunu temel calculus bağlantilari ile elle yazmak zorunda kalmayip bunu "java.lang.Math" paketi sayesinde doğrudan kullanabilir.

Kişisel bilgisayarlar için yazılmıs API içerisinde bulunan paketlerden bazılarının görevleri şunlardır:

- Sayı ve yazı işlevleri
- Dosya yazma ve okuma
- Resim oluşturma
- Arabirim tasarlama
- Ağ işlevleri
- Güvenlik
- Veritabanı erişimi


Özellikle güvenlik ve ağ ile ilgili paketler Java'nin Internet üzerinde çok popüler ve kullanışlı olmasını sağlamıştır.


java Dosyaları: java dosyalari programlarin kaynak kodunu içerir. Bir .java dosyasinda sadece bir sinif tanimlanmasi Java'nin en çok dert yanilan özelliklerinden biridir.


class Dosyaları: Bu dosyalar derlenmis "bytecode"lardir. Programin JVM için önergeleri bu dosyalar içerisinde bulunur. Dosya herhangibi JVM'de çalisabilir.


jar Dosyaları: Bu dosyalar .class dosyalarinin toplanip ***istirilmis halidir. Özellikle appletler için daha kolay bir tasinabilirlik saglar.



Java ile Neler Yapabilir ?

İletişim teknolojilerin hızla kendini yenilemesi ve farklı teknolojik araçları (Windows kurulu masaüstü bilgisayari, Linux kurulu masaüstü bilgisayari, cep telefonu, el bilgisayari, televizyon vs.) ortak bir dilde konusturma istegi Java teknolojisinin bir çok büyük sirket tarafindan desteklenmesini sagliyor. Microsoft'un yeni .NET stratejisinin en büyük rakibi olan Java teknolojisi'ne destegini çekip Windows XP ile IE altinda Sanal Makine'yi kaldirmasi bu durumda pek sasirtici olmuyor. Microsoft'un XP'den JVM'yi kaldirmasi, XP altinda Java programlari ya da apletleri çalistirilamayacagi anlamina gelmiyor, aksine kullanicilar Microsoft sanal makinesinden daha iyi yazilmis Sun'in kendi sanal makinesini kurduklarinda daha işlevsel bir ortam elde etmiş oluyorlar.

Java teknolojisi sadece küçük appletler değildir. Bu teknolojinin önemli terimlerini de açıklamakta yarar var.

Java Sunucu Sayfaları (Java Server Page - JSP): Java diliyle bütünle*** yazilan ag sayfalaridir. Java sunucu sayfalari sayesinde dinamik ag içerigi saglanir. Prensipte Microsoft'un ASP teknolojisine benzer ancak ASP sayfalarinin sundugu nesneler sadece Microsoft platformunda çalisan COM nesneler iken JSP sayfalarinda platform bagimsiz Java nesneleri kullanılır.

Servlet: Istem ile çalisan Java ag sayfalari gibi sunucularda kullanilir. CGI teknolojisinin alternatifidir. Servlet kendisinden istenen bilgiyi verir ya da kendisine gönderilen bilgiyi işler.

JDBC: Veritabanlarina SQL istemler gönderme ve sonuçlari almak için kullanilan API.

Java Bagimsiz Arabirimi (Java Native Interface - JNI): Java ile C, C++ ya da assembly gibi dillerin birlikte kullanilmasini saglayan arabirim. Bu sayede Java'nin yapamadigi islevler de (örnegin platform bagimli islevler) de Java ile kullanilabilir.

JINI: Hatalara karsi dayanikli sistemler, topluluklar ya da dagitik servisler kurulmasi ve bunlarin birbiri ile ***i iletisim kurmasini saglayan teknoloji. JINI kullanilarak olusturulmus yazicilari, tarayicilari ve merkezi dosya sunucusu ile kurulu bir yerel agi bu teknolojinin kullanim alanina örnek verebiliriz.

EJB: Hareketler (transaction) ya da veritabanina baglanma gibi kari*** islemleri sunucu tarafinda çalistiran ve orta derecede erisimi kolaylastiran, çok platform destekli program bilesenleri.

Java platformunda yazılmış pek çok da API bulunmaktadır. Internet için en önemlileri şifreleme gibi işlemleri gerçekleştirir. Programlar için olanlarından bazıları çoklu ortam, seri iletişim bağlantısı, tam ekran görüntüleme, üç boyut ya da ileri resimlemedir. Bunlar, ihtiyaçlara göre kullanılır.

(alıntı)