java ile programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf ·...

20
Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 1 Java ile Programlama TEMEL KAVRAMLAR Bilgisayar donanım ve yazılım olmak üzere iki ana bileşenden oluşur. Donanım (Hardware), bilgisayarın fiziksel yapısını ifade eder. Fiziksel yapı, sadece bir metal yığınından ibarettir. Kısaca gözle görebildiğimiz elle dokunabildiğimiz parçalardır. Bilgisayarda kullandığımız her türlü programlara yazılım (software) denir. Kısaca donanımı kullanmak için gerekli programlara yazılım diyoruz. Bir nevi bilgisayara hayat veren, canlılık veren programlar yazılımlardır. Yazılımsız bilgisayarın ölü bir bedenden farkı yoktur. Bu iki temel kavramdan sonra programlama dilleri yazılımın neresindedir? Sorusuna aşağıdaki şema ile cevap verebiliriz. Programlama dillerini kurup, çalıştırabilmek için donanım üzerinde yüklü bir işletim sisteminin (sistem yazılımının) olması gerektiği açıktır. Program, bilgisayara ne yapması gerektiğini söyleyen bir grup komuta (kod topluluğuna) verilen isimdir. Bu komutları veren kişiye programcı, komutların bütününe ise programlama dili denir. İnsan ya da programcı ( yapay dil - konuşma dili bilen) ile bilgisayar ( makine dili- “1,0” bilen) arasındaki iletişim nasıl gerçekleşir? Bu sorunun cevabı için şu örneği verebiliriz. Birbirinin konuşma dilini bilmeyen iki yabancı devlet adamı bir araya gelip nasıl görüşür veya anlaşır? Doğal olarak bu görüşmenin ancak tercüman veya çevirmenler aracılığı ile gerçekleşebileceğini söyleyebiliriz. Benzer şekilde bilgisayar üreticileri, aynı sorunu insanın konuşma dilini bilgisayarın makine diline çevirecek, bir nevi tercümanlık yapacak derleyici veya yorumlayıcı programlar” geliştirerek çözmüşlerdir. DERLEYİCİ ve YORUMLAYICI KAVRAMLARI

Upload: nguyenkhue

Post on 12-Apr-2018

279 views

Category:

Documents


11 download

TRANSCRIPT

Page 1: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

1

Java ile Programlama

TEMEL KAVRAMLAR

Bilgisayar donanım ve yazılım olmak üzere iki ana bileşenden oluşur. Donanım (Hardware),

bilgisayarın fiziksel yapısını ifade eder. Fiziksel yapı, sadece bir metal yığınından ibarettir. Kısaca

gözle görebildiğimiz elle dokunabildiğimiz parçalardır. Bilgisayarda kullandığımız her türlü

programlara yazılım (software) denir. Kısaca donanımı kullanmak için gerekli programlara yazılım

diyoruz. Bir nevi bilgisayara hayat veren, canlılık veren programlar yazılımlardır. Yazılımsız

bilgisayarın ölü bir bedenden farkı yoktur.

Bu iki temel kavramdan sonra programlama dilleri yazılımın neresindedir? Sorusuna aşağıdaki şema

ile cevap verebiliriz.

Programlama dillerini kurup,

çalıştırabilmek için donanım

üzerinde yüklü bir işletim

sisteminin (sistem yazılımının)

olması gerektiği açıktır.

Program, bilgisayara ne yapması

gerektiğini söyleyen bir grup

komuta (kod topluluğuna) verilen

isimdir. Bu komutları veren kişiye

programcı, komutların bütününe ise programlama dili denir.

İnsan ya da programcı ( yapay dil - konuşma dili bilen) ile bilgisayar ( makine dili-

“1,0” bilen) arasındaki iletişim nasıl gerçekleşir?

Bu sorunun cevabı için şu örneği verebiliriz. Birbirinin konuşma dilini bilmeyen iki yabancı devlet

adamı bir araya gelip nasıl görüşür veya anlaşır? Doğal olarak bu görüşmenin ancak tercüman veya

çevirmenler aracılığı ile gerçekleşebileceğini söyleyebiliriz. Benzer şekilde bilgisayar üreticileri, aynı

sorunu insanın konuşma dilini bilgisayarın makine diline çevirecek, bir nevi tercümanlık yapacak

“ derleyici veya yorumlayıcı programlar” geliştirerek çözmüşlerdir.

DERLEYİCİ ve YORUMLAYICI KAVRAMLARI

Page 2: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

2

Yazdığımız programları makine diline çeviren, makine dilinde elde edilen sonuçları bizim anladığımız

biçime dönüştüren programlara çevirici ( derleyici veya yorumlayıcı) programlar denir.

Kaynak Program (Source Program)

Bir programlama dili ile yazılmış programlardır. Kaynak program dosyasının uzantısı örneğin Visual

Basic dilinde ise .bas veya .frm , C dilinde yazıldı ise .c , Java dilinde yazıldı ise .java, Assembly

