JAVA nın Tarihçesinden



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

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

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Java da İşleçler, Ders #3 (4 Kasım 2009)

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

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

Görsel Programlama. Temel Veri Tipleri, Değişkenler, Operatörler, Akış Kontrolü, Sınıflar, Metotlar, Paketler ve JavaDoc

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Programlama Dillerinde Kullanılan Veri Tipleri

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

PASCAL PROGRAMLAMA DİLİ YAPISI

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Nesne Yönelimli Programlama

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

#$% &'#(# Konular. Bits of Information. Binary Özellikler Superimposed Coding Signature Formation Deerlendirme

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

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

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.

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir.

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

PROGRAMLAMAYA GİRİŞ DERS 2

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

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

MAT213 Bilgisayar Programlama I

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

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

Dr. Fatih AY Tel: fatihay@fatihay.net

C++ Operatörler (Operators)

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

HSancak Nesne Tabanlı Programlama I Ders Notları

C#(Sharp) Programlama Dili

C Programlama Dilininin Basit Yapıları

Diziler İndisli Değişkenler

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

// hataları işaret eden referans

Bölüm 2 - C ile Programlamaya Giriş

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

EMT2226 Nesne Yönelimli Programlamaya Giriş

YZM 2105 Nesneye Yönelik Programlama

Java da Program Denetimi ve Operatörler

Karşılaştırma İşlemleri ve Koşullu İfadeler

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

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

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Lambda İfadeleri (Lambda Expressions)

C PROGRAMLAMA D İ L İ

Giri. Program yazmaya balamadan önce

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

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

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

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

HSancak Nesne Tabanlı Programlama I Ders Notları

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Güz Yarıyılı Balıkesir Üniversitesi Bilgisayar Mühendisliği Bölümü

Güz Yarıyılı Balıkesir Üniversitesi Bilgisayar Mühendisliği Bölümü

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

JAVADA DİZİ İŞLEMLERİ

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

C Programlama Dilinde Değişkenler

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

M.ilkucar MAKU MYO 1

