|
||||||||||||||||||||||
Ş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ı
·
Standart Java
·
Komple (Enterprise)
Java
·
Gömülü cihazlar
için Java (embedded devices)
·
XML Teknolojileri
·
Diğer Teknolojiler
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
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)
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
1.4.
Gelişim Evreleri
Tablo-1.1.
JAVA’nın gelişim evreleri
1.5.
Java’nın Başarılı Olmasındaki Anahtar Sözcükler
·
C/C++ da olduğu
gibi bellek problemlerinin olmaması.
·
Nesneye yönelik (Object
Oriented) olması.
·
C/C++/VB dillerinin
aksine doğal dinamik olması.
·
Güvenli olması. · İnternet uyg. için elverişli olması. (Applet, JSP, Servlet, EJB, Corba, RMI). . Platform bağımsız olması: Bir kere yaz her yerde çalıştır!
1.6. Çöp
Toplayıcı (Garbage Collector)
Çöp toplayıcının ne zaman ortaya çıkıp temizleme yapacağı belirli değildir; eğer bellekte JVM için ayrılan kısım dolmaya başlamışsa çöp toplayıcı devreye girerek kullanılmayan nesneleri bellekten siler. Çöp toplayıcısı JVM’in gerçeklenmesine göre farklılık gösterebilir; nedeni, her JVM üreticisinin farklı algoritmalar kullanmasından ileri gelmektedir.
1.7. Java’da
Açıklama Satırı (Comment Line)
Java kaynak kodunun içerisine kod değeri olmayan açıklama yazılabilmesi için belirli bir yol izlenmesi gerekir. Şunu hemen belirtelim ki, uygulamalarımız içerisinde yorum satırları sık sık kullanılacaktır. Java uygulamaları içerisinde açıklama/yorum satırları koymak için iki farklı yöntem kullanılır:
·
/* yorum */
·
// yorum; Tek satırlık açıklama yapılması için kullanılır. Kısa açıklamalar için bu yöntem kullanılabilir.
1.8. Herşey
Nesne
Örneğin, elimizde bir maket uçağı olsun; nesne olarak düşünelim... Bu maket uçağı denetlemek amacıyla bir de kumanda cihazının, yani referansın olduğunu düşünelim. Bu maket uçağı havada sağa veya sola döndürmek için elimizdeki kumanda cihazını kullanmak zorundayız; benzer şekilde havalandırmak veya yere indirmek için kumanda cihazından yararlanırız. Burada dikkat edilmesi gereken unsur kumanda cihazından çıkan emirlerin maket uçağı tarafından yerine getirilmesidir.
Elimizde bir kumanda
cihazının bulunması, maket uçağımızda olması anlamına gelmez. Her
durumda bir referansı tek başına da tanımlanabilir. İşte kanıtı,
Gösterim-1.1:
,
|
String kumanda= new String("maket ucak"); |
Gösterim-1.3:
String kumanda="maket ucak"; |
Bu gösterimlerin şekil
üzerindeki ifadesi aşağıdaki gibi olur:

Verilen gösterimlerde
String tipindeki referanslara String tipindeki
nesneler bağlanmıştır. Gösterim-1.2 ile 1.3 arasında herhangi bir
fark yoktur. Java’da String nesnesinin özel bir yeri vardır.
String nesneleri çok sık kullanıldıkları için Gösterim-1.2 'deki
ifade bir nevi kısaltma gibi düşünülebilir...

Depo toplam 4 alandan oluşur, bu 4 alan aşağıdaki gibi açıklanabilir:
§ Yığın (Stack): Bulunduğu nokta bellek içerisindedir; yani RAM üzerinde tutulur. Bu alanda bulunan yığın işaretçisine (stack pointer) doğrudan CPU’dan donanım desteği vardır. Yığın işaretçisi aşağıya inince yeni bir bellek alanı oluşturur, yukarı kalkınca ise bellek alanını bırakır (release). Java derleyicisi programı oluşturmadan önce yığın üzerinde oluşturulacak olan verilerin boyutlarını ve ömürlerini bilmek zorundadır. Çünkü yığın işaretçisini (stack pointer) aşağı ve yukarı hareket ettirecek olan kodu oluşturması gerekmektedir. Yığın üzerinde referansların kendileri bulunur. Maket uçağı örneğini hatırlarsak, bu alanda sadece kumanda cihazları durabilir.
§ Heap: Genel amaçlı bir bellek havuzudur. Yığın alanının tersine, derleyici burada ne kadarlık bir belleğin pay edileceğini bilmek zorunda değildir. Bu büyük bir rahatlık getirmektedir; çünkü ne zaman bir nesne oluşturmak istersek sadece new anahtar kelimesini kullanarak bu alanda bir yer atanır. Bu kadar rahatlığın karşılığında ise ödenmesi gereken maliyet hızdır. Heap alanında yer ayırmak için harcanan zaman, yığın alanında yer ayırmaktan daha fazladır. Heap alanında nesnelerin kendisi durur. Maket uçağı örneğini hatırlarsak, bu alanda sadece maket uçaklarının kendileri bulunur,