BÖLÜM 1

 

Altuğ B. Altıntaş
© 2004

 

Java NEDİR ?

 

Java ™ platformu bilgisayar ağının varlığı da göz önüne alınarak uygulamaların/programların farklı işletim sistemleri üzerinde çalıştırılabilmesi düşüncesiyle geliştirilmiş yeni bir teknolojidir. Java teknolojisi kullanılarak aynı uygulama farklı  ortamlarda çalıştırılabilir. Örneğin kişisel bilgisayarlarda, Macintosh bilgisayarlarda, üstelik cep telefonlarında... (yorum ekle)

Java ™ platformu hem programlama dili, hem de bir ortam olarak düşünülebilir. Programlama dili olarak, açık kodlu, nesneye yönelik (object-oriented), güvenli, sağlam, İnternet için elverişli bir teknolojidir denilebilir. Ortam olarak da orta katman (middleware) teknolojiler bulmak mümkündür.  (yorum ekle)

Gerek Java programlama dili, gerekse bu dile bağlı alt teknolojiler, VB™ veya Borland Delphi™ gibi sadece belirli bir firma tarafından geliştirilmiş ürünler değillerdir. Java ve bu dile bağlı alt teknolojiler, Sun MicroSystems tarafından tanımlanmış belirtimlerden (specifications) oluşmaktadır. Bu belirtimlere sadık kalan her yazılım firması Java Sanal Makinası, kısaca JVM (Java Virtual Machine), veya Java programlama diline bağlı alt teknolojiler yazabilir (örneğin Application Server - Uygulama Sunucusu). Eğer bu belirtimlere sadık kalınmayıp standart dışı bir JVM veya Java programlama diline bağlı alt teknolojiler yazılmaya kalkışılırsa hukuki bir suç işlenmiş olur.  (yorum ekle)

Peki belirtim (specifications) ne demektir? Sun MicroSystems, JVM veya Java programlama diline bağlı alt teknolojiler yazmak için belirli kurallar koymuştur; bu kurallar topluluğuna “belirtimler” denir. Örneğin biraz sonra ele alınacak olan çöp toplama sistemi (garbage collector)... (yorum ekle)

Çöp toplama sistemi daha önceden oluşturulmuş, ancak şu an için kullanılmayan ve bellekte boşu boşuna yer işgal eden nesneleri belirleyerek otomatik olarak siler. Böylece Java programcısı “acaba oluşturduğum nesneyi bellekten silmiş miydim?” sorusunu sormaktan kurtulurlar, ki bu soru C++ programlama dillinde uygulama yazan kişilerin kendilerine sıkça sorması gereken bir sorudur. Şimdi bir yazılım firması hayal edelim, adının ABC yazılım firması olduğunu varsayalım. Bu firma, eğer bir JVM yazmak istiyorsa, bu çöp toplama sistemini, oluşturdukları JVM’in içerisine yerleştirmeleri gereklidir. Çünkü Sun MicroSystems’ın belirtimlerinde, çöp toplama sistemi koşuldur! Eğer ABC firması üşenip de çöp toplama sistemini, oluşturdukları JVM’in içerisine yerleştirmezse hukuki bir suç işlemiş olur. (yorum ekle)

Şu anda en yaygın kullanılan JVM’ler, IBM ve Sun Microsystems’ın üretilmiş olan JVM’lerdir; ayrıca, HP, Apple gibi bir çok firmanın üretmiş oldukları JVM’ler de bulunmaktadır. (yorum ekle)

 

1.1. Java ile Neler Yapılabilir?

Java diliyle projeler diğer programlama dillerine göre daha kolay, sağlıklı ve esnek şekilde yapılması mümkün olur. Kısaca göz atılırsa Java diliyle,

·      GUI  (7Grafiksel Kullanıcı Arayüzü) uygulamaları, Applet’ler

·      Veri tabanına erişimle ilgili uygulamalar

·      Servlet, Jsp (Web tabanlı uygulamalar).

·      Dağınık bileşenler (Distributed components) (örneğin  EJB, RMI, CORBA).

·      Cep telefonları, Smart kartlar için uygulamalar.

·      Ve daha niceleri…

için uygulamalar yazmamız mümkündür. (yorum ekle)

 

1.2. Java Nasıl Çalışır?