dilinde yazıldı ise .asm dir.

Amaç Program (Object Program)

Bir programlama dilinde yazılmış kaynak programın derlenmesi ile elde edilen program. Amaç

program makine diline dönüştürülmüş ve çalıştırılmaya hazır programdır.

Programlama dilleri, kaynak kodun makine koduna (amaç programa) çevrilmesi ve çalıştırılması

işleminde derleyici, yorumlayıcı veya her ikisini birlikte kullanabilir.

Derleyici (Compiler)

Programlama dili ile yazılmış bir programı, makine dili ile yazılmış amaç veya hedef programa

çevirirler. Yüksek seviyeli bir dil ile yazılanlarda kurallarına ters düşen hata kontrollerini

oluşturduktan sonra komut ve bilgilerin makine tarafından tanınarak işlemlerin yapılmasını sonuçların

tekrar yüksek seviyeli program diline anlaşılır duruma çevrilmesini sağlarlar. Fortran, C, C ++, C#,

Pascal, Delphi gibi diller derleyici kullanırlar.

Yorumlayıcı (Interpreter)

Program kodlarının ilk satırından son satırına kadar satır satır belirtilmiş komut ve işlemleri

inceleyerek kaynak programın hatalarının düzeltilmesine imkân veren ve çalıştıran programdır.

Herhangi bir komut satırının çevrilmesinde ya da çalıştırılmasında bir hatayla karşılaştığında çalışmayı

durdurur ve hatalı satırı programcıya bildirir. Basic, PHP, Perl, Lisp gibi diller yorumlayıcı kullanırlar.

Derleyici ile Yorumlayıcının Farkı

Page 3: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

3

Yorumlayıcıda kodun okunması ve çevrilmesi programın çalışması sırasında yapıldığından hız

düşüktür. Ayrıca yorumlayıcı yalnızca karşılaştığı ilk hatayı rapor edebilir. Bu hata düzeltildiğinde

sonraki çalışmada da program ancak bir sonraki hataya kadar ilerleyebilir. Oysa derleyici kaynak

kodundaki bütün hataları bulabilir. Buna karşılık hata ayıklama işlemi yorumlayıcılarla daha kolaydır.

Ayrıca derleyicilerle gelen bazı sınırlamaların kalkması nedeniyle daha esnek bir çalışma ortamı

sağlanır. Son yıllarda iki yöntemin üstün yanlarını birleştiren karma diler (Java ve Python gibi) öne

çıkmaya başlamışlardır.

Derleyici, programın tamamını kontrol eder bir satırında hata varsa program satırları bittikten sonra

hatayı gösterir. Yani kaynak kodu bir defa çevirir. Yorumlayıcı ise programın bir yerinde hata varsa

çalışırken hatalı satıra geldiğinde durur ve hata mesajı verir. Hata düzeldikten sonra tekrar birinci

satırdan itibaren kodu çevirir.

Hem derleyici hem de yorumlayıcı tekniği birlikte de kullanılabilir. Bu tip çalışmada kaynak kodu

sanal bir bilgisayarın makine koduna (bytecode) çevrilir ve daha sonra bu sanal bilgisayarı

gerçekleyen bir program yardımıyla yorumlanarak çalıştırılır. Örneğin Java dilinde yazılmış bir

kaynak kodu önce Java derleyicisinden geçirilerek Java Sanal makinesinin (Java Virtual Machine-

JVM) makine koduna dönüştürülür; sonrada bu sanal makineyi gerçekleyen bir Java çalışma ortamı (

Java Runtime Environment – JRE ) yardımıyla çalıştırılır. Bu işlemin nasıl yapıldığı aşağıda

grafiksel olarak gösterilmiştir.

Bağlama (Linking)

Günümüzde yazılan birçok program, genellikle

programlama dili içerisinde bulunan

kütüphane fonksiyonlarına ve yordamlara

bağlantı içerdiğinden kaynak programdan

üretilen amaç program kodunun (obje)

bilgisayarda çalıştırılmaya hazır olması için bu

amaç program (object code) bağlama (linking) işlemine tabi tutulur. Bu bağlama işleminide bağlayıcı

Page 4: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

4

(Linker) denilen yazılımlar yapmaktadır. Bu işlem sonucu eksik parçaların program kodu içerisine

eklenmesi ile artık yazılan program (uygulama dosyası) çalışmaya hazır hale gelmiş olur.

Algoritma

Algoritma herhangi bir problemin çözümü için izlenecek yol anlamına gelmektedir. Bir problemi sonlu bir zamanda çözebilmek için geliştirilmi ş açık seçik, yürütülebilir, sıralı, basit ve gerektikçe tekrar eden adımlardan oluşan yöntemlerdir. Bir problemin çözüleceği yöntemi oluşturma ise algoritma tasarlama olarak tanımlanır. Bu tanıma göre bir algoritmanın özellikleri;

� Açık seçik olmalı (belirsizliklere yer vermemesi) � Yürütülebilir olmalı � Sıralı olmalı

