Java'nın Özellikleri

Benzer belgeler
Programlama Dillerinde Kullanılan Veri Tipleri

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Java Temel Özellikleri

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Java Programlamaya Giriş

Sunum İçeriği. Programlamaya Giriş

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Java. Mustafa OF. Kocaeli Üniversitesi Kocaeli Meslek Yüksekokulu (Mart 2007)

Öğr. Gör. Serkan AKSU 1

NESNEYE YÖNELİK PROGRAMLAMA

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

YZM 2105 Nesneye Yönelik Programlama

İÇERİK 2 Java Kodlaması için Gerekli Programlar JRE, JDK kurulması ve Başlangıç Ayarları Java Kodlamayı Kolaylaştıran IDE ler Java Kod Yapısı İlk Java

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

C# nedir,.net Framework nedir?

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BİL-142 Bilgisayar Programlama II

public static int Toplam int x, int y

JAVA API v2.0 Belge sürümü: 2.0.2

BTEP243 Ders 3. class Yazım Kuralı:

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Bilgisayarda Programlama. Temel Kavramlar

HSancak Nesne Tabanlı Programlama I Ders Notları

C Programlama Dilininin Basit Yapıları

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Erişim konusunda iki taraf vardır:

Göstericiler (Pointers)

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Nesne Yönelimli Programlama

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Dr. Fatih AY Tel: fatihay@fatihay.net

4. Bölüm Programlamaya Giriş

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Diziler İndisli Değişkenler

Bahar. BM 211 Programlama Dilleri 3 1

HSancak Nesne Tabanlı Programlama I Ders Notları

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Internet Programming II

HSancak Nesne Tabanlı Programlama I Ders Notları

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

C#(Sharp) Programlama Dili

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 1. Bölüm C# Programlamaya Giriş

BİL-142 Bilgisayar Programlama II

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BİL-141 Bilgisayar Programlama I (Java)

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Pointer Kavramı. Veri Yapıları

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Java Programlama Giriş

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

SIMAN KULLANIM KILAVUZU

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

Klavyeden Basit Giriş/Çıkış İşlemleri

İNTERNET PROGRAMCILIĞI - II

ALGORİTMA VE PROGRAMLAMA I

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

1.1. Yazılım Geliştirme Süreci

Yrd. Doç. Dr. Caner ÖZCAN

Üst Düzey Programlama

Java JDK (Java Development Kit) Kurulumu:

Java da İstemci Tarafı Uygulamalar

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

PROGRAMLAMAYA GİRİŞ DERS 2

GÖRSEL PROGRAMLAMA - I

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

PROGRAMLAMA TEMELLERİ

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

İnternet Programcılığı

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

Ünite-3 Bilgisayar Yazılımı.

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

JAVASCRIPT JAVASCRIPT DİLİ

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

Temel Giriş/Çıkış Fonksiyonları

Transkript:

Önsöz Kitap Hakkında Bu kitap Java'ya yeni başlayanlar veya az bilenler için yazılmıştır. Java'da şu veya bu şekilde kod yazabilen, fakat dilin temel yapısını henüz tam olarak anlamadığını düşünenler için de faydalı olabilir. Tek tek class'ları veya kütüphaneleri referans kitabı mantığında anlatmak yerine, okuyucunun dilin temel esprisini yakalaması sağlanmaya çalışılmıştır. Elbette gerektiğinde önemli class'lar ve kütüphaneler hakkında da bilgi vermektedir. Zaten bunlar dili tam olarak kavramak için de bilinmesi gereken asgari düzeydeki konulardır. Bir bölümde Nesneye Yönelik Programlama (Object-Oriented Programming) anlatılıyor. Ancak kitabın geneli OOP'u daha iyi anlamanıza katkıda bulunmayı amaçlamaktadır. Nesnelerle çalışmanın gereğini tam olarak kavramamış bir geliştirici Java'yı diğer bazı dillere bezner biçimde kullanarak bir çok zenginlikten mahrum kalabilir. Bu kitaptan Inheritance, Abstraction, Encapsulation, Interface, Polymorphism gibi bir çok kelimenin (daha doğrusu kavramın) ne anlama geldiğini öğrenebilirsiniz. Bu kavramları tümüyle kavramak elbette zamanla ve deneyimle olacaktır. Biz burada sadece doğru yönde ilerlemeniz için bir yardımda bulunmuş oluyoruz. Gerisi okuyucuya kalmıştır. Nesneye Yönelik Programlama bir 'bilgi' olmaktan çok 'beceri'dir. Ancak 'zamanla' kazanılması mükündür. Vaktinden önce ne kadar iyi bilirseniz bilin doğru bir biçimde uygulayamazsınız. Hatta bilinçiz nesneye yönelik tasarım, nesnesiz program yazma tekniğinden daha kötü sonuçlar doğurabilir. Bu kitap bu bakımdan çeşitli tuzaklara düşememeniz için gerekli uyarıları sırası geldikçe yapmaktadır. Kitabın ilerleyen bölümlerinde mutlaka öğrenilmesi gereken bazı kütüphaneler (API'lar)anlatılmaktadır. Bu kütüphaneleredeki bütün class'lar ayrıntılı olarak incelenmemektedir elbette. Zaten bu konuların her biri ayrı bir kitap konusudur. Bu kitapta belli kütüphanelerin temel yapısı anlatılmaktadır. Gerisini okuyucu kendisi ilerletebilir. Ezberciliğin her konuda kötü bir şey olduğunu herkes bilir ya; Java'da ezbercilik imkansızdır. Bu kitabın yazarı dahil hiç kimse bütün class'ların bütün property ve method'larını ezberleyemez. Java çok zengin bir kütüphaneye sahiptir. Bu kitabın yazarı en fazla kullandığı nesneler için bile sürekli documantasyon/referansa (Javadoc'a) bakmaktadır. Bir çok deneyimli programcının da böyle yaptığı zaten biliniyor. Önemli olan kaybolmadan arama yapabilecek kadar bilgi sahibi olmaktır. İşte bu kitap da bunu sağlamaya çalışmaktadır. Java'nın Özellikleri Java Basittir. Java, kendisine yakın güçteki dillerin en basitidir. Örneğin, Java model olarak aldığı C++'tan çok daha kolaydır. C++'ın çok güçlü bir dil olduğu tartışılmaz. Ama C++ ve C# çoğu bir dilde bulunması çok da şart olmayan karmaşık bir çok özellik içermektededir. Bütün bu özelliklerin öğrenilmesi çok zaman alır. Oysa Java gereksiz çok fazla özellik içermez. Ve Java'da bir özelliğin öğrenilmesi ve kullanılması çok kolaydır. Başka dillerde çok zor yazılan işlemler