Java uygulamaları JVM tarafından yorumlanır; JVM, işletim sisteminin üstünde bulunur. Bu nedenle, Java uygulamaları farklı işletim sistemlerinde herhangi bir değişiklik yapılmadan çalışır. Böylece Java programlama dilinin felsefesi olan “Bir kere yaz her yerde çalıştır” sözü gerçekleştirilmiş olunur. (yorum ekle)

 

Şekil-1.1. İşletim sistemleri ve JVM’in konumu

 

Şekil-1.2.’de Java kaynak kodunun nasıl çalıştırıldığı aşamalarıyla gösterilmiştir. Byte (sekizli) koduna çevrilen kaynak kod, JVM tarafından yorumlanır ve uygulama çalıştırılmış olur. Kısa bir Java uygulaması üzerinde olayları daha ayrıntılı bir şekilde incelenirse...  (yorum ekle)

 

Örnek:   Selam.java  (yorum ekle)

 
public class Selam {
  public static void main(String args[]) {
    System.out.println("Selamlar !"); 
  } 

}

 

 

Şekil-1.2. JAVA kodunun çalıştırılma aşamaları

 

Yukarıda yazılan uygulamanın hangi aşamalardan geçtiği şekil üzerinde ilerleyen paragraflarda gösterilmiştir: 

 

Şekil-1.3. Selam.java’nın geçtiği aşamalar

 

Yazılan kaynak kodları ilk önce javac komutuyla derlenir; ardından java komutuyla çalıştırılır. Fiziksel dosyanın içerisindeki her sınıf (class) için fiziksel olarak bir .class dosyası oluşturulur.

1.3. JAVA Sınıflaması

Java ortamı 4 ana sınıf altında toplanmıştır:  

·      Standart Java                          

·      Komple (Enterprise) Java

·      Gömülü cihazlar için Java (embedded devices)

·      XML Teknolojileri

·      Diğer Teknolojiler  (yorum ekle)

 

1.3.1. Standart Java

·      J2SE (Java 2 Standart Edition)

·      J2SE Bileşenleri

o     Yardımcı Teknolojiler (Assistive Technologies)

o     Sürükle ve Bırak (Drag and Drop)

o     Java Erişim Köprüsü (Access Bridge)

o     JavaBeans Teknolojisi

o     JavaBean Etkinleştirme Sistemi (JavaBean Activation Framework) JAF 1.0.2

§      Javadoc Aracı

o     Java Altyapı sınıfları ( Java Foundation Classes (JFC) / Swing )

o     Java HotSpot Sanal Makinası (Virtual Machine)

o     Java Platformu Ayıklayıcı Mimarisi (JPDA-Java Platform Debugger Architecture)

o     Windows XP için Java Uyum-eki (Java Plug-in for Windows XP)

o     Java 2D API

o     Java Web Start

o     JDBC Teknolojisi

o     Takılıp çıkarabilir (Pluggable)  Look and Feel

o     Uzak Yordam Çağırımı (Remote Method Invocation) (RMI)

o     Güvenlik (Security)

·      J2SE Seçimlik Paketler

o     InfoBus

o     Java Gelişmiş Görüntüleme (Advanced Imaging)

o     Java Kimlik Belirleme ve Yetkilendirme Servisi (Auth. and Auth. S.) (JAAS)

o     Java İletişim (Communication) API (JCA)

o     Java Şifreleme Uzantısı (Cryptography Extension) (JCE)

§      Java Veri Nesneleri (Data Objects)

o     Java Yardım Teknolojisi (Help Technology)

o     Java Ortam (Media) API leri

o     Java Ortam Sistemi (Media Framework) (JMF)

o     Java İsimlendirme ve Dizin Arabirimi (JNDI-Java Naming and Directory Interface)

o     Java Güvenli Soket Uzantısı (JSSE-Java Secure Socket Extension)

o     Java Konuşma (Speech) API'si

o     Java 3D API (yorum ekle)

 

1.3.2. Enterprise Java

·      J2EE (Java 2 Enterprise Edition)

·      CORBA Teknolojisi

·      ECperf Teknolojisi

·      Komple (Enterprise) JavaBeans Teknolojisi

·      Kontaynerler için Java Yetkilendirme Kontratı (Java Authorization Contract for   Containers) (Java ACC)

·      Java IDL

·      JavaMail API