olarak sıralanabilir.

Algoritma, bir problemi çözmek için geliştirilmi ş açık- seçik, yürütülebilir ve sıralı adımlardan oluşan bir yöntemdir. Bir algoritma, programlama dillerine (C, Pascal, Java gibi) uygulandığında program adını alır. Algoritmalar tarafından işlenen en temel elemanlara (sayısal bilgiler, metinsel bilgiler, resimler, sesler, vb.) veri adı verilir. Bir algoritmanın etkin, anlaşılır ve doğru olabilmesi için algoritmanın işleyeceği verilerin düzenlenmesi, işlenmesi gerekir.

☻Veri (data), işlenmemiş bilgi veya bilginin ham halidir. Bilgi ise, en basit anlamda verinin işlenmiş şeklidir

Verilerin düzenlenme biçimini belirleyen yapıtaşlarına veri yapıları denir. Bir program değişkeni bile basit bir veri yapısı olarak kabul edilebilir. Değişik algoritmalarda verilerin diziler, yığınlar, kuyruklar ve ağaçlar gibi veri yapıları şeklinde düzenlenmesi gerekebilir. Bir programda veri, yapı ve algoritma, önemli ve birbirlerinden ayrılmaz bileşenlerdir. Verilerin düzenlenme biçimleri de önemlidir. Çünkü yapı iyi tasarlandığında, etkin, anlaşılır, doğru ve hızlı çalışıp az kaynak kullanan algoritma geliştirmek kolaylaşır.

Algoritma sözcüğü nereden gelmektedir? Algoritma sözcüğü adını Ebu Abdullah Muhammed İbn Musa El Harezmi adındaki Müslüman - Türk âlimden almıştır. Adı Latinceye Alkhorizmi, Fransızcaya Algorithme, İngilizceye ise Augrim şeklinde geçmiştir. Âlimin ismini telaffuz edemeyen Avrupalılar "algori zm" sözcüğünü "sayıları kullanarak aritmetik problemler çözme

kuralları" anlamında kullanırlar. Bu sözcük daha sonra "algoritma"ya dönü şür ve yaygın olarak kullanılır. Latince çevirisinin Avrupa'da ço k büyük ilgi gördüğü, “Hisab el-cebir ve el-mukabala” kitabı dünyanın ilk cebir kitabı ve aynı zamanda ilk algoritma koleksiyonunu oluşturur. Âlimin 780 (H.164) senesinde Harezm’de doğduğu kabul edilir. 850 (H.236) senesinde ise Bağdat’ta vefat etmiştir.

Page 5: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

5

PROGRAMLAMA DİLLERİ VE JAVA DİLİ

Bir programlama dili, programcının bir bilgisayara ne yapması gerektiğini anlatmasının

standartlaştırılmış bir yoludur.

Bir programcı komutları farklı programlama

dilleri kullanarak yazabilir. Günümüzde

yüzlerce programlama dili mevcuttur. Bu

dilleri Şekil’de gösterildiği gibi insanın

algılamasına veya makineye yakın olmasına

göre 3 gruba ayırabiliriz;

1. Alt seviyeli diller ( Assembly dili)

2. Orta seviyeli diller ( C, Ada dili)

3. Yüksek seviyeli diller( Visual Basic,

Pascal, Delphi, Cobol, FoxPro, Java gibi..)

4.

NOT: Programlama, temel olarak çözüm algoritması geliştirme işlemi, bilgisayar programı ise bir

programlama dili ile yazılmış algoritmadır.

Programlama dilleri kavramı, günümüzde kabına sığamamış cep telefonlarından kol saatlerine kadar

tüm işlem birimlerinde (Mikroişlemci-CPU, Mikro denetleyici-MCU, Sayısal İşaret İşleyici-DSP …)

bulunan elektronik cihazlarda kullanım alanı bulmuştur. Şüphesiz bu yönelim, programlanabilir bir

elektronik aygıtın özelleştirilebilme büyüsünden ileri gelmektedir.

Programlama dilleri, daha sonraları yalnız programlama kavramı içerisine sıkışıp kalmadı. Grafik

Kullanıcı Arabirimi (GUI) tanımlama, veritabanı sorgulama gibi alanlarda da kullanım bularak

uygulama geliştiricilerin daha çok işlem yapabilen programları, daha kısa sürede yazmalarına imkân

tanıdı. Programalama dilleri ise artık yalnızca uygulama geliştirmek için değil uygulamaları

özelleştirmek için de sıkça kullanılır hale geldiler.

Günümüzdeki birçok modern programlama dilinin temeli, hiç şüphesiz Zuse'un Plankalkül hesaplama

dili ve IBM tarafından geliştirilen Fortran'ın öncülüğünden sonra uygulama sahası bulmuştur.

Programlama dillerinin tarihsel gelişimindeki FORTRAN, ALGOL, LISP, Pascal, APL, SIMULA,

CPL, Ada, Smalltalk, BASIC, C gibi büyük atlama taşlarının bir çoğu günümüzde şekil değiştirmek