Java'da çok basit ifadelerle gerçekleştirilebilmektedir. Java'nin basitliği yanlış anlaşılmamalıdır. VisualBasic/ASP, Delphi/Pascal, Perl, PHP gibi dillerden ve ortamlardan daha basit değildir. Bu sayılan diller çok kolay öğrenilebilen, kısa zamanda yeterli düzeye ulaşılabilen dillerdir. Ancak bu dillerde yapılabileceklerin belli bir sınırı vardır. Bu dillerde büyük çaplı ve karmaşık işler yapamazsınız veya yapmanız durumda çok zorluk çekersiniz. Oysa Java programlamanın her dalında iddia sahibidir. Her geçen gün Java yeni bir alanda söz sahibi olmaktadır. Bu bağlamda 'basit' demek, 'çok gelişmiş işlemlerin basit bir şekilde yapılabilmesini sağlayan' demektir. Yoksa 'programcı bunu anlamaz' diye düşünülmesinden ötürü hiç bir özellik dışarda bırakılmamıştır. Java Nesneye Yöneliktir. Java tamamen (bazı kişilere göre %99) nesneye yönelik'tir. Diğer bazı diller gibi nesneye yöneliklik sonradan dile eklenmemiştir, başından beri Java'da bulunmaktadır. Bir Java programında olabilecek her şey ya nesnedir ya da bir nesnenin parçasıdır. Java nesneye yönelik programlamayı sadece mümkün değil aynı zamanda kolay kılmıştır. Java'da bir nesnenin yapılması, kullanılması, geliştirilmesi, başka bir yere aktarılaması çok kolaydır. Java Dağıtıktır. Java 'dağıtık' bir dildir. 'Dağıtık' birden fazla bilgisayarda çalışan programların bir biriyle uyumlu çalışabilmesidir. Bir yazılım parçasının bir kısmının bir makinede diğerinin başka makinede aynı anda çalışması mümkündür. Bu yüzden Internet'in dilinin Java olduğu söylenmektedir. Günümüzde tek bir makine üzerinde çalışan, başka hiç bir yerle bağlantısı olmayan uygulama kalmamış gibidir. Bir çok işletme Interenet üzerinden iş yapmaktadır. Bir çok işletmede birden fazla makine birbirine bağlı olarak çalışmaktadır. Bu yüzden Java dağıtık programlama için en uygun çözümlerden biridir. Java Sağlamdır. Java sağlam bir dildir. Programlamadaki hataların çoğu daha yazılma aşamasında anlaşılabilmektedir. Yazılma aşamasında anlaşılmayanlar, programın çalışması esnasında yakalanabilmektedir. Bir 'exception'la, programda hatanın ne olduğu, nerede olduğu ve hangi işlemi yaparken olduğu bile belirtilebilmektedir. Başka dillerin aksine çalışma esnasında bir Java programı "Bir hata oldu!" deyip çökmez. Bir çok durumda hataya rağmen program çökmeden çalışmaya devam eder. Hata olması durumunda da programı çalıştıranlar hatayı ayrıntılarıyla öğrenme olanağına sahip olur. Java Güvenlidir. Java güvenli bir dildir. Java diliyle virüs yapılamaz. Hiç bir virüs bir Java programına bulaşamaz. Bir Java programının yaptığı her hareket takip edilir. Kötü niyetli bir program, bir işlemi eğer izin verilmediyse yapamaz. Bu özellik, Internet gibi herkesin başkasının makinesine erişebildiği bir ortmada çok önemlidir. Java'yı güvenlik gereksinimi yüksek bir çok firma bu yüzden tercih etmektedir.