/*int sayi1, sayi2,toplam=0;

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

BASİT VERİ TÜRLERİ, STRİNGLER, VE KONSOL GİRİŞ/ÇIKIŞ

Operator Aşırı Yükleme (Operator OverLoading)

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

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.

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

Görsel Programlama 1

public static int Toplam int x, int y

C PROGRAMLAMA DİLİNE GİRİŞ

Mantıksal (Logic) Operatörler

Veri Tipleri Aşağıdaki programdaki 5 hatayı bulunuz.

8- PROGRAM YAPISAL KOMUTLARI ve. M.ilkucar MAKU MYO 1

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

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

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

1 PROGRAMLAMAYA GİRİŞ

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

Genel Programlama II

Nesne Tabanlı Programlama

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Programlama Dili Prensipleri. Lab Notları 1

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

ALGORİTMA VE PROGRAMLAMA I

Fonksiyonlar (Altprogram)

Transkript:

1 JAVA nın Tarihçesinden Java, genel amaçlı nesneye yönelik bir programlama dilidir. Sözdizimi C ve C++ a çok benzer. Balangıçta Java, küçük sistemleri tüketici aygıtlarına gömme yoluyla yazılımın kurulmasında karılaılan sorunları adreslemek için gelitirilmiti. Heterojen iletiim aları, birden fazla ana mimari yapılar ve güvenli servis için tasarlanmıtı. Bu tür gereksinimlere karılık verebilmek için, Java herhangi bir sistemde çalımalı, alar arasında iletiimi ve kullanıcının güvenli bir ortamda çalımasını salamalıydı. World Wide Web in yaygınlaması Java nın bu özelliklerinin açıa çıkıp herkes tarafından bilinmesine yardımcı olmutur. Son zamanlarda insanların ilgi odaı olan nternet e eriimi basit yollarla kolaylatırmıtır. Mosaic gibi Web browser lar milyarlarca insanın Net te dolamasını ve sörf yapmasını salamaktadır. Yüksek hızlı bir modemle network ortamına Mac, PC ya da UNIX bir makine ile balandıınızda en azından size, duyduklarınızın ve gördüklerinizin aynı olmasını salamalıdır. Web in günden güne nüfusu artmaktadır. Ancak Web fanatikleri, Web in HTML doküman formatı tarafından desteklenen içeriinin çok sınırlı olduunu gördüler. HTML uzantıları, browser'ın kullanıcının istedii tüm özellikleri sunmadıını daha açık bir ekilde ortaya çıkardı. Bu sırada Java programlama dili aranan bir baka uygulamayı buldu. Java programlarını Web sayfalarına gömerek Java nın ilginç özelliklerini kullanıma sunan Sun'ın HotJava browser ı gelitirildi. Java nın bu tür programlarına applet adı verilmektedir. Bu programlar görüntülendii HTML sayfalarıyla birlikte HotJava browser a yüklenir. Browser tarafından kabul edilmeden önce applet lar, güvenilir olduundan emin olmak için dikkatli bir ekilde kontrol edilmelidir. HTML sayfaları gibi derlenmi Java programları da iletiim aları ve baımsız platformlardır. Applet programlar yüklendikleri makineleri ve geldikleri yerleri dikkate almadan çalıırlar.

2 Java nın C programlama diline çok benzediini söylemitik. Ancak C nin tersine Java da belirteç kullanılmamaktadır. Bu durum güzel bir avantaj salamaktadır: Programın iyiletirilmesi sırasında hata oranı azalmaktadır. Böylelikle uzun zaman alan Boot ve Debuging ler ortadan kalkmıtır. Bu farkı özellikle C kullanıcıları daha iyi görmektedir. Bunun yanı sıra türlerin birbirlerine dönütürülmesi ileminde Java, oldukça geni olanaklar sunmaktadır. Bu da karmaık ilemlerde hataların en batan yok edilmesine neden olmaktadır. Web toplumu Java da bazı eylerin yeni ve oldukça önemli olduuna çok çabuk dikkati çekti. Web sayfalarını güçlendiren Java kullanıcıları makinelerine zarar vermeden güvenli bir ortamda çalımanın keyfini çıkarmaktadırlar. Java tüm applet programlarıyla birlikte nternet kullanımında yeni bir yol sunmanın yanı sıra kullanımını da oldukça kolaylatırmaktadır.

3 Günümüzde JAVA Java nın yaratıcısı Sun Microsystems in mühendislerinden biri olan James Gosling, bu uurda saçlarını aartmı ileri görülü biri. Java tasarlanırken amacın piyasadaki bir çok programlama diline bir yenisini eklemek olduunu zannetmiyorum, burada amaç bilgisayar dünyasına yeni bir ufuk açmak, yeni fikirler getirmek. Java nın en büyük problemi kendisinden önce insanlara ulaan bu yeni fikirlerin arasında kendini tanımlayamaması oldu. Çou insan Java yı bu fikirlerle aynı kefeye koydu, bir baka kesimse yüzüne bile bakmadı. Bundan dolayı ilk olarak Java ile Java nın getirdii fikirleri birbirinden ayırarak ie balamak istiyorum. Java, gerçek anlamda bir programlama dilidir. Java ile günümüzün popüler dili C++ ile ne yapılıyorsa hepsinin yapılması mümkündür. çinizden olur mu hiç öyle ey dediinizi duyar gibiyim. Bal gibi de olur. Bilgisayar dilleri, syntax ı hariç birbirlerinden çok farklı deillerdir. Önemli olan sizin programı yazmak istediiniz platform için elinizde bulunan kütüphane(library) lerdir. C++ bu konuda çok geni olup Java ise kısıtlıdır. Peki o zaman Java ile her ey nasıl yazılır? Java, baka bir dilde yazılmı bir kütüphaneyi çok rahat kullanabilmektedir. Bu da yeni domu bu dilin iini oldukça kolaylatırmaktadır. "Olur mu öyle ey o zaman Java programımız bütün platformlarda çalımaz!" ite bu cümle yine Java ile Java nın felsefesini karıtıran cahilliin eseridir. Kim demi ki biz Java programlarımızı her platformda çalıtırmak istiyoruz diye. Bilgisayar programları satan bir yerden bir yazılım (software) alırken hangi platform için yazıldıına bakarak alırız, ve de gidip aynı software i cep bilgisayarımızda da güle oynaya kullanabileceimiz fikrine kapılmayız (tabi eer program cep bilgisayarı için yazılmadıysa). Aynı mantıktan yola çıkarak Java ile Java derleyicisini elde edebileceimiz herhangi bir platform için spesifik olan bir yazılım çıkarmak hiçte yanlı bir davranı deildir. Microsoft, Java ya bir programlama dili olarak verilmesi gereken önemi daha çok önceden anlamı, ve çıkardıı Visual J++ adlı software inde PC platformuna spesifik program yazmak için gereken bir çok gereci içine koymutur. Sun Microsystems ise kanımca yanlı bir strateji izleyerek bunu baltalamaya çalımaktadır.

4 te Sun Microsystems ile Microsoft arasında uzun süredir süren davaların nedeni bundan ileri gelmektedir. Peki ama Sun ın, Microsoft la alıp veremedii nedir? Niçin faydalı bireyi baltalamaya çalımaktadır? Bunu anlamak için Java nın getirdii fikirleri anlamak gerekir. Java nın bir programlama dili olduunu anladık. Peki getirdii fikirler nelerdir? Java tasarlanırken amaç, bu dille yazılan bir programı kolay bir ekilde dier platformlara taıyabilmekti. Bir platform için yazılmı bir yazılımın baka bir platformda çalıır hale getirmek çok emek gerektirir. te Java bu probleme ilaç olmak için düünüldü. Peki bu i nasıl olur? Öncelikle, bütün dünyadaki bilgisayar tasarlayıcılarının bir araya gelip ortak, herkesi memnun edecek bir bilgisayar çıkartması ufukta görünmedii için, bu ii yazılım bazında halletmek gerekir. Bunun için Sun "Virtual Machine" dedii sanal bir bilgisayar tasarlamıtır. Bu sanal bilgisayar, sizin gerçek bilgisayarınızda çalıan bir program olup, Java programlarınızı çalıtıracaktır. Burada ortaya atılması gereken en büyük soru u olmalıdır: "yi de bu Virtual Machine denen programı butun platformlar için nasıl ve kim yazacak?" te Sun Microsystems ve birçok Java programcısının gözünden kaçan da bu olmutur. Su anda bu sanal bilgisayar bir elin parmaklarını geçmeyecek kadar deiik platform için hazırda vardır, gelecekte bu sayının artması beklentimiz olmalıdır. Üstüne üstlük bu platformlardaki Virtual Machine in en son versionlarını sadece iki platformda bulmak mümkündür. PC ve Sun ın ürettii Solaris. Apple maalesef yarıta geride kalmıtır. Bu nedenden dolayı Sun ın Microsoft u, Java yı güçlü bir programlama dili olarak sunmasını baltalamaya çalıması yanlıtır. Nede olsa, Java ile yazılan programlar hiç bir zaman dünyadaki bütün platformlarda çalımayacaktır. Bunu düünmek aptallık olur. Olayın biraz daha detayına inelim. Yukarıdaki paragrafta aslında dikkatli incelenirse bazı yanlılar vardır, aslında basite indirgemek desek daha doru olur. Virtual Machine i baska bir platforma aktarmak zor olan bir ey deildir ve de ilk çıktıından bu yana fazla yeni sürümüde çıkmamıtır. imdi yine bazı okuyucular bana gülüyorlar biliyorum, hatta içlerinden u cümle geçiyor: "Çıktıından beri deitirmedikleri yeri kalmadı, bir örendiimiz ertesi gün yok!" Programcılar bu kaygılarını dile getirirken aslında bir eyi unutmaktadırlar. Deien Virtual Machine

5 deildir. Deien Virtual Machine ile birlikte Sun'in tasarladıı standart kütüphanelerdir. Bir dili kullanılır yapan öenin kütüphanelerinin genilii olduunu daha önce belirtmitim. te bu kütüphaneleri deiik platformlara taımak gerçek bir azaptır, ve de bir gecede olmayacaktır, çünkü bir PC de ekrana bir pixel basmakla, bir Macintosh ta ekrana bir pixel basmak farklı prosedürlerdir. Peki Sun kendine Microsoft a karı destekçi nasıl bulmaktadır. Bu o kadar zor bir ey deildir. Microsoft piyasadaki monopol olarak zaten bir çok kullanıcının ve programcının nefretini kazanmayı baarmıtır. Dakka baı yeniden balatmak zorunda kaldıımız Windows da bunun cabasıdır. Tek yapılması gereken piyasaya bir slogan atmaktır: "Visual J++ ile yapılan Java programlarınız baka platformlarda çalımaz!". Bu doru bir cümle deildir, ama amacına ulamaktadır. Burada bizlerin anlaması gereken, Java ya yeni balayan birinin ne yaptıını bilmeden bu yazılımı kullanıp yazdıı bir Java programının baka platformlarda çalımama olasılıının bulunduudur. ahsen ben Visual J++ in son sürümünü beenerek kullanıyorum, ama kesinlikle bu ie yeni balayan birine tavsiye etmiyorum. Eletiriler çok da yersiz deil. Ancak, önemli noktayı kaçırmamak gerekir. Microsoft, kanımca Java konusunda kendisine özgü olmayan bir ey yapıyor: gerçekten faydalı olmaya çalııyor. Sun ise Microsoft a pazarı kaptırmanın verdii hiddetle saldırıyor. Olaydan zararlı çıkan aslında yine biz programcılarız. Yazımı biraz da Java yı popüler yapan "Java Applet" lerinden bahsederek tamamlamak istiyorum, çünkü maalesef etrafta bilir bilmez konuulan kavramların baında geliyor. Java Applet lerinin Java programlarından farkı, web browser ınız tarafından çalıtırılabilmesi, ve de Internette dolaırken bir web sayfasında karımıza çıkabilecei için güvenliiniz düünülerek sınırlandırılmı olmalıdır. Konun detayları, bu sınırlandırmanın nasıl yapıldıı, veya nasıl kaldırılabildii yine bu yazının içerii deildir. Bunların haricinde Java Applet leri, Java programlarından hiç farklı deildir, onlar da Virtual Machine ile çalıtırılırlar. Önemli olan nokta Java Applet lerini yazarken platform spesifik kütüphaneler kullanılmaması gerektiidir. Çünkü sizin web sayfanızı ziyaret eden kiinin ne marka bilgisayar kullandıını bilemezsiniz. te Sun ın standart kütüphanelerdinden amamanız gereken yer burası. Yok hayır, beni sadece PC

6 kullanıcıları balar derseniz, o zaman istediiniz yapmakta yine serbestsiniz. Kalkıp Microsoft un DirectX kütüphanesini kullanıp 3 boyutlu mekanlarda insanları dolatırmak mı istiyorsunuz, yada insanların kulaına Directional Audio ile hitap mi etmek istiyorsunuz? Bunların hepsi mümkün. Unutulmaması gereken Applet lerin uzunca bir süre gerçek programların yerini alamayacaı. Düünülmesi gereken bir baka nokta ise, Appletler in bu amaçla kullanılmasının ne kadar doru olduu. Bunu size düünme konusu olarak bırakıyor, bir baka yazıda tartımayı diliyorum. Java yı desteklemeyi bırakmayın. Herkese iyi programlamalar.

7 JAVA DLNE GR Java ya Balarken Derleme birimi olarak adlandırılan bir Java kaynak kütüü bir ya da birkaç sınıf tanımı içeren bir metin kütüüdür. Java derleyici, bu kütüklerin.java kütük adı uzantısı ile yüklenmesini bekler. Java kaynak kodu derlendii zaman, her bir sınıf kendi çıktı kütüüne yerletirilir. Java da genel fonksiyonlar ve deikenler olmadıı için, bir Java kaynak kütüünde olabilecek tek ey bir ya da birkaç sınıfın tanımıdır. lk Java programımızı yazalım. class HeyDünya { public static void main(string args[ ]) { System.out.println("Hey Dünya!"); Java, tüm kodların adı olan bir sınıfta yer almasına gereksinim duyar. Kütük adının harf düzeninin sınıf adına uygun olduundan emin olduktan sonra, bu metni HeyDünya.java adlı bir kütüe yüklemelisiniz. Kütük adlarının sınıf adına uygun olması. programınızı çalıtırmada çok yardımcı olacaktır. Java derleyici javac ı çalıtırarak ve komut satırı üzerinde kaynak kütüün adını belirterek bu metni derleyebilirsiniz; aaıda gösterildii gibi: C:\> javac HeyDünya.java Javac derleyici, yeni programın bayt kodundan baımsız olarak derlenmi bir ilemciyi kapsayan ve adı HeyDünya.class olan bir kütük hazırlayacaktır. Bayt kod, Java Sanal Makina (Java Virtual Machine) yorumlayıcı için makine dili komutlarını içeren programınızın bir ara sunumudur. Bu programı çalıtırmak için, bu yeni sınıfı

8 önce yükleyen, sonra çalıtıran bir Java yürütme zamanınızın olması gerekir. Bunu yapmak için ise, java komut satırında argüman yerine HeyDünya adlı sınıfa geçi yapmanız gerekir. C:\>java HeyDunya Hey Dünya! kurulmasıdır. Bu noktada önemli olan, Java derleyicinin ve yürütme zamanının doru olarak, imdi, yazdıımız programı satır satır inceleyelim. "HeyDunya" basit bir program olmakla birlikte ilk kez kullandıınız yepyeni bir programlama dili ile tanımı oldunuz. Bunun yanısıra yeni kavramlar ve ayrıntılar için attıınız ilk adımdır. te ilk satırımız: class HeyDunya { Bu satır, yeni bir sınıfın tanımlandıını bildirmek için class sözcüünü kullanır. HeyDunya, sınıfı tanıtmak amacıyla kullandıımız geçerli bir tanıtıcıdır. Açık küme (kıvrımlı) parantezi ({ ) ile kapalı küme (kıvrımlı) parantezi ( ) arasında sınıfın tam adı, kod ve veri yer alır. Java da bu parantezlerin kullanımı C ve C++ yapısı ile edeerdir. public static void main(string args[ ]) { Bu basit programın ikinci satırı genel fonksiyonların olmadıını, yalnızca sınıfların yer aldıını bildiren Java tasarımı ile zorlatırılır. Alan ve yöntemler biraraya gelerek sınıfları oluturur. Sınıfın tanımı sınıfın yapısını ve hareketini belirler. Yöntemler fonksiyonlardan biraz daha farklı olup kendi sınıflarının veri alanlarına (deikenlerine) eriebilirler.

9 public public anahtar sözcüü bir eriim belirleyici olup, programcıya her bir deikenin ya da yöntemin kontrolünü verir. Burada public anahtar sözcüü herhangi bir sınıfın main yöntemini görebildiini göstermektedir. private Bu tip bir sınıfa yalnızca paket içerisinde ulaılabilir. Bir sınıfın tanımlanması sırasında public ya da private olduu belirtilmedii zaman, sınıfın otomatik olarak private olduu kabul edilir. abstract Soyut yöntemlerin yer aldıı sınıfları belirtir. Soyut yöntemler program kodu olmayan anlamına gelmektedir. Soyut sınıflar dier sınıflar için yapı oluturur. static Bir sınıfa uygulanan yöntem ve deikenlerin static olduu bildirilir. Yöntem, sınıfın özel bir örneinin çalıtırılmasına gerek kalmadan çarılabilir. Main durumunda örneklerden önce yorumlayıcı tarafından çarıldıı için, static olduunu bildirmek gerekir. Static olduu bildirilen yöntemler, statik ve yerel deikenlerden baka herhangi bir eye dorudan bavuramayabilir. Nesneye yönelik programlama dillerinde statik deiken ve yöntemlere sınıf deikenleri ve sınıf yöntemleri adı verilmektedir. void Genellikle birtakım özel türlerin deerleri için yöntemler kullanılır. Örnein tamsayı deerler için int, gerçel sayı deerleri için float ya da daha karmaık deerler için bir sınıfın özel adları kullanılmaktadır.

10 main Java, tüm anahtar sözcük ve tanıtıcılara göre harfe duyarlı bir yapıya sahiptir. Bir baka deyile Java da Main ile main farklı yöntemleri ifade etmektedir. Java derleyici, bir main yöntemi olmayan sınıfları derler. Ancak Java yorumlayıcı bu sınıfları çalıtırmaz. Bu programı yanlı yazdıınızı ya da Java tanıtıcılarının harfe duyarlı olduunu bilmediinizi varsayalım ve main yerine Main yazdıınızı kabul edelim. Derleyici HeyDunya adlı sınıfınızı derler. Kullandıınız Java yürütme zamanı, çalımayı balatacak yöntemi bilmedii için derlemeyi gerçekletirir. Örnein main sözcüünü hatalı yazdıysanız, programı çalıtırmak istediinizde aaıdaki mesajı alırsınız: C:\> java HeyDunya HeyDunya sınıfında: void main (String argv[ ]) tanımsız Yöntemlerin bir kısmı parametrelere gereksinim duyar. Bu parametreler parantez içerisinde belirtilir. Verilen yöntem için parametreye gereksinim yoksa, parantezi bo olarak yerletirmeniz gerekir. Bizim örneimizde gördüümüz gibi kullanılan bir parametre vardır. String args [ ], args adlı bir parametreyi göstermektedir. Tanıtıcıdan sonra kollanılmı olan köeli parantezler ([ ]), bunun türünün bir dizi olduunu göstermektedir. String karakter dizilimleri depolayan bir sınıftır. Yorumlayıcının balangıç yeri main yöntemidir. Program bir düzine sınıfa sahip olabilir, ancak bunlardan biri main yöntemine sahip olabilir. Applet lar (Web browser larda gömülü olan küçük Java programlarına denmektedir) hazırlamaya baladıınız zaman, Web browser ın Java yürütme zamanı farklı bir kalıba sahip olduundan main yöntemi kullanılmaz. System.out.println("Hey Dünya!");

11 Bu satır out içerisinde println yöntemini çalıtırır. Out, bir OutputStream sınıfı elemanı olup, System sınıfında kullanılmaktadır. OutputStream sınıfının println yöntemi dizilimi basar. Bu yöntem, bir baka çıktının yeni satır üzerinde basıldıından emin olmak için baskıdan önce, bir yeni satır karakterini dizilimin sonuna ekler. Sözsel Bileenler Java programları komutlar, anahtar sözcükler, tanıtıcılar, hazır bilgiler, iletmenler, ayırıcılar ve boluun bileeninden olumaktadır. Boluk (Whitespace) Java baımsız bir dildir. Düzgün çalımasını salamak amacıyla herhangi bir eyi içerden yazmak zorunda deilsiniz. HeyDunya sınıfı tek bir hizada yazılmıtır: Public class HeyDunya{public static void main(string a[]) {System.out.println("HeyDunya!"); Aaıda verilen örnek aynı.class sınıfını üretir: public class HeyDunya { public static void main (String

12 args [ ] ) { System. out. println ( "HeyDunya!" ) ; Komutlar Komutlar bir programın yürütme zamanına katkıda bulunmasalar bile, uygun bir ekilde kullanıldıında kaynak kodun en deerli kısmını oluturmaktadır. Geni programların anlaılması da oldukça zordur. Ancak bir sınıfın ya da bir yöntemin ne ve niçin sorularına yanıt verebilen komutları kullanıcılar için oldukça yararlıdır. Bir kod satırını basit bir ekilde yineleyen komutlar, çok fazla deer eklemez, ancak algoritmayı gösteren ya da açıklayan komutlar programcılar için iaretçidir. Kaynak kod komutları üç türde ele alınır: Tek satırlı, çok satırlı ve dokümantasyon komutları. Tek satırlı komutlar, // ile balar ve satır sonunda biter. Bu komut türü. tek satırlı bir kodun kısa açıklamalarında kullanılıdır. a = 42; // 42 yanıt ise, soru nedir?

13 Daha uzun komutlar için, a/* ile balayıp a*/ ile biten uzun çok satırlı komutlar hazırlayabilirsiniz. a/* ile */ arasında yer alan herhangi bir ey bir komut olarak ele, alınır ve derleyici tarafından göz ardı edilir. /* * Ankara Türkiye'nin bakentidir... * Açıklanmasına izin verin: */ Özel bir komut türü javadoc adlı bir araç ile kullanılmaktadır. Javadoc, bir sınıfın genel arabirimi için dokümantasyonu otomatik olarak üretmek amacıyla Java derleyicinin bileenlerini kullanır. Javadoc u desteklemek için kullanılan komut kuralı, genel sınıf, yöntem ve deiken deklerasyonundan önce bir dokümantasyon komutunu göstermek amacıyla /** komutunu kullanmaktır. Bu komut uzun çok satırlı komutlarda olduu gibi */ ile biter. Javadoc, @ ile gösterilen birkaç özel deikeni tanır. Özel Amaçlı Anahtar Sözcükler Özel amaçlı anahtar sözcükler özel tanıtıcılardır ve programın tanımlanmasını kontrol etmek için Java dili tarafından kullanılmaktadır. Yerleik türleri, deitiricileri ve akı kontrolü için mekanizmayı tanıtmak için kullanır. Bunlar toplam 59 tane özel amaç için ayrılmı sözcüktür. letmen ve ayırıcıların sözdiziminin birletirilmesi ile oluturulmu olan bu anahtar sözcükler, Java dilinin tanımlanmasını biçimlendirir. Bu anahtar sözcükler yalnızca istenen amaca hizmet ederler ve bir deiken, bir sınıf ya da bir yöntem adı için tanıtıcı olarak kullanılamazlar. Abstract boolean break byte byvalue Case cast catch char class Const continue default do doule Else extenhds false final finally Float for future generic goto f implements import inner instanceof