·      Java Mesajlaşma Servisi (Message Service) (JMS) API

·      JavaServer Yüzleri (Faces)

·      JavaServer Sayfaları (Pages)

·      Java Servlets

·      JDBC Teknolojisi

·      J2EE Bağlayıcı Mimarisi (Connector Architecture)

·      Hareketler (Transactions) (yorum ekle)

 

 1.3.3. Gömülü Cihazlar İçin Java (Embedded Devices)

 

·      Java 2 Platform, Micro Edition (J2ME Teknolojisi)

·      Bağlı Aygıt Konfigurasyonu (Connected Device Configuration) (CDC)

·      Sınırlı Bağlanmış Aygıt Konfigurasyonu (CLDC-Connected Limited Device  

      Configuration)

·      C Sanal Makinası (CVM-C Virtual Machine)

·      K Sanal Makinası  (KVM- K Virtual Machine) 

·      Kişisel Java (PersonalJava)                

·      Java Card

·      JavaPhone API

·      Java TV API

·      Jini Network Technology

·      Gezgin Bilgi Aygıt Profili (MIDP-Mobile Information Device Profile)  (yorum ekle)

1.3.4.  XML Teknolojileri

 

·      XML İlişkilendirilmesi için Java Mimarisi (JAXB-Java Architecture for XML Binding)

·      XML-Tabanlı RPC için JAVA API'si (JAX-RPC-Java API for XML-Based RPC)

·      XML Mesajlaşması için JAVA API'si (JAXM-Java API for XML Messaging)

·      XML İşlemleri için JAVA API'si  (JAXP-Java API for XML Processing)

·      XML Kayıtları için JAVA API'si  (JAXR-Java API for XML Registries) (yorum ekle)

 

1.3.5. Diğer Teknolojiler

 

·      Araç Ürünler

o     MIF Doclet

o     Sun ONE Stüdyo (Studio)

·      AĞ (NetWork) Ürünleri

o     Sertifikalı JAIN API Ürünleri (JAIN API Certified Products)

o     Java Dinamik Yönetim Seti  (Java Dynamic Management Kit)

o     Java Yönetim Uzantısı   (JMX-Java Management Extensions)

o     Java MetaData Arabirimi   (JMI-Java Metadata Interface)

o     Java Paylaşılan Veri Araç Takımı   (Java Shared Data Toolkit)

o     Java Spaces Teknolojisi

o     Servis Sağlayıcılar için Java Teknolojisi (Java Technology for Service Providers)

o     Jini Ağ Teknolojisi (Network Technology)    

o     JXTA Projesi

o     J2ME Platformu için JXTA Projesi (Project JXTA for J2ME Platform)

o     Sun Chili!Soft ASP (yorum ekle)

 

1.4.  Gelişim Evreleri

 

Tablo-1.1.  JAVA’nın gelişim evreleri  (yorum ekle)

1995

·  Java teknolojisinin ilk çıkış yılı; ilk olarak Applet teknolojisinin dikkat çektiği yıllar.

1996

·  Java Geliştirme Seti (JDK) v1.0 çıkartıldı. Temel seviyeli işlevleri içeren bir versiyon (örneğin soket programlama, Girdi/Çıktı (Input/Output), GUI (Graphical User Interface- Grafik Kullanıcı Arabirimi)

1997

·  JDK 1.1 çıkartıldı. Bu sürümde Java GUI, veritabanı erişimi için JDBC, dağınık nesneler için RMI ve daha birçok yeni gelişmeler eklendi.

1998

·  JDK 1.2 çıkartıldı.

·  JFC/Swing yayınlandı- aynı yıl içersinde http://java.sun.com İnternet adresinden 500,000+ adet indirme (download) gerçekleştirildi.

1999

·  Java teknolojisi J2SE, J2EE ve J2ME olarak 3’e bölündü.

·  Java HotSpot (performans arttırıcı) yayınlandı.

·  JavaServer Pages (JSP) teknolojisi yayınlandı.

·  J2EE platformu yayınlandı.

·  Linux üzerinde J2SE platformu yayınlandı.

2000

·  JDK v1.3 çıkartıldı.

·  Java APIs for XML teknolojisi yayınlandı.

2002

·  JDK v1.4 versiyonu çıkarıldı (Merlin projesi).

·  Java API for XML bindi