BÖLÜM 1
|
|
Altuğ
B. Altıntaş
|
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.
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.
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)...
Çö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.
Ş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)
·
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.

Ş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 !"); }
}

Yukarıda
yazılan uygulamanın hangi aşamalardan geçtiği şekil üzerinde ilerleyen
paragraflarda gösterilmiştir:
|
|
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.
·
Standart Java
·
Komple (Enterprise) Java
·
Gömülü cihazlar
için Java (embedded devices)
·
XML Teknolojileri
·
Diğer Teknolojiler
·
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
·
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)
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)
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)
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
Tablo-1.1. JAVA’nın gelişim evreleri
|
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 |