14 nt interface long native new Null operator outer package private Protected public rest return short Static super switch synchronized this Throw throws transient true try Var void volatile while Java nın özel amaçlı sözcükleri Tanıtıcılar Tanıtıcılar sınıf, yöntem ve deiken adları için kullanılır. Bir tanıtıcı büyük ve küçük harf, sayılar, altçizgi ve dolar iareti karakterinden oluan bir tanımlayıcı dizidir. Bir sayı ile balamamalıdır. Java nın harfe duyarlı olduunu biliyorsunuz. VALUE ile Value birbirinden farklı tanıtıcılardır. Geçerli tanıtıcılar içerisinde timeofday, temp_val, a4 ve $_ ı söyleyebiliriz. 1 more, 3$, a:b, #foo ve @2 geçerli olmayan deiken adlarıdır. Özel ve yerel deikenler için tanıtıcılar altçizgi ile birlikte küçük harf olarak kullanılır, next_val ya da temp_val gibi. Sabitleri gösteren sonuç (final) deikenler için tümüyle büyük harf kullanılır, TOK_BRACE, DAY_FRIDAY ya da GREEN gibi. Hazır Bilgiler Java da bir sabit deer, kendisinin hazır bilgisi kullanılarak hazırlanabilir. Tamsayılar, virgüllü sayılar, boolean deerler, karakterler ve dizilimler Java kaynak kodunda herhangi bir yere yerletirilebilir. Bu hazır bilgilerin her birinin sahip olduu uygun bir türü vardır. Hazır bilgi bir türün belli bir deerini gösterir.