Mimarilere Yansızdır. Sıradan kullanıcıların bildiğinin aksine dünya üzerinde bir çok işletim sistemi vardır. Hatta kullanıcın çoğunun iyi bildiği Windows işletim sistemi bazı bilgisaya alanlarında hiç kullanılmaz. UNIX/Linux, Apple Mac, IBM'in çeşitli işletim sitemleri dünya işletim sistemi pazarında büyük yer tutmaktadır. Bir çok masaüstü kullanıcısının tek bildiği işletim sisteminin, bazı sektörlerde adı dahi geçmemektedir. Java'da yazılan bir program hemen hemen bütün işletim sistemlerinde hiç değiştirmeye gerek duymaksızın çalışır. Diğer dillerde bu özellik yoktur. Hatta Windows'un bir versiyonunda çalışan program diğer bir versiyonda çalışmayabilmekte, bazen makinenin çökmesi gibi büyük sonuçlar bile doğurabilmektedir. Windows'u üreten Microsoft firmasının yazdığı programlar bile kendilerinin işletim sistemlerinin bazılarında çalışmamaktadır. Kendilerinin yazdığı belgelerde hangi işletim sistemlerinin hangi versiyonlarında hangi programlarının çalışmadığını belirtilmektedir. Bu durum bütün işletim sistemi ve bütün programlar için geçerlidir. Ürettiği yazılımların her platformda çalışmasını isteyen firmalar giderek daha çok Java'ya yönelmektedir. Java Taşınabilirdir. Java programları her ortamda aynı veya benzer bir şekilde çalışır. Her ortam/makine için ayrı bir program yazmaya gerek kalmaz. Programcı programın çalışacağı makinenin durumunu göz önüne almak zorunda kalmaz. Bir programın görüntüsü çalıştığı hey yerde hemen hemen aynıdır. C programları da hemen hemen her işletim sisteminde yeniden derlenmek suretiyle çalışabilir. Ama programcı bunun için hazırlık yapmalıdır. Bir işletim siteminde tamsayı -2^15 ile 2^15 arasında değer alırken diğerinde -2^31 ile +2^31 arasında alabilir. Ama Java bu farkları programcıya şeffaf kılar. Programcı her işletim sistemi ve her sürüm için ayrı bir program yazmak zorunda kalmaz. Java Yorumlanır. Java 'yorumlamalı' bir dildir. Yani bir Java programının komutları, çalışırken makinenin anlayacağı formata çevrilir. Java'da bu Java Virtual Machine (JVM) tarafından yapılır. Bunun avantajı bir programın kullanıdığı standart kütüphanelerin programla birlikte taşınması zorunluluğunu ortadan kaldırmasındır. Bir yorumlayıcı herhangi bir ortamda varsa, bir dildeki standart her özellik o ortamda var demektir. Programla birlikte bu kütüphanelerin de taşınması gerekmez. Bu da bir Java programının bir makineden başka makineye indirilmesini çok hızlandırır. Çünkü sadece programcının yazdığı nesneler yolculuk yapar. Applet'lerin çalışma prensibi budur. Ana makinede bulunan applet, tarayıcı tarafından kullanıcının makinesine alınır ve çalıştırılır. Java ortamı, yani JVM tarayıcının içinde mevcutur. Java Yüksek Başarımlıdır. Diğer dillerde olmayan bir çok özelliğe sahip olmasına rağmen, Java'da bunun için fazla bir performans kaybı yoktur. Java'nın ilk versiyonlarında çalışan programlar diğer dillerde yazılan eşdeğerlerine göre elbette yavaştır. Ancak Java'nın gelişmesiyle birlikte Java bu farkı, üstün özelliklerinde vazgeçmek zorunda kalmaksızın kapatmaktadır. En son Java sürümüyle birlikte JIT (Just-In Time-Tam Zamanında Derleme) teknolojisi devreye girmiş bulunlaktadır. Bununla

birlikte Java programları, diğer dillerde en iyi yazılmış programların hızını hemen hemen yakalayabilmektedir. Java yapılması 'imkansız' gibi görüneni çok da fazla performans kaybına yol açmadan yapar. Java'nın yavaşlığı en fazla eleştiri alan özelliklerden biridir. Bir programın hızlı çalışması, makinelerin hafıza veya işlemcisini terfi ettirerek çözülebilir. İşlemcinin ve hafızanın çok ucuzladığı günlerde, bu, bir işletme için pek fazla maddi bir yük değildir. Bir programcının sağlam, güvenli ve Java'nı sahip olduğu üstün özelliklere sahip program üretmesi daha fazla masraflıdır. Bir işletmenin, durup dururken bir programın makineyi çökertmesinden dolayı katlanacağı külfet az değildir. Programı yapanların bile hatayı anlamak için saatlerce bazen günlerce uğraşması işletmeye yine maliyet olarak yansıyacaktır. Bu kadar eleştiri almasına rağmen Java'nın giderek daha fazla yaygınlaşmasının elbette nedenleri vardır. Java'nın yavaşlığından sadece Java'yı bilmeyenler ve kullanmayanlar şikayet etmektedir. Ancak Java 'hızla' yayılmaktadır. Java Çok Kanallıdır. Java dili başından 'çok kanallıdır' (multi-threaded'dir). Çok kanallılık, bir programın aynı anda birden fazla işlemi yürütebilmesi demektir. Bir program herhangi bir şeyi beklerken arada başka bir işlemi gerçekleştirebilir. Beklenen olay gerçekleşince ilk işlem kaldığı yerden aynen devam ettirilir. Üstelik bunun için programcının fazla bir şey yapması da gerekmemektedir. Çok kanallılık bir çok dilde hiç yoktur. C++ gibi dillerde de dilin özelliği değil, ona sonradan eklenmiş kütüphanelerle kullanılabilmektedir. Ama Java'nın kendisi doğuştan çok kanallıdır. Bu yüzden çok kanallı program yapmak için en kolay dil Java'dır. Java Dinamiktir. Java'da bir programla kullandığı birimlerin (kütüphaneler,modüller veya sınıfların) birbirine bağlanması çalıştırma anında yapılır. Buna 'sonradan bağlama' (late binding) denir. Kullanılan birimlerin iç yapısı değiştirildiğinde, bu birimleri kullanan programın değişmesi gerekmez. Yeter ki birimlerin dışarıdan çağırma şekilleri değişmesin. Oysa C++ gibi dillerde herhangi bir değişiklikte (bu bir modülün iç yapısında çağıranları ilgilendirmeyen çok ufak bir değişiklik bile olsa) herşeyin yeniden işleme tabi tutulması gerekir. Buna da 'erken bağlama' (early binding) denir. Java'da late-binding bu özellik olmasaydı, Java kütüphanlerindeki her hata düzeltme ve değişiklikte dünyadaki bütün programları yeniden işleme tabi tutmamız gerekirdi ki bu mümkün değildir. Sonuç Java iyi bir programlama dilidir. Giderek yaygınlaşması, diğer dillerin giderek Java'ya benzemeye başlaması ve taklitlerinin çıkması da bunu göstermektedir. Java'yı tercih etmeyenler elbette olmuştur ve olacaktır. Ama buzdolabının bile Java bildiği bu dönemde bu dili hiç bilmemek, tümüyle yok saymak bilgisayar alanında var olmak isteyen insanlar için büyük bir eksiklik olacaktır.

Java Platform'u Java Platform'u Java sadece bir programlama dili değildir. Aynı zamanda bir yazılım platformudur. Java Platform'u işletim sistemi üzerinde çalışan, uygulamalara çok çeşitli servisler veren, bunu her işletim sistemi için standart bir biçimde başarabilen bir platformdur. Java Programlama Dili ise bu platform üzerinde yazılım geliştirmek için kullanılan programlama dilidir. O yüzden Java'yı öğrenmek sadece Java dilini öğrenmek demek değildir. Java platformu üzerinde çalışan farklı bir dil de üretilebilir. Ancak Java dilinin iyi bir programlama dili olması nedeniyle böyle bir ihtiyaç doğmamışır. Java platformunun yapısı, daha önce benzer bir platform olmaması nedeniyle, özellikle başka dillerle çalışmış insanlara karmaşık gelebilir. Ancak Java, diğer dillerdeki, özellikle de C/C++ dilindeki "çözümsüz" veya "çözümü zor" konulara pratik çözümler üretmiştir. O yüzden başka dillerle profesyonel programlama yapmış olan insanlar sık karşılaştıkları bir çok sorunun Java'da çok kolay çözülmüş olduğunu görebilmektedirler. Bu bölümde bir Java programının çalışma biçimini, öncellikle diğer dillerde yazılmış programların çalışma biçimlerini gözden geçirerek inceleyeceğiz. Derleme (Compilation) ve Yorumlama (Interpretation) Programalama dili, insanla makine (bilgisayar) arasında iletişim kurmak için kullanılan dildir. Başka bir deyişle programcı bilgisayara, özellikle de işlemciye istediklerini yaptırmak için bir dil kullanır. Bu dil konuşma diline yakın bir dil olmalıdır ki insanlar rahatça kullanabilsin. Bilgisayar işlemcisinin dili ise sadece sayılardan oluşur. Bilgisayarlar sayısal (dijital) aygıtlardır. İşlemciler sadece belli sayılarla ifade edilen makine kodlarından anlar. Bu kodlardan oluşan dile 'makine dili' denir, üretilen koda da 'makine kodu' (machine code) denir. Bilgisayarın ilk dönemlerinde insanlar programlarını sayı kodları kullanarak yazıyorlardı. Bu kodlar her işlemci türü için değişik olduğundan, yazılan programlar sadece belli bir işlemci ile çalışabiliyordu. Hatta bir işlemci sürümü için yazılan kod bir önceki sürümde çalışmayabiliyordu. Bu yüzden 'programlama dili' kavramı ortaya çıkmıştır. Bu yapıda, programcı bilgisayarın yapması gerekenleri ona, konuşma diline yakın bir dille söyler. Bu dilde yazılanlar makine diline çevrilir. Böylece programcılar, hem işlemciminin kendine komut kümesini öğrenmek zorunda kalmazlar; hem de yazdıkları programlar birden fazla işlemciyle çalışabilir.