suretiylede olsa güncelliğini korumaktadır. Bunların yanında daha yakın bir tarihte geliştirilmi ş olan,

bu dillerin torunları olarak gösterebileceğimiz Java, C++, C#, Python, Ruby, Perl, Delphi, Visual

Page 6: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

6

Basic, PHP gibi diller de sahnede kendilerini göstermiş ve programlama dili pastasında önemli bir

pay sahibi olmuşlardır.

1.1. JAVA PROGRAMLAMA D İLİNİN ÖZELL İKLER İ

Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış gerçek

nesneye yönelik, platformdan bağımsız, yüksek performanslı, çok işlevli, yüksek seviye, adım adım

işletilen bir dildir. İlk sürümü 1996 yılında çıkmış olup, 1.1,1.2,1.3,1.4 ve 5.0,6.0 gibi sürümleri

geliştirilmi ştir.

Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir platform dili

olarak düşünülmüştü. Ancak platform bağımsızlığı özelliği ve standart kütüphane desteği C ve

C++ 'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan, hemen her

yerde kullanılmaya başlanmıştır. Şu anda özellikle kurumsal alanda ve mobil cihazlarda son derece

popüler olan Java özellikle J2SE 1.4 ve 5 sürümü ile masaüstü uygulamalarda da yaygınlaşmaya

başlamıştır. Java’nın ilk sürümü olan Java 1.0 (1995) Java Platform 1 olarak adlandırıldı ve

tasarlama amacına uygun olarak küçük boyutlu ve kısıtlı özelliklere sahipti. Daha sonra platformun

gücü gözlendi ve tasarımında büyük değişiklikler ve eklemeler yapıldı. Bu büyük değişikliklerden

dolayı geliştirilen yeni platforma Java Platform 2 adı verildi ama sürüm numarası 2 yapılmadı, 1.2

olarak devam etti. 2004 sonbaharında çıkan Java 5, geçen 1.2, 1.3 ve 1.4 sürümlerinin ardından en

çok gelişme ve değişikliği barındıran sürüm oldu. Java SE 7 ise (kod adı: Dolphin) Sun'un üzerinde

çalıştığı, Java teknolojisinin gelecekteki sürümüdür. 13 Kasım 2006 da Java platformu GPL lisansıyla

açık kodlu hale gelmiştir. Java dilinin farklı sürümleri ve çıkış tarihleri aşağıdaki şekilde

gösterilmiştir.

Java dilinin temel özelliklerini sıralarsak;

Page 7: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

7

Basit (Simple) Java dili kısa ve özlü komut yapısına sahip, öğrenmesi kolay bir dildir. Ayrıca

C,C++ diline benzerliği nedeni ile bu dillere aşina olanlar için Java’da kod

yazmak kolay olacaktır.

Güvenli (Secure) Java programlama dili ile hazırlanan programlar güvenliğin çok önemli olduğu

uygulamalarda (internet uygulamaları gibi) tercih edilmektedir. C, C++ gibi

dillerden daha güvenlidir. Sadece derleme esnasında değil aynı zamanda

yükleme(çalıştırma) esnasında da Byte-code doğrulaması yapılır.

Taşınabilirlik (Portable) Java teknolojisinin en önemli özelliği her ortamda çalışabilmesidir. JVM (Java

Sanal Makinesi) nin kurulduğu her ortamda (Java platformunu destekleyen her

türlü ortamda) çalışır.

Nesne Yönelimli (Object

Orient)

Nesne yönelimli bir programlama dilidir. Java’da her şey ya nesnedir ya da bir

nesnenin parçasıdır.

Sağlam (Robust) Java sağlam bir dildir. Programlamadaki hataların çoğu daha yazılım

aşamasında anlaşılabilmektedir. Yazılım aşamasında yakalanamayan hatalar,

çalışma zamanında (run-time) düzeltilebilmektedir.

Çoklu kullanım

(Multithreaded)

Java dili çoklu kullanım (multithreaded) programlama desteği sağlar. Çoklu

kullanım, program içinde birden fazla işlemin çalışabilmesi demektir.

Mimariden bağımsız

(Architecture-neutral)

Bir belirli makine ya da işletim sistemi mimarisine Java programlama dili bağlı

değildir.

Yorumlayıcı- Interpreted Java dili hem derleyici hem yorumlayıcı kullanır.

Yüksek performans

(High performance)

Java diğer dillere nazaran nispeten yavaş olmakla birlikte, Java bytecode’u

çalışma hızı için en iyi şekilde optimize edilmektedir.

Dağıtık

(Distributed )

'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. (Özellikle internet

uygulamalarında Java tercih edilmektedir.

Dinamik (Dynamic )

Java da bir programın birimlerinin (kütüphaneler, modüller veya sınıfların)

birbirine bağlanması çalışma zamanında (run-time) yapılır. Kullanılan

birimlerin içyapısı değiştirildi ğinde, bu birimleri kullanan programın değişmesi

gerekmez

Ücretsiz Java programını ve her türlü yazılımını internet adresinden (www.java.sun.com)

ücretsiz edinebilirsiniz.

Page 8: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

8

Java, kendini çok hızlı bir şekilde yenileyen bir dil, sürekli yeni versiyonları çıkmakta ve her çıkan

sürümle birlikte dile yeni özellikler eklenmektedir. Bu programcılar için hem dezavantaj hem de

avantaj sağlamaktadır. Dezavantajı, programcının sürekli yeni özellikleri öğrenmek zorunda kalması

ama bu dezavantajı java dili geriye uyumluluk ile avantaja dönüştürmektedir. Yani 1.4 sürümündeki

bir komut, 1.6 sürümünde de çalışmaktadır. Java nın mevcut sürümleri ve aralarındaki bazı farkları

aşağıdaki listede görebilirsiniz.

• 1995: Version 1.0 :

o 8 paket ile 212 sınıfa(class) sahip.

o İlk sürüm

• 1997: Version 1.1:

o 23 paket ile 504 sınıfa (class) sahip.

o JVM iyileştirildi, iç sınıflar ve daha etkili hata yakalama içermektedir.

o Çoğu web tarayıcı 1.1 ile uyumlu hale geldi

• 1999: Version 1.2:

o 59 paket ile 1520 sınıfa (class) saip.

o Java 2 Platformu olarak adlandırıldı.

o Eski sürümlere oranla 10 kat daha hızlıdır.

o API'de önemli değişiklikler, reflection özelliği ve JIT Derleyicisi nin eklenmesi ancak

dilin kendisinde önemli değişiklikler olmadı.

• 2000: Version 1.3:

o 76 paket ile 1842 sınıfa (class) saip.

o Hotspot JVM sunuldu.

• 2002: Version 1.4:

o 135 paket ile 2991 sınıfa (class) saip.

o XML desteği ve pek çok yeni API değişikliği

• 2004: Version 5.0 (1.5 sürümü):

o 165 paket ile 3000 den fazla sınıfa (class) sahip.

o Grafik alt yapısında ve sanal makine başarımında gelişmeler oldu.

o For- each benzeri döngü yapısı, yeni komutların eklenmesi

• 2006: Version 6.0 (1.6 sürümü):

o Java 1.5 göre daha fazla paket ve sınıfa sahip.

o Derleyici erişimi, program içerisinden javac derleyicisi kontrol edilebiliyor.

o Daha fazla güvenlik desteği

Page 9: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

9

o Yeni masaüstü özellikleri ve pek çok yeni API değişikliği