15 letmenler Bir ya da birkaç argümandan oluan bir iletmen sonuca ulamak için bu argümanları iletir. letmenler hazır bilgilerin yanında ya da tanıtıcıların arasında görünür. Aaıdaki tabloda Java da kullanılan iletmenler listelenmitir. + += - -= * *= / /= = ^ ^= & &= % > >= <!!= ++ >> >>= << >>> >>>= && == == ~?:. nstanceof [] Java iletmenleri Ayırıcılar Doru bir Java programında görünebilen yalnızca bir çift farklı karakter dizisi vardır. Bunlar birkaç basit ayırıcı olup, kullandıınız kodun eklini ve ilevselliini tanımlar. Aaıda verilen tabloda ayırıcılar görevleri ile birlikte açıklanmaktadır: Sembol Adı levi () parantezler Yöntemin tanımı ve çalıtırılması için gereken parametre listesini yerletirmek için kullanılır. Ayrıca ifadelerde öncelik sırasını tanımlamak içinde kullanılır.

16 { küme parantezi Otomatik olarak ilk kullanıma hazırlanan dizilerin deerlerini yerletirmek için kullanılır. Ayrıca sınıf, yöntem ve yerel kapsamlar için bir kod blounu tanımlamak için kullanılır. [] köeli parantez Dizi türlerini bildirmek ve dizi deerlerin uygulamasında kullanılır. ; noktalı Deyimleri ayırır. virgül, virgül Deiken bildiriminde yer alan ardıık tanıtıcıları ayırır. Deyimleri bir for deyimine ardıık yerletirmek için kullanılır.. nokta Paket adlarını alt paketlerden ve sınıflardan ayırmak, bir deiken ya da yöntemi bir bavuru deikeninden ayırmak için kullanılır. Java ayırıcıları Deikenler Bir Java programında temel bellek birimi deikenlerdir. Bir tanıtıcı, tür ve kapsam birleerek bir deikeni tanımlayabilir. Deikenlerinizi bildirdiiniz yere balı olarak, geçici bir kapsam için yerel olabilir ya da sınıftaki tüm yöntemlere eriebilen örnek deikenler olabilir. Yerel kapsamlar küme parantezi ile gösterilir. Bir Deikenin Kullanılması Bir deiken aaıdaki ekilde ifade edilebilir: tür tanıtıcı [ = deer] [, tanıtıcı [= deer]...] ; Tür bir bayt, short, int, long, char, float, double ve boolean deer ya da bir sınıf veya arabirimin adı olabilir.

17 int x, y, z; int a = 3, b, c = 5; byte z=2z; double pi= 3.14159; char x='x'; x, y ve z olan üç tamsayıyı bildirir. a ve c yi balatan üç tamsayıyı daha bildiriyor. z i çalıtırır. Pi sayısını (tam olmasa da yaklaık olarak) bildirir. x deikeni 'x'deerine sahip. Value (deer), bir türün deerini elde eden hazır bilgi ya da bir ifadedir. Aaıdaki örnekte bir dik açının kenarlarını gösteren üç deiken hazırlanmakta ve ardından Pisagor Teoremi kullanılarak hipotenüs uzunluu hesaplanmaktadır. class Degiken { public static void main(string args[ ] ) () { double a = 3; double b = 4; double c; c = Math.sqrt(a*a + b*b); System.out.println("c = " + c); Deikenin Kapsamı Java da bileik deyim blokları iki küme parantezi ({) ile belirtilir. Java deikenleri yalnızca bileik deyimlerin sonuna kadar bildirilen yerden ge4erlidir. Bu bileik deyimler içiçe yerletirilebilir ve her birinin kendisine ait yerel deiken ifadesi olabilir. Aaıdaki örnekte ismi aynı olan iki ayrık deiken ifade edilmeye çalıılmaktadır. C ve C++ da bu deikenler farklı kapsamlara sahip olduu için birbirinden farklı olduu kabul edilir. Java da ise bu durum yasal deildir.

18 class Kapsam { public static void main(string args[ ] ) ( ){ int bar = 1 ; { // yeni bir kapsam hazırlar int bar = 2; // zaman hatasını derler...

19 TÜRLER Tür nedir? Tür içerie ve karakteristik özellie balı bir sınıflandırmadır. Programlamada tür, bir ifade ya da bir deiken olarak tanımlanır. Tamsayı türünün asla pi sayısını tam olarak göstermediinden emin olabilirsiniz. Bu bölümümüzde Java da kullanılan ana türler ele alınacak, deikenlerin nasıl bildirildii, deerlerin atanması ve türlerin ifade olarak birletirilmesi gösterilecektir. Basit Türler Çou nesneye yönelik programla dillerinde her bir tür bir nesneye dönütürülür. Örnein 2 + 2 ifadesi, iki objesi üzerinde toplama yöntemini çalıtırmaktadır. Java dilini daha iyi anlayabilmek için, Java da hereyin bir obje olduunu ve sistem performansının Java nın geliiminde esas amaç olduunu kabul edin. Bu karar Java nın basit türlerinin hazırlanmasına neden olmaktadır. Aslında bunların hepsi nesneye yönelik olmamakla birlikte dier nesneye yönelik olmayan dillerdeki basit türlere çok benzer. Basit türler, tamsayılar, virgüllü deerler, karakter ve boolean deerler gibi atomik tek deerli ifadeleri göstermektedir. Bunların yanısıra Java da bir de dizi türü vardır ki bunlar tek bir türün sabit boyutlu bütünüdür. Java da sekiz basit tür yer almaktadır: byte, short, int, long char, float, double ve boolean. Bunlar dört ana grupta toplanmaktadır: Tamsayılar: byte, short, int ve long tam deerli sayılardır. Virgüllü sayılar: float ve double virgüllü sayıları gösterir. Karakterler: char sembolleri harf ve basamaa benzer ekilde karakterlerle gösterir. Boolean deerler: boolean mantıksal deerleri gösteren özel bir türdür. Bir programda çounlukla kullanılan tür tamsayılardır. Tamsayılar küçük sayma sayıları için temel olduu için, kullanıcılar yasal aralıı belirlerken bu sayıları korkmadan kullanabilmektedir. Java nın güvenilir ve güçlü olması nitelikle hazırlanmı

20 olan dilinden kaynaklanmaktadır. Java da her bir ifadenin bir türü vardır, her deikenin bir türü vardır ve her tür çok güçlü bir ekilde tanımlanmaktadır. Deikenler için yapılan ifade atamalarının türünün uygunluu denetlenir. Java derleyici, türlerin doruluunu salamak amacıyla derledii tüm kodu denetler. Tür uygunsuzlukları derleyici uyarıları deildir, düzeltilmesi gereken hatalardır. Sayısal Türler Sayısal türler isminden de anlaılacaı üzere sayılardan oluur. Sayısal ifadenin sonucunu saklamak isterseniz, sayısal türde bir deiken hazırlamanız gerekir. ki tane sayısal tür vardır: Biri tamsayılar olarak bildiimiz tam deerli sayılar, dieri virgüllü sayılar dediimiz kesirli kısımları saklanan sayılardır. Bu her iki tür için de duyarlılık derecesi deiebilmektedir. Java, ANSI C nin tüm tüm standart sayısal türlerini desteklemektedir. Ancak önemli bir fark vardır. Java da kullanılan türlerin hepsi açık aralık ve matematiksel harekete göre tanımlanır. Çou C ya da C++ kodu, int türünün özel olmayan hareketini kapsayan sorunlarla karılamaktadır. Bu sorunun temeli makine sözcük boyutu adı verilen düünceden kaynaklanmaktadır. Verilen bir CPU nun sözcük boyutu, temel yazmaçlarını göstermek için kullandıı bit sayısı ile belirlenir. 70 li yılların sonlarına doru üretilen PC ler 8 bitlik sözcük boyutuna sahiptir. 8086 PC lerin gelmesiyle sözcük boyutu 16 bite yükseldi. 486 lar ve ardından çıkan Pentium makineler ile sözcük boyutu 32 bit oldu. Bugünlerde üretilen Pentium Pro ile UItraSPARC çiplerle sözcük boyutunu 64 bite taıyoruz. Tamsayılar C ve C++ programcıları int türünü bit maskeleri ve grafik piksel deerleri gibi sayısal olmayan deerleri göstermek amacıyla kullanmaktadır. Bu nedenle iaretsiz olma düüncesi yüksek dereceden bitin (bir int in iaretini tanımlar) hareketini belirlemek için kullanılmıtı. Java bu düünceyi ortadan kaldırmıtır. Tüm Java sayısal türleri iaretli deerlerdir.

21 Java da iaretsiz bir türün olmaması tamsayı türlerini yarı yarıya azaltmaktadır. Bu türlerin herbiri 1, 2, 4 ve 8 baytlık bellei göstermektedir. Byte, short, int ve long olan bu türlerin doal kullanma kategorisi vardır. imdi bu türlere kısa. bir göz atalım. byte Byte 8 bitlik iaretli türdür. Aralıı 128 den 127 e kadar olan bölgedir. Bir iletiim aından ya da bir kütükten yabancı bir bayt akıı ile karılatıınız zaman, hu türü kullanmanız yararlı olacaktır. Bayt deikenler byte anahtar sözcüü kullanılarak bildirilir. Örnein aaıda verilen b ve c olarak adlandırılmı iki bayt deiken bildiriliyor ve c ondalık basamak deeri 0x55 e yerletiriliyor: byte b; byte c = 0x55; short Short 16 bitlik iaretli türdür. 32768 den 32767 aralıına sahiptir..java nın türleri arasında en az kullanılandır. Short deikeni ile ilgili aaıdaki örnei inceleyebilirsiniz: short s; short t = 0x55aa;

22 int 32 bitlik iaretli türdür. Sahip olduu aralık 2,147,483,648 den 2,147,483,647 dir. Java nın türleri arasında en çok kullanılandır. bu tür dizilerin yinelenmesinde ve sayılmasında çok kullanılıdır. int deikenlerinin bildirilmesi ile ilgili örnek aaıda verilmektedir: int i; int j = 0x55aa0000; Bu türün çok yönlü ve verimli olmasından dolayı, dizilerin indekslenmesinde ya da matematiksel ifadelerin hesaplanmasında kullanabileceiniz en ideal türdür. long long 64 bitli iaretli bir türdür. Yeterince geni bir aralıda sahiptir. Bir int türünün istenen deeri tutamayacak kadar geni olmadıı bir durum karısında long, birtakım fırsatlar sunmaktadır. Büyük sayılara sahip tamsayı ifadelerin hesaplanmasında çarpma ilemi sonucunda trilyonlara varan ara deerler üretebilmektedir. Ayrıca süre hesaplandıı zaman, bir yıl milisaniye olarak ölçüldüünde 30 milyarı amakta ve 32 bitlik bir int deeri geçmektedir. Böyle durumlarda kullanmanız gereken tür long dur. Aaıdaki örnei inceleyin: long m; long n = 0x55aa000055aa0000; Bir tamsayı (int) türünün genilii kullandıı bellek miktarı ile ölçülmemelidir: bunun yerine bu türün ifadelerinin ve deikenlerinin hareketi ölçüm olarak ele alınmalıdır.

23 Bu dört türün özelliini genel olarak aaıdaki tabloda gösterebiliriz: Adı Genilii Aralıı Long 64-9,223,372,036,854,775,808'den 9,223,372,036,854,775,807'e nt 32-2,147,483,648'den 2,147,483.647'e Short 16-32,768'den 32.767'e byte 8-128'den 127'e Virgüllü Sayılar Gerçel sayılar olarak bilinen virgüllü sayılar (floating point numbers), kesirli duyarlılıa gereksinim duyan fonksiyonların hesaplanmasında kullanılır. Karakök ya da sinüs veya kosinüs gibi trigonometrik fonksiyonları içeren karmaık hesaplamalar, duyarlılıı virgüllü türe gereksinim duyan bir deeri sunmaktadır. Java bu türün standart setini (IEEE-754) ve iletmenlerini çalıtırır. Bu tür biri float dieri doııble olmak üzere iki gruba ayrılmaktadır. Bu iki grup aaıdaki gibi tanımlanabilir: Adı Genilii Aralıı Double 64 1.7e-308 den 1.7e+308 e Float 32 3.4e-038 den 3.4e+038 e float float anahtar sözcüü ile belirlenen tek duyarlılık bir deeri depolamak için 32 bit kullanır. Tek duyarlılık bazı ilemcilerde daha hızlıdır. Bazı kesirli deerlerin kaydedilmesine ihtiyacı olan basit hesaplamalar, özellikle tam sonuç istediiniz zaman, float türü kullanmanızda yarar vardır. float deikeni gösteren örnek aaıda verilmektedir: