Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 çalıştırabilmek için üzerinde yüklü bir kurup, donanım 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 1 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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ı 2 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 MachineJVM) 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 kütüphane dili içerisinde fonksiyonlarına ve bulunan 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ı 3 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-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 "algorizm" 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 çok büyük ilgi gördüğü, “Hisab el-cebir ve elmukabala” 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. 4 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 5 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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; 6 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 Nesne yönelimli bir programlama dilidir. Java’da her şey ya nesnedir ya da bir Orient) 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 Java dili çoklu kullanım (multithreaded) programlama desteği sağlar. Çoklu (Multithreaded) kullanım, program içinde birden fazla işlemin çalışabilmesi demektir. Mimariden bağımsız Bir belirli makine ya da işletim sistemi mimarisine Java programlama dili bağlı (Architecture-neutral) değildir. Yorumlayıcı- Interpreted Java dili hem derleyici hem yorumlayıcı kullanır. Yüksek performans Java diğer dillere nazaran nispeten yavaş olmakla birlikte, Java bytecode’u (High performance) çalışma hızı için en iyi şekilde optimize edilmektedir. Dağıtık '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 (Distributed ) 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. 7 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 8 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 o Bir Java Yeni masaüstü özellikleri ve pek çok yeni API değişikliği 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 9 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 10 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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. 11 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 3.adım: MS-DOS komut istemine geçiyoruz (Windows XP için, BaşlatÇalıştırCMD 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 12 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 13 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 14 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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. 15 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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. 16 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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 Yöntem İşlevi Klavyeden girilen tamsayı (integer) nextInt() türündeki sayıyı okur. Klavyeden girilen tamsayı (byte) türündeki nextByte() sayıyı okur. Klavyeden girilen Boolean türündeki önermeyi nextBoolean() okur. Klavyeden sayı girilen ifadeyi kesirli(gerçek) nextFloat() (float) türüne çevirir Klavyeden girilen kesirli(gerçek) ifadeyi sayı (double) uzun nextDouble() türüne çevirir Klavyeden girilen kelimesini okur String ifadenin ilk next() {boşluk (space) karakterine kadar olan kısmı tarar} Klavyeden girilen tüm satırı okur. String nextLine() türünde bir satır okur. Tek bir karakteri okur (girilen ifadeyi findInLine(“.”).charAt(0) karakter karakter okur) System.out.print( )/ println( ) deyimi: 17 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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. SakaryaAdapazarıMYO Esentepe 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 Ondalıklı (Decimal) tamsayı %d Sekizli (Octal) tamsayı %o Onaltılı (Hexadecimal) Örnek kod Ekran Çıktısı System.out.printf( "%d\n", +26 ); 26 System.out.printf( "%d\n", -26 ); -26 System.out.printf( "%o", +26 ); 32 %x veya System.out.printf( "%x\n", 26 ); %X System.out.printf( "%X", 26 ); 1a 1A 18 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 tamsayı Tek Karakter %c System.out.printf( "%c",'A' ); A System.out.printf( "%s\n","Ali" ); System.out.printf( "%S\n","Veli" ); String ifade Ali %s veya System.out.printf("%3.2s\n","bade" VELİ %S ); ØØba (3 karakter boşluk bıraktıktan sonra 2 karakter gösterir) Gerçel (float) sayı, Standart gösterim Gerçel(float)sayı, Bilimsel gösterim %f System.out.printf( "%f", +26.0 ); %e veya System.out.printf( "%e", +26.0 ); %E 26,000000 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. 19 Bülent Çobanoğlu“Java ile programlama ve Veri yapıları”, Pusula yayıncılık,ISBN:978-9944-711-10-4 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", bugun); System.out.printf("24 Saat Formatında..|%tR|\n", bugun); System.out.printf("24 Saat Formatında Saniyeli..|%tT|\n", bugun); } } 20