Bir Java programını çalıştırabilmek için Sun’ın web adresinden (

http://java.sun.com/javase/downloads ) en son sürümünü indirebilirsiniz (download edebilirsiniz).

Örnek olarak Java 6.0 sürümünü indirebilirsiniz.

Aşağıdaki şema Java programlama dilinde yazılan bir programın derleme aşamalarını göstermektedir.

BASİT BİR JAVA PROGRAMININ KALIBI

Page 10: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

10

Her programlama dilinde olduğu gibi Java programlama dilinde de komutlar (sınıfları, nesneleri

içeren), sabitler, mesajlar, değişkenler, operatörler ve açıklama satırları vardır. Bu kavramları

açıklamadan önce Java dilinin yapısını (ne nereye yazılıyor?) basit bir program (Merhaba.java)

üzerinde açıklayalım.

? Herhangi bir Java programı derlendikten sonra çalıştırılabiliyorsa, programın belli bir

metodundan çalıştırılmaya başlanır. Bu metot nedir?

Cevap: public static void main(String[] args) { ... }

Açıklama;

public deyimi ile yöntemin herkese açık olduğunu, static deyimi ile sınıf tarafından paylaşıldığı, void

deyimi ile geriye değer döndürmediğini, main yöntemine sahip olduğunu, String [] args ile yöntemde

Page 11: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

11

kullanacağımız parametreleri belirtiyoruz. Parametre belirtirken sınıfını ve parametre adını veriyoruz.

String deyimi sınıf adı, args ise parametre adını belirtir

Java Dili Gramer Yapısı

Java programlama dili C,C++ dilinin gramer yapısını kullanır. Her komut satırı ‘;’ karakteri ile

sonlandırılmalıdır. Komutlar küçük harflerle yazılır (class deyimini Class şeklinde yazdığınızda

program hata verir). Açıklama (Yorum) satırları içinde;

Eğer tek satırlık bir açıklama yapılacaksa ‘//’ karakteri,

// Bu karakterlerden sonra yazılanlar ekranda görünmez

Birden fazla satırlık açıklama yapılacaksa ‘ /* ………. */ ’ karakterleri kullanılır.

/* Bu karakterlerden sonra yazılanlar ekranda görünmez ve

Derleyici tarafından dikkate alınmazlar */

İlk Java Programımız;

Bir Java programını (örneğimizde Merhaba.java isimli) farklı yöntemlerle çalıştırabiliriz.

I.Yol : Not defteri ile..

1.adım: Metin editöründe (Not defteri) ilk Java programını yazıyoruz.

2.adım: Yazdığım programı javac derleyicisinin bulunduğu klasör içerisine “.java” uzantılı

kaydediyoruz. Bunun için;

Dosya ���� Farklı Kaydet ���� “C:\Program Files \ Java\jdk1.6.0_02\bin” klasörünü seçiyoruz ve

Merhaba. java ismiyle kaydediyoruz.

Page 12: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

12

3.adım: MS-DOS komut istemine geçiyoruz (Windows XP için, Başlat����Çalıştır����CMD yazarak ).

Programı derlemek için javac isimli derleyicinin bulunduğu yolu yazıyoruz. (Örnek olarak

“ C:\Program Files \ Java\jdk1.6.0_02\bin” klasörünün içerisinde)

4.Adım: javac Merhaba.java komut satırı ile java uzantılı programı derliyoruz.

Programda bir yazım hatası yoksa derlenecektir. Bu aşamada “Merhaba.class” dosyası oluşmuş olur.

5.adım: class dosyasını oluşturduğumuz dosyayı son aşama olarak java komutu ile (java Merhaba )

çalıştırabiliriz.

Programı çalıştırdığımızda ekrana

“ Merhabalar, bu ilk JAVA Programımız”

mesajını aldık.

Not: (Windows XP için) Her defasında MS-DOS komut isteminde programı derlemek için javac isimli

Page 13: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

13

derleyicinin bulunduğu yolu yazmamak (“C:\Program Files \ Java\jdk1.6.0_02\bin” ) için ; Masaüstündeki Bilgisayarım (My Computer) simgesine sağ(ters) tıklama yapılır � Özellikler (Properties) �Gelişmiş (Advanced) �Ortam Değişkenleri (Environment Variables) seçilir ve PATH (yol) tanımı “; C:\Program Files \ Java\jdk1.6.0_02\bin” şeklinde yapılır. Artık sadece MS-DOS komut isteminde “c:\> javac dosya_adi.java” yazarak programınızı derleyebilirsiniz.

2.yol: Bir Java Editör programı (JCreator) ile

Eğer MS-DOS komut istemi ile uğraşmak istemiyorsanız, yazdığım kod direkt çalışsın diyorsanız, bir

Java editörü kullanmanızı tavsiye ederim. Sık kullanılan bazı Java editörleri ve ücretsiz

indirebileceğiniz web adresleri aşağıda verilmiştir.

• Eclipse (http://www.eclipse.org/downloads)

• NetBeans (http://www.netbeans.info/downloads)

• JCreator (http://www.jcreator.com/download.htm)

• BlueJ (http://www.bluej.org/download/download.html)

1. Adım: Bizde kitabımızdaki Java uygulamalarını JCreator editör programı ile derleyip, çalıştırdık.

Bunun için ilk önce JCreator programının “JCreator LE v4.00” ücretsiz olan sürümünü yukarıda

belirtilen web adresinden indirdik ve bilgisayarımıza kurduk.

2. Adım:

Programımızı yazdıktan sonra F5 tuşuna basarak çalıştırdık.

3.yol: Bir Java Apleti ile

Page 14: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

14

Bir Java apleti, appletviewer programı veya html (web) dosyası ile çalıştırılabilir. Apletler sayesinde

görsel araçlar (buton, label, gibi) kullanılabilmektedir. Yazılan java kodları derlenerek önce .class

dosyasına dönüştürülür, daha sonrada bir html dosyası içinde kullanıcıya sunulur.

Java aplet program kodunun başlangıcında iki önemli paketi import etmek (çağırmak) gerekir.

Grafiksel ara yüz için java.awt ve Applet sınıfı için gerekli olan java.applet paketini çağırmamız

gerekir.

Merhaba.java dosyasını aşağıdaki gibi oluşturup derliyoruz ( Merhaba.class dosyası haline

dönüştürüyoruz.

import java.awt.*;

public class Merhaba extends java.applet.Applet {

public void paint(Graphics g) {

g.drawString ("Merhabalar, bu ilk JAVA Programımız",110,100);

}

}

Daha sonra HTML tagları arasına applet kodumuzu yerleştiriyoruz. Bunun için Not defterini açıp

aşağıdaki kodu yazalım ve

<html>

<applet code=" Merhaba.class" width=300 height=150>

</applet>

</html>

Bu dosyamızı Merhaba.html olarak kaydedip, MS-DOS komut satırında appletviewer komutu ile

C:\Program Files \ Java\jdk1.6.0_02\bin appletviewer Merhaba.html

Veya

Page 15: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

15

C:\Program Files \ Java\jdk1.6.0_02\bin klasöründeki Merhaba.html dosyasının üzerine çift

tıklayarak çalıştırdığımızda aşağıdaki ekran çıktısını elde ederiz.

GİRİŞ-ÇIKIŞ (I/O) İŞLEMLERİ İÇİN GEREKLİ KOMUTLAR

Java dilinde, giriş – çıkış işlemleri için gerekli olan kavramları ( komut, sınıf ve paketler) kısaca

açıklayalım.

Paket (Package) Kavramı:

Java dilinde modülerliği sağlayan en önemli kavramlardan biri paket kavramıdır. Birbiriyle işlev veya

kullanım açısından ilişkili sınıf (class) lar ‘paket' adı verilen bir birim altında birleştirilir. Bir sınıfın

(class) ait olduğu paketi belirtmek için 'java.paketin_adi.sınıfın_adi' anahtar kelimesi kullanılır

(java.util.Scanner gibi).

Java'nın kendi API (Application Programming Interface - Uygulama Programlama Arayüzü) birçok

sınıftan oluştuğu için birçok paket altında gruplandırılmıştır. Bunların çoğu 'java.' veya 'javax.'

ifadeleri ile başlar. 'javax' öneki daha çok, sonradan extension (ekleme) paketler için kullanılır.

Önceden 'extension' olan paketler daha sonra standart API'a dâhil olabilmektedir. Hangi paketlerde ne

tür sınıfların bulunduğunun öğrenilmesi iyi olur. Örneğin, ara yüzle ilgili sınıflar 'java.awt' , tarih ve

zamanla ilgili fonksiyonlar, rastgele sayı üreteci gibi genel araçlar ‘java.util’ paketindedir.

Page 16: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

16

Aslında bütün class'lar bir pakete ait olmak zorundadır. Bir program yazıldığında otomatik olarak Java

standart kütüphanesi (java.lang paketi) çağrılır. Diğer herhangi bir sınıfı(class) kullanacağımız zaman

o sınıfın ait olduğu paket, import deyimi ile çağrılır.

Import Kavramı:

Bir sınıfın, kendisiyle aynı pakette olmayan başka bir sınıfı kullanabilmesi için, sınıf(class) tanımından

önce import edilmesi gerekir. Bu sadece kullanılan sınıfların tam olarak hangi pakette olduğunu

söylemek anlamına gelir. Bunun için 'import ' anahtar kelimesi kullanılır. import kelimesi, kaynak

kod o paketi kullanmadan önce yazılmalıdır.

Kullanım şekli;

import paket_adi.sınıf_adi;

Java aynı dizin içindeki sınıfları, bir paketin içindeymiş gibi görür. Import deyimi ile birlikte * joker

karakteri kullanılabilir. Örneğin

import java.util.*;

şeklindeki tanımlama, “java.util paketindeki tüm sınıfları çağır” anlamındadır. * joker karakterini

ilgili bir paket için kullanabilirsiniz fakat java.* şeklinde Java’nın altındaki tüm paketlere

erişemezsiniz.

Scanner deyimi:

Giriş – Çıkış işlemleri için java.util.Scanner sınıfının yöntemleri kullanılır. Scanner, Java 5.0 ile

birlikte gelen yeni bir sınıftır. Daha önceki versiyonlarda (Java 1.4.0 gibi) bulunmaz. Scanner

sınıfının yöntemlerini kullanabilmek için programın başında “import java.util.Scanner” veya

“ import java.util. * ” ifadesi kullanılır.

Bilgi giri ş-çıkışı için genelde üç yöntem kullanılır. Bunlar;

• System.in – Klavyeden bilgi girişi için kullanılır.

o { Scanner oku=new Scanner(System.in); gibi}

• System.out -- İşlem sonuçlarını, mesajları ekranda göstermek için kullanılır.

• System.err – Hata mesajlarını verir.

Page 17: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

17

Klavyeden bilgi girişi yapıldıktan sonra o veri üzerinde işlem yaparken Scanner sınıfının bazı

yöntemleri kullanılır. Bu yöntemler, Tablo1-1.de gösterilmiştir.

Tablo 1-1 Bazı Scanner Yöntemleri

İşlevi Yöntem

Klavyeden girilen tamsayı (integer)

türündeki sayıyı okur.

nextInt()

Klavyeden girilen tamsayı (byte) türünde ki

sayıyı okur.

nextByte()

Klavyeden girilen Boolean türündeki önermeyi

okur.

nextBoolean()

Klavyeden girilen ifadeyi kesirli(gerçek)

sayı (float) türüne çevirir

nextFloat()

Klavyeden girilen ifadeyi uzun

kesirli(gerçek) sayı (double) türüne

çevirir

nextDouble()

Klavyeden girilen String ifadenin ilk

kelimesini okur {bo şluk (space) karakterine

kadar olan kısmı tarar}

next()

Klavyeden girilen tüm satırı okur. String

türünde bir satır okur.

nextLine()

Tek bir karakteri okur (girilen ifadeyi

karakter karakter okur)

findInLine(“.”).charAt(0)

System.out.print( )/ println( ) deyimi:

Page 18: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

18

Ekrana yazı yazmak için System.out.println( ) veya System.out.print( ) şeklinde bir ifade kullanılır.

Bu işlem, System adlı sınıfın out adlı özelliğinin print() veya println() adlı yöntemini çağırarak

gerçekleşir. print () deyimi ile mesajlar yan yana yazılırken, println() deyimi ile mesaj yazıldıktan

sonra bir alt satıra geçilir ( alt alta yazılır). Örneğin aşağıdaki kod satırlarının;

System.out.print ("Sakarya");

System.out.print ("Adapazarı");

System.out.println ("MYO");

System.out.println("Esentepe");

Ekran çıktısı aşağıdaki gibidir.

System.out.printf( ) deyimi:

Ekrana yazı yazmak ve çıkış formatını belirlemek için Java diline 1.5 sürümü ile birlikte printf()

yöntemi eklenmiştir. Bu deyim print() deyimi ile aynı işleve sahip olmakla birlikte ek özellikler

içermektedir. Kullanım şekli;

System.out.printf ( çıkı ş formatı, ifadeler);

printf () metodu, çıkış formatı olarak 2. Bölümde bahsedilen çıkış karakterlerine ek olarak aşağıdaki

karakterleri de kullanır.

Basılacak Karakter

veya İşlevi

Çıkış

Karakteri Örnek kod Ekran Çıktısı

Ondalıklı

(Decimal) tamsayı %d

System.out.printf( "%d\n", +26 );

System.out.printf( "%d\n", -26 );

26

-26

Sekizli (Octal)

tamsayı %o System.out.printf( "%o", +26 ); 32

Onaltılı

(Hexadecimal)

%x veya

%X

System.out.printf( "%x\n", 26 );

System.out.printf( "%X", 26 );

1a

1A

SakaryaAdapazarıMYO

Esentepe

Page 19: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

19

tamsayı

Tek Karakter %c System.out.printf( "%c",'A' ); A

String ifade %s veya

%S

System.out.printf( "%s\n","Ali" );

System.out.printf( "%S\n","Veli"

);

System.out.printf("%3.2s\ n","bade"

);

(3 karakter bo şluk bıraktıktan

sonra 2 karakter gösterir)

Ali

VELİ

ØØba

Gerçel (float)

sayı, Standart

gösterim

%f System.out.printf( "%f", +26.0 ); 26,000000

Gerçel(float)sayı,

Bilimsel gösterim

%e veya

%E System.out.printf( "%e", +26.0 ); 2.600000e+01

DEĞERLENDİRME SORULARI

1. Program, programcı ve programlama dili kavramlarını kısaca açıklayınız?

2. Yazılım ve donanım kavramlarını kısaca açıklayıp sistem yazılımlarının fonksiyonunu belirtiniz?

3. Derleyici ve yorumlayıcı kavramlarını kısaca açıklayıp, aralarındaki farkı belirtiniz?

4. Algoritma nedir? Algoritma kelimesi nereden gelmektedir?

5. Veri, bilgi kelimelerini açıklayıp, aralarındaki farkı belirtiniz?

6. Java dilinin diğer programlama dillerinden farklarını belirtiniz?

7. Bir java editörü ile yazdığımız kaynak dosyamızı (.java uzantılı) derlediğimizde (javac ile) dosya uzantımız ne olur?

8. Java programlama dili hangi dilin gramer yapısını kullanır?

9. Yaygın olarak kullanılan Java editör programları hangileridir?

10. Bir sınıfın, kendisiyle aynı pakette olmayan başka bir sınıfı kullanabilmesi için, sınıf(class) tanımından önce hangi deyim kullanılmalıdır?

11. Yüksek seviyeli diller ile alt seviyeli diller arasındaki farklar nelerdir?

12. Byte kodundan makine diline çevrimi sağlayan programa ne ad verilir?

13. Kalveyeden girilen iki sayının çarpımını hesaplayan basit bir matematiksel işlemin algoritmasını yazınız.

Page 20: Java ile Programlama - cobanoglu.wikispaces.comcobanoglu.wikispaces.com/file/view/java.pdf · Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4

20

14. Klavyeden girilen ifadeyi aynen ekranda gösteren programı yazınız?

15. Aşağıdaki programın ekran çıktısı ne olur?

import java.util.*;

class TarihSaat{

public static void main(String[] args) {

Date bugun = new Date();

System.out.println ("Sakarya Universitesi");

System.out.printf("Date nesnesinin üretti ği Tarih-Saat..|%s|\n", bugun);

System.out.printf("Formatlı Tarih-Saat..|%tc|\n", bugun);

System.out.printf("(YYYY-AA-GG) Formatında Tarih.. |%tF|\n", bugun);

System.out.printf("(AA-GG-YY) Formatında Tarih..|% tD|\n", bugun);

System.out.printf("12 Saat Formatında..|%tr|\n", b ugun);

System.out.printf("24 Saat Formatında..|%tR|\n", b ugun);

System.out.printf("24 Saat Formatında Saniyeli..|% tT|\n", bugun);

} }