Programalama diliyle düz metin şekinde olan programa 'kaynak kodu' (source code) denir. Makine dilinde olan koda da "ikili kod" (binary code) denir. Programlama dilinden makine diline çevirme işi iki şekilde yapılabilir. Biri 'anında', ikincisi 'önceden'. Anında çevirmek, programa dilindeki ifadeleri bir yandan okuyup bir yandan makine diline çevirmek demektir. Buna 'yorumlama' (interpretation) denir. Önceden çevirme ise, programlama dilindeki ifadelerin çalıştırılmadan önce makine diline çevrilmesi, sonra da çalıştırılması anlamına gelir. Buna da 'derleme' (compilation) denir. Derleme'nin faydası daha hızlı olmasıdır. Çünkü makine diline çevirme sadece ve sadece bir kere yapılmaktadır. Yorumlama da ise her çalıştırmada çevirme işlemi yapıldığından daha yavaştır. Derlemenin zararı da, programdaki her değişiklikte önce derlemeyi sonra çalıştırmayı gerekli kılmasıdır. Sık değişiklik yapılan durumlarda bu, programcı için ciddi bir sorundur. Oysa yorumlama anında olduğu için, değişiklik de anında etkili olmaktadır. Perl, Basic gibi diller yorumlamalı, C ve Pascal gibi diller de derlemeli dildir. JVM - Java Virtual Machine (Java Sanal Makinesi) Java'daki durum biraz daha karışıktır. Java hem 'derlemeli' bir dildir, hem de 'yorumlamalı'. Java programlama diliyle yazılmış kaynak kodu, sanal bir işlemcinin anlayabileceği makine koduna çevrilir. Bu kod gerçek bir makine olmadığından ona makine kodu denmez. Ama programala dili gibi konuşma dilinde de olmadığından kaynak kodu da değildir. Bu ara dille yazılmış koda 'bayt kod' (bytecode) denir. Çünkü makine kodu gibi baytlardan oluşur. Yani kaynak kodu bayt koduna 'derlenir'. Sanal işlemci bu bayt kodlarının makine koduna programın çalışması esnasında çevirir. Her işletim sistemi ve işlemci için ayrı bir sanal makine vardır. Java kaynak kodları Java derleyicisi tarafından bayt koda çevrilir. Üretilen bu kod bütün işlemciler için aynıdır. Her işletim sistemi ve işlemciye göre sanal makine, bu bayt kodu ilgili işlemcinin makine diline anında çevirir yani yorumlar. Bu sanal makineye Java Sanal Makinesi - Java Virtual Machine (JVM) denir. Şimdi teorik olarak anlattığımız sürecin, uygulamadaki bileşenlerini inceleyelim. Java platformunun programlama dili 'Java' dır. Bu dilde yazılmış kaynak kodları '.java' uzantılı dosyalarda saklanır. "javac" adlı bir derleyici ile ikili koda çevrilir. İkili kod'lar '.class' uzantılı dosyalarda saklanır. Bu dosyalar 'java.exe' adlı yorumlayıcı tarafından çalıştırılır. Java kaynak kodu herhangi bir metin düzenleyici ile yazılabilir. Java'nın derleyicisi ücretsiz olarak dağıtılmaktadır. Java'nın yorumlayıcısı (JVM)'de plug-in olarak yüklenebilmektedir. Bu plug-in de ücretsizdir. Ayrıca bilinen bütün tarayıcılar'ın bir JVM'i bulunmaktadır. Bir JVM içerinde çalışan Java application'u C ile yazılmış native kodu çağırabilir. Bu durumda performans'tan kazanılmakla birlikte platform bağımsızlığı kaybedilmiş olur. O yüzden bu, sadece çok hız gerektiren az sayıda işlem için kullanılabilir. Java'nın hızı giderek arttığından buna zamanla daha az ihtiyaç duyulmaktadır. Bir.exe programı da Java programlarının içerisinden çalıştırılabilir. Ancak bu durumda çalışan proses tamamen JVM'in dışında, aşağıdaki işletim sisteminin kontrolünde bulunur. Application'la veri alışverişi bulunmayan programları

dışarıdan çağırmak için kullanılabilir. Java'nın Kullanım Alanları Applet'ler Bir web sayfası içerisinde çalışabilen görsel Java bileşenlerine 'applet' denir. Bir web sitesinden client'a.html veya.gif dosyası gibi indirilir ve browser tarafından çalıştırılır. Client'ta çalışması nedeniyle kullanıcıyla çabuk etkileşim kurabilmektedir. Server'da çalışan CGI ve benzeri programlar her işlemde server'a gidilmesini gerekli kılmaktadır. Bu da bandwith'i sınırlı client'lar için ciddi bir sorun olmaktadır. Özellikle game ve chat gibi uygulamaları da applet hemen hemen tek mantıklı seçenek olarak durmaktadır. Servlet'ler Server makinelerinde bir application server içerisinde çalıştırılabilen program modüllerine 'servlet' denir. Bunlar bağımsız application değildirler ve yüklenmeleri, çalıştırılmaları ve gerektiğinde devreden çıkartılmaları bir application server tarafından yapılır. Bir URL olarak çağrıldıklarında, varsa kullanıcıdan gelen parametreleri alıp çalışırlar ve çıktı olarak da HTML üretirler. Bir dosyada 'statik' olarak bulunan HTML'in client'a aktarılması yerine HTML'in 'dinamik' olarak (real time'da) üretilip output'a basılması söz konusudur. Application'lar Java'nın önce Applet'lerle sonra da Servlet'lerle gündeme gelmesi, onun sanki normal bir programlama dili olarak kullanılamayacağı gibi bir izlenim yaratmamalıdır. Java'nın internet'e en

uygun dil olması, internet dışındaki uygulamalarda kullanılamayacağı anlamına gelmez. Bir ortamda Java platform'u yüklüyse her tür işlem için Java application'u çalıştırılabilir. Ancak, herhangi bir makinede bir Java programı çalıştırılabilmesi için JRE (Java Runtime Engine - Java Çalışma-Zamanı Motoru) bulunmalıdır. Bir çok işletim sistemi Java'yla birlikte gelmekte veya kurulurken Java'yı tercihe bağlı olarak yüklemektedir. JRE yaklaşık 10 MB yer kapladığından ve çok çabuk kurulduğundan CD ile dağıtılan programlarla birlikte de verilebilmektedir. Micro Edition Java'nın kullanım alanlarında biri de el cihazlar veya çeşitli makinelerdir. Bunlarda Java'nın micro edition'u çalışır. Standart Java'dan farklı olan bu edition, bazı ek class'lar içerdiği gibi bazı standart kütüphaneleri de içermez. Dilde de bazı farklar vardır. Örneğin kesirli sayılar micro edition'da yoktur. Bunların dışında Java'nın temel çalışma biçimi aynıdır. Bir server veya başka bir kaynaktan aplication yükleyip çalıştırmak applet benzeri olan midlet class'larıyla yapılır. Java'yı destekleyen cep telefonları, buzdolapları, arabalar bulunmaktadır. Yakın bir gelecekte Java'nın kullanım alanının daha da yaygınlaşacağını düşünülmektedir. Enterprise Edition Server'larda, işletmelerin network'lerinde e-ticaret, mail, kullanıcı sistemi gibi bir çok işlemi desteklemek üzere çeşitli kütüphanelerle donatılmış bir başka Java versiyonu daha vardır : Enterprise Edition. Bu edition standart Java artı dağıtık işlemler için bazı kütüphaneler içermektedir. Değişik veritabanı ve e-ticaret çözümü üreten firmalar için bir standart teşkil ettiğinden, Java'nın platform bağımsızlığı yanında, yazılım üreticilerinden bağımsız sistem kurulabilmesini de sağlamaktadır. Firmayı tek bir işletim sistemine veya yazılım üreticisine bağımlı olmaktan kurtarmaktadır. Sisteme entegre bir ürün başka bir şirketin yaptığı ürünle rahatlıkla iletişim kurabilmekte, bir sistem yerine diğeri çok kolay yerleştirilebilmektedir. Bir çok büyük veritabanı ve e-ticaret yazılımı üreticisi Java enterprise edition'u desteklemektedir. JRE ve SDK JRE (Java Runtime Engine - Java Çalışma Zamanı Motoru) Bir makinede Java'yla yapılmış bir programın çalışması için orada mutlaka Java interpreter'ı olması gereklidir. Applet'ler browser içindeki Java'yla çalışırlar. Java kodlarını çalıştıran sisteme JRE (Java Runtime Engine- Java Çalışma Zamanı Motoru) denir. Java'da yapılmış bir program herhangi bir makineye kurulurken (eğer yoksa) öncelikle JRE kurulmalıdır. Ancak bu işlem bir makine için sadece bir kere yapıldığından, üzerinde JRE kurulmuş bir makineye herhangi bir program yüklenirken tekrar JRE kurulmasına gerek yoktur. JRE bazı işletim sistemlerinde kendiliğinden kurulu olup, bazılarında da tercihe bağlı olarak kurulabilmektedir. Elbette yazılan program, Java'nın o makinede kurulu sürümünden daha ileri bir sürümü gerekli kılıyorsa JRE'nin upgrade edilmesi gerekir. Java'da yeni bir sürüm yüklenince eski sürümle çalışan programlar çalışmaya devam eder. Bütün Java sürümleri 'geriyle uyumlu' (backward

compatible)'dırlar. Yıllar önce yapılmış Java'nın ilk sürümüne göre çalışan uygulamalar, son sürümle de çalışmaktadır. Java Plug-in JRE kurulduğu zaman aynı zamanda browser'lar için bir plug-in olarak çalışır. Herhangi bir HTML sayfasında applet'le karşılaşıldığında artık browser'ın kendi Java'sı değil bu plug-in devreye girer. Bu applet'in Java'nın son sürümlerindeki özellikler içermesi durumunda zaten zorunludur. Internet Explorer'ın en son sürümü bile örneğin Java'nın 1.1 versiyonunu içermektedir. Oysa şu anda Java'nın son sürümü 1.4'dür. Netscape Navigator ve Opera gibi browser'lar da kurulurken Java plug-in'ini tercihe bağlı olarak yüklemektedirler. JRE 10 MB'a yakın olduğu için bir kullanıcının Java plugin'ini (JRE'yi) indirmesi bağlantı hızına göre değişmekle birlikte dakikalar mertebesinde süren bir işlem olabilmektedir. Ancak kurulumu 1 dakikadan daha az sürmektedir. Intranet gibi şirket için network ortamlarında her hangi bir makineye konan JRE, saniyeler mertebesinde çok kısa sürede client makineye kurulabilmektedir. SDK (Software Development Kit - Yazılım Geliştirme Kiti) Java'da yazılmış programların çalışması için JRE gerekmektedir. Ancak JRE program geliştirmek için kullanılamaz. JRE sadece Java programlarını çalıştırmak için gerekli araçları içerdiğinden derleyici içermez. Bir programı çalıştırmak isteyen bir kulanıcının zaten bir program yapıp derlemesi gibi bir gereksinmesi yoktur. O yüzden program yapmak isteyenlerin Java SDK (Software Development Kit - Yazılım Geliştirme Kiti)'ni kurmaları gerekmektedir. SDK JRE'yi de içermektedir. Programcının derlediği programı elbette çalıştırması da gerekir. SDK belli bir klasöre kurulur ve hemen hemen bütün araçlar bu klasörün altındadır. Bu yüzden bir makineden diğerine kopyalandığında bile çalışabilir. Sistemde çok fazla değişiklik yapmadığından sistemin bütününü veya başka programları olumsuz yönde etkileyecek hiç bir işlem yapmaz. O yüzden de kurulumu riskli değildir. Ayrıca sisteme çok fazla bağlı olmadığından, sistemdeki değişikliklerden etkilenmez. Java'yı derlemek ve çalışırmak için standart tek bir editör (IDE, RAD) yoktur. SDK sadece derleme ve çalıştırmak için kullanılır. Java kodu yazmak için sadece bir metin düzenleyici yeterlidir. Ancak daha hızlı kod yazabilmek için çeşitli şirketlerin Java geliştirme ortamları vardır. Bunlarla çalışmak daha kolay olmasına karşın burada herbirinin ayrı ayrı incelenmesi mümkün değildir. SDK'yla çalışmak zor olsa da diğer bütün editörle yapılabilen her tür işlem SDK'yla da yapılabilir. Yani SDK 'eksik' değildir. Sadece kullanım kolaylığı sağlayan araçlar içermez. Buna karşın bedavadır ve diskte çok az yer kaplar. Ayrıca editörler her zaman en yeni Java versiyonunu içermezler. SDK'ile çalışmaya alışanlar Java'nın son versiyou çıktığı anda hatta daha test aşamasındayken bile onunla çalışmaya başlayabilirler. Belli şirketlerin çıkardığı editörlerin en son sürümü yakalamaları bir süre sonra olabilmektedir.

Derleme ve Çalıştırma (Windows İçin) Çalışma Ortamının Kurulması Burada JDK kurmak için standart bir yöntem anlatılacaktır. Bu şekilde çalışmanın bir çok yararı bulunmaktadır. Özellikle laboratuar ve ağ yöneticilerinin bu sisteme uymaları kendilerine bir çok fayda sağlayacaktır. Adım 1 : SDK Kurucu'yu İndirin SDK'yı download etmek için http://java.sun.com/j2se/1.4/download.html adresine gidin. 'Windows (all languages)' ve 'SDK' bölgesinde download seçeneğini tıklayın. Çıkan anlaşmaya 'Accept' deyin. Daha sonraki sayfada çıkan asıl download linkini tıklayın ve dosyayı c:\jdownload klasörüne (yoksa yaratıp) kaydedin. Adım 2 : SDK'yı Kurun Kurucu programı ('c:\jdownload\j2sdk-1_4_0-win.exe') çalıştırın ve klasör olarak c:\jsdk (yoksa yaratıp) verin. Adım 3 : Bir Çalışma Dizini Yaratın Diskte c:\jwork adıyla bir dizin yaratın. Adım 4 : Basit Bir Uygulama Yazın Çalışma dizinine 'c:\jwork\myclass.java' şeklinde bir dosya yaratın ve içine şunları aynen yazın public class MyClass{ public static void main(string[] args){ System.out.println("OK!"); Adım 5 : Source Kodu Derleyin c:\jsdk\bin\javac MyClass.java Adım 6 : Programı Çalıştırın c:\jsdk\java -cp c:\jwork MyClass

Eğer ekranın son satırında "OK!" görüyorsanız sistemize Java başarıyla kurulmuş demektir. Yazdığınız class'ları aynı şekilde derleyebilirsiniz. Basit Applicationlar Main Method'u Java'da yapılabilecek en basit program ekrana yazı yazan bir application'dur. Greeter.javaIndir Göster Gizle Kopar Satır Gizle Satır Göster 1 public class Greeter{ 2 public static void main(string[] args){ 3 System.out.println("Merhaba Dunya!"); 4 5 Basit bir işlem gerçekleştirmesine rağmen bu class, bir Java class'ı ve application'u hakkında bir çok bilgi içermektedir. Java'da her birim bir class olmak zorundadır. Bağımsız variable veya function yoktur. Her variable veya function mutlaka bir class'ın içinde yer alır. Her application aslında özel bazı koşullara sahip bir class'dır. Bir class'ın application olabilmesi için gerekli koşul public static void main(string[] args){ diye bir method'unun olmasıdır. Java bir class'ı uygulama olarak çalıştıracağı zaman, o class'ın main() method'unu bulur ve oradan itibaren çalıştırır. Bu method yukarıdaki şekliyle aynen bulunmalıdır yoksa Java bu class'ın bir program olduğunu anlayamaz. Ekrana yazı yazmak için System.out.println() şeklinde bir ifade kullanılır. Bu, System adlı class'ın out adlı property'sinin println() adlı methodunu çağırmak demektir. System class'ı uygulamanın çalıştığı ortamla ilişkili bazı property'ler ve method'lar barındırır. Ekrana yazmak için out adlı bir property'si bulunmaktadır. println() method'u da ekrana bir yazı yazıp yeni bire satıra geçer, yani bir satırlık yazı yazar. Görüldüğü gibi Java'da basit bir application yazmak için bile (Greeter örneğinde olduğu gibi) bir class yapmak gerekir. Ekrana yazı yazmak için bile bir classın (System'in ) bir property'sinin (out'un) bir method'unun (println()'in) çağırılması gerekmektedir. En basit application için bunları yapmak gerekiyorsa Java'nın çok zor ve öğrenilemez olduğu düşünülebilir. Ancak en karmaşık application'larda da sadece bu ve benzer işlemler yapılır. Sadece class, property ve method isimleri ve işlevleri değişir. Variable Kullanımı Greeter class'ıyla aynı işlevi yapan bir başka class yazalım.

GreeterWithVariable.javaIndir Göster Gizle Kopar Satır Gizle Satır Göster 1 public class GreeterWithVariable{ 2 public static void main(string[] args){ 3 String message="merhaba Dunya!"; 4 System.out.println(message); 5 6 Bu class ekrana yine aynı mesajı yazacaktır. Ancak bu kez ekrana yazılacak yazı önce bir variable'da saklanıyor, sonra ekrana basılmak üzere println()'e veriliyor. Java'da değişken bu şekilde yapılır : Type name=value; Type, bir değişkenin nasıl bir veri sakladığını gösterir. Java'da bir variable'ın mutlaka type'ının belli olması gerekir. String message="merhaba Dünya"; Şeklinde bir ifade de "message diye bir variable var, bunun type'ı String'dir ve ilk değeri 'Merhaba Dünya!'dır" demektir. String bir class'dır ve içerisinde karakter barındırır. Method Kullanımı Yine aynı şeyi yapan bir class yapalım. Ancak ekrana bir satır basan bir method kullanarak yapalım. GreeterWithMethod.javaIndir Göster Gizle Kopar Satır Gizle Satır Göster 1 public class GreeterWithMethod{ 2 public static void printline(string line){ 3 System.out.println(line); 4 5 public static void main(string[] args){ 6 printline("merhaba Dunya!"); 7 8 printline() methodunun işlevi kendisine verilen String'i ekrana basmaktır. main() methodunda da printline() methodu çağırılmaktadır. Bir method bir kez yazılıldıktan sonra defalarca kullanılabilir. public static void main(string[] args){ printline("merhaba Dünya!"); printline("merhaba Güneş!"); printline("merhaba Ay!"); Method tanımlamak şu şekilde olur : ReturnType name(parametertype1 parameter1,parametertype2 parameter2) Burada her methodun alacağı parameter'lar ve return edilecek değerin type'ı belirtilir. Eğer dönülecek hiç bir değer yoksa return type olarak void yazılır.