July 8, 2018 | Author: www.javadili.com | Category: N/A
m
i.c o
JAVA ile programlama
dil
Beta
ww w. ja
va
Version 4.0
BY Ahmet Tolga Tat
Sayfa 1
Aciklama
i.c o
m
Bu dökümanlarin hazirlanis amaci Java ögrenmek isteyenlere yardimci olmak icindir.Bu dökümanlar tek basina kaynak olarak kullanilamaz.Kitap icersinde bir cok yazim hatasi vardir ve kitap hic bir ticari amac icin kullanilamaz. Zamanim oldukca JDBC,Corba,RMI,XML JSP ve EJB konularina daha cok döküman hazirlayacagim.Kitap icersindeki hatalar icin bana mail atabilirsiniz. E-Mail:
[email protected]
dil
Icindekiler
Java’yi taniyalim............................................................................................................................5 Java nedir? .....................................................................................................................................................................................5 Özellikler .......................................................................................................................................................................................5 Geliºtirme & Uygulama ..............................................................................................................................................................9 Java Virtual Machine (JVM)....................................................................................................................................................11 JDK Kurulumu ...........................................................................................................................................................................12
va
Java’ya giris .................................................................................................................................15 Ýlk Java uygulamamiz................................................................................................................................................................15 Java’da girdi ve Cikti islemleri(I/O).......................................................................................................................................20 Java’nin temel yapisi.................................................................................................................................................................22
Degiskenler ve Türler..................................................................................................................24
ww w. ja
Tamsayilar...................................................................................................................................................................................24 Karakterler(Characters).............................................................................................................................................................25 Virgüllü sayilar(floating points)..............................................................................................................................................25 Mantiksal degerler(booleans)...................................................................................................................................................26 Strings islemleri..........................................................................................................................................................................26 String Manipulasyonu...............................................................................................................................................................29 StringBuffer Nesnesi.................................................................................................................................................................30 Deðiþkenlerin Ýlk Deðerleri......................................................................................................................................................31 Diziler(Arrays)............................................................................................................................................................................32
Java’da operatörler .....................................................................................................................34 Artýrma ve Eksiltme ...................................................................................................................................................................34 Karþýlaþtýrmalar ..........................................................................................................................................................................34 Deðer Atamalar..........................................................................................................................................................................35 Operatör öncelik tablosu...........................................................................................................................................................35 Özel Karakterler .........................................................................................................................................................................35
Java’da kontrol ............................................................................................................................37 If,else kaliplari............................................................................................................................................................................37 Koºul kalibi.................................................................................................................................................................................38 Switch kalibi...............................................................................................................................................................................38 Break ve Continue komutlarý ..................................................................................................................................................42 Döngü kaliplari...........................................................................................................................................................................45 for döngüleri................................................................................................................................................................................45 while döngüleri ...........................................................................................................................................................................47 do-while döngüleri .....................................................................................................................................................................48
Nesneye yönelik ............................................................................................................................51 BY Ahmet Tolga Tat Sayfa 2
i.c o
m
Class(sinif) nedir? ......................................................................................................................................................................51 Sýnýf Olusturma ..........................................................................................................................................................................52 Sýnýf Tanýmlanmasý....................................................................................................................................................................53 Üye degiskenlerinin tanimlanmasi..........................................................................................................................................56 Method Tanimlanmalari............................................................................................................................................................58 Kalitim Nedir? ............................................................................................................................................................................64 Methodlarý Yenilendirmek.......................................................................................................................................................66 Nesne(Object) Nedir ve Ne ise yarar? ....................................................................................................................................67 Mesajlar .......................................................................................................................................................................................68 Java’da çöp toplama(Garbaje Collection)..............................................................................................................................69 Java’da alt sinif ve miras(Inheritance)....................................................................................................................................69 Java’da öne geçme ve aþiri yükleme ......................................................................................................................................71 This & Super...............................................................................................................................................................................71 Tanimsiz siniflar(Abstract Classes)........................................................................................................................................72 Java’da ulaþim kontrolü ............................................................................................................................................................74 Static degiskenler ve Metodlar.................................................................................................................................................75 Java’da paketler(Packages) ......................................................................................................................................................75 Arayüzler(Interfaces).................................................................................................................................................................77 Exceptions...................................................................................................................................................................................77 Java’da hata idaresi....................................................................................................................................................................77
dil
Multithreading .............................................................................................................................80 Giris ..............................................................................................................................................................................................80 Thread Nedir? .............................................................................................................................................................................81 Coklu Thread uygulamasi.........................................................................................................................................................82 Thread Öncelikleri ve Thread Zamanlamasi.........................................................................................................................84 Thread eszamanlama .................................................................................................................................................................86 Runnable Interface (Calistirilabilir Arayüz) ..........................................................................................................................92
Java Utilities.................................................................................................................................95
va
Vector Class'i ve Enumeration Özelligi .................................................................................................................................95 Stack Class'i ................................................................................................................................................................................99 Hashtable Class'i ..................................................................................................................................................................... 102 Properties Class’i..................................................................................................................................................................... 105 Random Class'i ........................................................................................................................................................................ 105 Bit Islemleri ve Bitwise Islemcileri...................................................................................................................................... 106 BitSet Class'i ............................................................................................................................................................................ 110
ww w. ja
Exception Handling ...................................................................................................................113 Java’da hata yakalamanin temelleri..................................................................................................................................... 113 Exception cesitleri................................................................................................................................................................... 114 Exception handling’deki blok tanimlari ............................................................................................................................. 115 Yeni Exception siniflari yapma ............................................................................................................................................ 118
Java Metodlari ...........................................................................................................................121 Java 'da Program Modulleri................................................................................................................................................... 121 Metodlar.................................................................................................................................................................................... 122 Rastgele Sayi Türetme ........................................................................................................................................................... 124 Recursion ve Iterasyon........................................................................................................................................................... 127 Method Overloading............................................................................................................................................................... 127 Applet Siniflarinin Metodlari ................................................................................................................................................ 128
Java Lang ...................................................................................................................................129 java.lang.Math ......................................................................................................................................................................... 129 java.lang.Character ................................................................................................................................................................. 130 java.lang.Integer...................................................................................................................................................................... 131 java.lang.Float.......................................................................................................................................................................... 132 java.lang.String........................................................................................................................................................................ 133 java.lang.StringBuffer ............................................................................................................................................................ 135
Java AWT ...................................................................................................................................137 Frame ......................................................................................................................................................................................... 137 Panel.......................................................................................................................................................................................... 138 Düzenleme Menejeri(layout manager) ................................................................................................................................ 139
BY Ahmet Tolga Tat
Sayfa 3
i.c o
m
FlowLayout Manager............................................................................................................................................................. 139 Border Layouts(Kenar Çizgi Layoutlarý)............................................................................................................................ 140 Grid ve Grid Bag Layout ....................................................................................................................................................... 142 Insets(kümeler)........................................................................................................................................................................ 143 Button........................................................................................................................................................................................ 143 Checkbox.................................................................................................................................................................................. 145 Radio Buttons.......................................................................................................................................................................... 146 Menu’ler ................................................................................................................................................................................... 147 Choice menus........................................................................................................................................................................... 147 Text Fields................................................................................................................................................................................ 150
Java Applet.................................................................................................................................162 Java Applet Temelleri ............................................................................................................................................................ 162 Multimedia ............................................................................................................................................................................... 164 Audio Kullanýmý Metotlarý.................................................................................................................................................... 165 Çift Grafik Tamponlama........................................................................................................................................................ 169 Ses Parçalarý Yükleme ve Çalma ......................................................................................................................................... 176 Imge Haritalarý......................................................................................................................................................................... 177
Java Swing ..................................................................................................................................179
va
dil
JFrame ....................................................................................................................................................................................... 179 Look and Feel .......................................................................................................................................................................... 182 JLabel........................................................................................................................................................................................ 182 JButton...................................................................................................................................................................................... 183 JPanel ........................................................................................................................................................................................ 185 Internal Frames ........................................................................................................................................................................ 187 JToolBar ................................................................................................................................................................................... 187 JLists.......................................................................................................................................................................................... 188 JTree .......................................................................................................................................................................................... 191 Alert Dialogs (JOptionPane)................................................................................................................................................. 193 JPassword ................................................................................................................................................................................. 199 JComboBox.............................................................................................................................................................................. 200 JTable ........................................................................................................................................................................................ 201 JScroll........................................................................................................................................................................................ 204
Networking .................................................................................................................................206 Socket programlama ............................................................................................................................................................... 206
JDBC...........................................................................................................................................221
ww w. ja
JDBC nedir? ............................................................................................................................................................................. 221
Corba ..........................................................................................................................................226 Corba nedir? ............................................................................................................................................................................. 226
Kaynakca ....................................................................................................................................230
BY Ahmet Tolga Tat
Sayfa 4
m
Java’yi taniyalim
i.c o
Java nedir?
ww w. ja
Özellikler
va
dil
Java programlama dilini ve onun çevresel gelisimini açiklayan bir dizi makale ile baslar.Birinci amaç olarak ,dilin tarihi hakkinda yayimlardan, mikrodalgalar ve çamasir makinelerinden... uzak duracagim.( Eger aranizda bunlardan herhangi biri ile ilgilenen varsa bunlari çoklu kütüphanelerden hatta literatürden bulabilir.) Ayni Zamanda kocaman burunlu, üçgen vücutlu ve ellerini marimba'nin ritmine göre sallayan ,bana eski Amerikan bilim kurgu filmlerini hatirlatan Duke ' tan da (Java'nin maskotu) uzak duracagim. Java fenomeni de zamaninda geçici popülerlik tanidi.Her seviyedeki bilgisayar magazini bunun hakk?nda yazd? , Java apletlerini geliitirmek üzere ürün satan birçok yazilim firmasi var ve çok az web sitesi Java apleti içermiyor. Bu seriler aras?nda mümkün oldu?u kadar , aslinda temel isler için basit fakat ustalikli kullanim için hayli karisik ve zor olan bu programlama dilini derinlemesine incelemeye ve ögrenmeye çalisacagim. Bu ilk birkaç makale ile amac?m?z genel olarak dile bir tanimlama saglamak böylece daha sonra apletler,a?- ili?kili planlar, JDBC,vb. gibi konular?n derinine inebiliriz. Sunu belirtmeliyim ki Java genel amaçli bir dildir,bunu yapmada oldukça popüler olmasina ragmen sadece web sayfalarina aplet yazmak için kullanilmak üzere yapilmistir.. Java'nin sadece görünüsüne takilamayz çünkü java apletlerinden çok daha ilginç bir çok alternatifi vardir.
Java Sun Microsystem 1991'de James Gosling, Patrick Naughton, Chis Warth, Ed Frank ve Mike Sherindan tarafindan olusturuldu. 1992 ve 1995 arasinda Bill Joy, Arthur Van Hoff, Jonathan Payne, Frank Yellia, Tim Lindolm ilk prototipin olgunlasmasi üzerine isbirligi yaptilar. Tarihler gösteriyorki Java WWW (We Want Womens J)'den önce ya da en azindan onunla eszamanli olusturulmustur . Java'nin yapisi C'ye oldukça benzemektedir ve obje agirlikli karakteristikleri de ayni zamanda C++ 'a benzemektedir. Java uygun ve mantik çerçevesinde birbirini tutan bir programlama dilidir. C ve C++ arasindaki benzerlikler, Java'nin C++ '?n internet için bir versiyonu oldu?u izlenimini verebilir, fakat önemli teorik ve pratik farkliliklar vardir. Java özellikle C++ ile karsilastirilan obje kökenli parametreleri düzeltir ve aritir. Internet Java'yi ortaya atti ve herkesin bildigi bir dil haline getirdi ve eszamanli olarak Java, siberuzayda ücretsiz edinilebilen objeler dizisini geni?letti?inden beri ?nternette derin etki yapdi.
• Basit
Java dili text tabanlý bir proglama dilinin taþýdýðý fonksiyonelliði, gücü aynen taþýr fakat bunun yanýnda karmaþýk bir yapýya sahip deðildir. Temel olarak son derece basit bir yapýsý vardýr. BY Ahmet Tolga Tat
Sayfa 5
i.c o
m
Günümüzdeki C ve C++ dilleri temel alýnarak dizayn edilen Java dili kolay ve hýzlý öðrenilebilen ve kullanabilen bir programlama dilidir. Java dili objesel bir dildir, fakat C++ gibi diðer objesel diller deki bazý hata veya gereksizliklerden arýnmýþtýr. Dilin spesifikasyonu son derece küçük tutulmuþ ve programcýya kolaylýklar saðlanmýþtýr. Ve örneðin Garabage Collection gibi çok yararlý yeni özelliklerde eklemiþtir. Mesela C veya C++ daki karmaþýk pointer kavramý, gereksiz bir deðiþken olan struct, typedef, # dejine ve hafýzayý temizleme mantýðý uygulanmamýþtýr. Bunlarda zaten neredeyse programcýlýkta olan bug’larýn yüzde ellisinden kurtulmak demektir.
• Nesneye Yönelik
Java dili C++ daki temel nesne yapýsýný korumaktadýr hatta buna bazý yenilikler getirmiþtir. Hatta basitlik kavramý için bazý özelliklerde kaldýrýlmýþtýr. Java dilinde veriler ve deðiþkenler dahil her þeye nesne olarak yaklaþýlýr.
• Daðýtýk
dil
Internet ve að çaðýnýn bir þartý olarak Java dilinin kendi TCP/IP yetenekleri ve hazýr fonksiyonlarý vardýr. Günümüzün popüler protokolleri HTTP ve FTP rutinleri bile Java’nýn kütüphanelerinde hazýrdýr. Bunlarda bize að üstünden bilgiye ulaþýrken sanki lokal bir dosyaya eriþircesine rahat kodlama yapmamýzý saðlar.Java’nin dagitik programlanmasi sayesinde Client/Server programlari gelistirilebilir.
• Düzgün
va
Java dili gerek derleme gerekse de çalýþtýrma sýrasýnda bir çok hatayý kontrol eder. Deðiþken tiplerini kontrol etme, hafýzanýn temizlenmesi (Garbage Collection), Null Pointer ve Array (Dizi) uzunluðu kontrolü ve de Exceptions gibi.
• Platform Baðýmsýz
ww w. ja
Yine Java dilini að yapýlarýnýn vazgeçilmez bir parçasý yapmak için; Java derleyici programýnýzý derlediði zaman kaynak kodumuzu, yapýdan baðýmsýz nesnesel bir dosya formatýna çevirir. Buna Java bytecodes diyoruz. Java Runtime sistemini bulunduran makineler bu bytecode’larý çalýþtýrabilir. Þu an günümüzde bir çok sistem için Java Runtime Environment (JRE) bulunmaktadýr. Mimari-baðýmsýz: Java programlarý derlendikleri zaman byte-kod oluþturduklarý için, Java'yý destekleyen tüm platformlarda çalýþabilmektedirler. Bir Java programýnýn yeni bir makinaya taþýndýðýnda tekrardan derlenmesine gerek yoktur. Java dili tüm bilgisayar sistemlerinde aynýdýr. Örneðin basit veri tipleri adýný verdiðimiz integer bir sayý her zaman 32 bit, long ise 64 bit olarak gösterilmektedir. Diðer dillerde ise bu durum böyle deðildir, derleyiciden derleyiciye bu veri tiplerinin gösterimi deðiþiktir. Özetle Java kaynak kod derlenince bytecode’lar oluºur. Bytecode’lar sanal bir makine olan Java Virtual Machine’de (JVM) çalýþtýðý varsayýlýr ve iþlemde makineye baðýmlý bir çalýþma aný hata ayýklayýcýsý yani bir tercümanla olur. Bu JVM mantýðýyla hareket eden programa Java Interpreter diyoruz. JVM, yazýlým ile gerçek bir makinede emüle edilen sanal bir makinedir. Bu sanal makine için kullanýlan kodlar iþte .class dosyalarýnda duran bytecode’lardýr. Her yazýlan Java kaynak kodu derlenirken iþte bu ortak sanal makine için derlenir. Bu makinenin belirli komut setleri (týpký BY Ahmet Tolga Tat
Sayfa 6
m
gerçek bir CPU’nun olduðu gibi) hafýza alanlarý, stack’i vardýr. Ýþte bu mantýk Java’nýn platform baðýmsýzlýðý yaratýr. Ve iþte hangi gerçek makinede bir yazýlým ile sanal bir JVM yaratýlýrsa o makinede Java ile yazýlmýþ program çalýþabilir.
• Güvenli
§
Kodu yüklemek
§
Kodu kontrol etmek
§
Kodu çalýþtýrmak
i.c o
Java dili Pointerlarýn kullanýcýdan kullanýmýný almak, hafýza adreslemeyi sadece çalýþtýrma sýrasýnda yapmak gibi kavramlarla güvenliði geliþtirmiþtir. Bunun yaný sýra Java Interpreter da JVM kodlarýnýn yüklenmesi ve yoklanmasý sýrasýnda çok çeþitli güvenlik unsurlarý barýndýrmaktadýr. Java Interpreter’ýn (tercüman) üç ana görevi vardýr.
• Taþýnabilir
va
dil
Kodu yükleme aþamasýný Class Loader yani sýnýf yükleyici halleder. Bu aþamada programýn çalýþmasý için gerekli tüm class’lar (sýnýflar) çaðrýlmaya baþlanýr, fakat mutlaka yerel olarak mý yoksa uzak uçtan yani að kaynaklarýndan mý aldýðýný tutar. Buda çok önemli bir problem olan Truva Atý uygulamalarýn önünü keser çünkü her zaman önce lokal yüklü ve hazýr class’lar çek edilir.Hafýzada yer seçimi Interpreter tarafýndan yapýldýðý için iþletim sistemine kayma gibi sorunlar ortadan kalkar. Ayrýca kodun kontrolü sýrasýnda Interpreter bir çok hatayý kontrol eder. Genel olarak bytecode’larýn JVM için uygun olup olmadýðýný kontrol eder.
ww w. ja
Temel taþýnabilirlik olan platform baðýmsýzlýðý, tema olarak makinelerin iþleyiþ tarzý ve donanýmýnýn farklý olduðu ortamlarda da ayný kodu çalýþtýrabilmektir. Fakat ek unsurlarda söz konusudur, her ayný ortam için tüm kavramlar aynýdýr. Hepsinde Int (integer) kavramý ve boyutu aynýdýr. Hepsinde grafiksel kullanýcý arabirimi için Java’nýn kendi grafiksel arabirim kiti kullanýlmaktadýr. Bunun adý Abstract Windowing Toolkit (AWT)’dir.
• Performans
Ýþte belki de Java dilinin zorlandýðý tek nokta. Performans denince tabii ki süre kavramý ön plana çýkýyor yani Java derleyicisinin ve Java Interpreter’in hýzý. Derleyicinin özellikle C++’a göre biraz daha yavaþ olduðu kesin fakat daha fazla görevi olduðunu ve ek avantajlar getirdiði için kabul edilebilir. Java Interpreter ise yani esasýnda bunu Java programlarýnýn çalýþma hýzý þeklinde de yorumlayabiliriz; C++’a göre ilk zamanlar da bayaðý yavaþtý. Zaten bu beklenen bir olaydý çünkü C ile yazýlmýþ program direkt CPU ‘da çalýþmaya baþlarken, önce Java Interpreter yani tercüman kendi açýlýyor daha sonrada aldýðý her kodu tercüme edip CPU’da gerekli iºlemi yapýyor. Fakat Java Interpreter’inin son sürümü ilk versiyonundan yüzde elli daha hýzlýdýr, bu da demektir ki Java’yý hýzlandýrma çalýþmalarý devam ediyor. Hýz için bir çözüm de Java Runtime Compiler, yani Java kaynak kodumuzu derlediðinizde onu bytecode’a deðil de direkt makine koduna çeviriyor. Ama tabii böyle bir seçimde platform baðýmsýzlýðýndan vazgeçmiþ bulunuyorsunuz. BY Ahmet Tolga Tat
Sayfa 7
• Küçük
m
Bir programlama dili olarak Java diðerlerine kýyasla oldukça küçüktür. 4 MB’lýk RAM'e sahip tüm sistemlerde çalýþmaktadýr. Java yorumlayýcýsý 500-600 KBlýk yer kaplamaktadýr.
• Saðlam
dil
i.c o
PClerde çalýþan herkes, durup dururken sistemin nedensiz bir þekilde göçtüðüne þahit olmuþlar ve bu yüzden emek verilen bir sürü çalýþmanýn boþa gittiðini görmü ºlerdir. Java sistemi, belleðe her eriþim esnasýnda belleðin bu bölgesini kontrol eder ve geçerli bellek alaný olup olmadýðýný kontrol eder. Java programlarýnda 'bug' lar oluþsa bile 'exception handler' larla problemin nerede olduðunu bildirir düzeltmeye çalýþýr. Java bellekðin yalnýz kendisine izin verilen alanýnda çalýþabilir.
• Hizli!
va
Java programlama dili C'den daha yavaº bir dildir.Fakat Just- in-Time(JIT) Compiler sayesinde java C/C++ gibi dillerle es degerdedir. Bu derleyici ile Java artýk yorumlanan bir dilin yavaþlýðýný býrakýp alýþýlagelmiþ derlenen dillerin hýzýna kavuþmasý beklenmektedir. Java
ww w. ja
C++ C
Assembler
Makine Dili(0ve1)
Hizlilik bakimindan bakildiginda Java en üstte yani en yavas olan dillerden bir tanesidir.
• Multi Threaded(Paralel kullanim)
Büyük Ana programýn alt parçacýklarý olan ve ondan baðýmsýz hareket eden çocuk programcýklara thread diyoruz. Bunun destekleyen dile de Multi Threaded diyoruz. Java bu özelliði desteklemesinin yaný sýra C ve C++’a göre threadler çok daha düzgün, sade ve temiz bir yapýya sahiptirler. Sonuçta threadlerin kullanýldýðý bir program, ayný anda birden fazla aktiviteye izin verir. Meselâ neredeyse tüm chat (sohbet) programlarý multi threaded’dýr. Çünkü arkadaþýnýzdan mesaj gelirken sizi yazý yazabilirsiniz. Fakat unutmamak lazým bu özellik iºletim sisteminize de baðlýdýr.
BY Ahmet Tolga Tat
Sayfa 8
• Tek-kalýtlý
i.c o
m
Java, tek-kalýtlý (single inheritence) sýnýf yapýlarýný destekler. Bazý diller çoklu-kalýt sýnýflarýný desteklemektedir, ancak bu yazýlan programlarýn çok karmaþýk ve çözülmesi zor olmalarýna neden olmaktadýr. Ayný zamanda arayüzleri (interface) desteklemektedir. Bunlara abstract sýnýf adý verilmektedir. Bu tip sýnýflar, programcýlara, metotlarýn nasýl uygulanacaðýnýn sonradan belirleneceði sýnýflar yaratýlmasýna izin verir. Bir sýnýf, birden fazla arayüz oluºturabilmektedir. Böylelikle gerçek çoklu-kalýt ortamlarý kolaylýkla saðlanmýþ olmaktadýr.
• Byte-Coded
• Dinamik
dil
Byte-kodlar diðer makinalarýn komut setlerine benzerler, yalnýz tek bir makinaya tabi deðildirler ve içlerinde kendi veri tiplerini onaylayan ek tip bilgilerini içerirler. Java uyumlu web tarayýcýlarý diðer ortamlarda yaratýlan form/grafik/resim gibi objelere nasýl görürlerse, Java appletlerinide ayný þekilde görürler. Java byte-kodlarýndan oluþan byte-kodlar tarayýcýnýn kaynak kodu içine gömülürler. Bu aþamadan sonra ilk önce onaylanýrlar, sonra da çalýþtýrýlýrlar.
ww w. ja
• Java ve Web
va
Java dili nesne teknolojisinden elden geldiðince yararlanýr bu yüzden derleme sýrasýnda programýmýzda kullandýðýmýz modüller onunla birleþmeyecektir. Sadece çalýþma sýrasýnda dýþarýdan çaðrýlacaktýr. Bu sayede yeni veya geliþtirilen temel kütüphanelere programýmýz hemen adapte olacaktýr. Bu temel kütüphanelere yani class’lara API (Application Programming Interface) paketleri diyoruz. Bu dinamikliðin bir yönü de çalýþma sýrasýnda dýþarýdan ihtiyaç duyduðumuz bir parçayý hiç zorlamadan að üstünden alabilmedir.
Bilindiði gibi Web sayfalarý ne kadar canlý gözükürlerse gözüksünler, ses veya animasyonlarda olsa sonuç olarak aktif yani çalýþan bir yapýya sahip deðildirler. Ýþte Java’nýn özellikle Web için tasarlanan Applet yapýsý buna bir alternatiftir. Bir web sayfasý üstünde bulunan ve tarayýcý tarafýndan çalýþtýrýlýp interaktif olan Java programlarýna Applet diyoruz.
Geliºtirme & Uygulama Sun tarafýndan geliþtirilen ve Java’nýn derlenmesini ve geliþtirmesini saðlayan programlar grubuna veya ortamýna JDK (Java Development Kit) denir. Bugün Sun dýþýndaki firmalar tarafýndan üretilen diðer grafiksel derleyiciler bile en alt planda bu temel derleyiciyi kullanýr. JDK text tabanlý komutlar grubudur. Genelde JDK’nýn versiyonu Java’nýn yani dilin kendisinin geliþmiþliðini gösterir. Ýlk zamanlarda JDK 1.0.x ler vardý. Fakat 1.0 dönemi çok sürmedi hemen sonra JDK 1.1.x ler çýktý. Bugün Javanýn yani JDK’nýn en son resmi sürümü JDK 1.1.6’dýr. Ama BY Ahmet Tolga Tat Sayfa 9
i.c o
m
þu anda JDK 1.2 beta 4 bile Sun’ýn sitesinde bulunmaktadýr. Bütün bu süreç Java’ya verilen önemi göstermektedir. Sonuç itibarýyla Java ile yazýlmýþ programlarý iki grupta toplayabiliriz. Bir yalnýz baþýna çalýþabilen uygulamalar.(Applicatýons). Fakat bunlar için biliyorsunuz ki mutlaka bir Java ortamý bulunmak zorunda. Ýþte bu ortama JRE (JavaRuntime Environment) diyoruz. Esasýnda JDK bulunan her makinede Java programlarý çalýþabilir. Ama JRE, JDK’ya göre daha küçük ve ha fiftir ve kullanýcý amaçlý makinelere sadece onu yüklemek yeterli olacaktýr. Her yeni JDK versiyonu çýktýðýnda onun birde ayný JRE versiyonu çýkmaktadýr. Ýkinci tip Java uygulamalarý ise web sayfasý üzerinde çalýþan Applet’lerdir. Appletlerin çalýþabilmesi için çaðrýldýklarý tarayýcýnýn mutlaka Java desteði olmak zorundadýr. Hem kendi Java’da yazýlan hem de Applet kavramýný anlatabilmek için zorunlu olarak Sun tarafýndan üretilen Java destekleyen tarayýcý HotJava’dýr. Bugün son kullanýcý için pek popüler olmayan HotJava geliþtiriciler için önemlidir. Çünkü ayný firma tarafýndan yazýldýðý için Java’nýn son versiyonlarýna ilk uyum saðlayan tarayýcýdýr.
Java ortaminin gelistirilmesi
dil
Daha önce belirtildigi gibi gelisme araçlari /bin dizininde yeralir :
ww w. ja
va
javac :Java kaynaklarini baytkodlarina çeviren java derleyicisi. java :Java yorumlayicisi . Java baytkodlarini çalistirir. jre : Java'ya benzer baska bir yorumlayici ,fakat kullanicilar için oldugu düsünülmesine ragmen tüm seçeneklerin kullanilir olmasi istenmemektedir. appletviewer: apletleri test eder veçalistirir. jdb: hata düzeltici javap: Java da derlenen baytkod dosyalarinin ayiricisi. javadoc : dökümantasyon jeneratörü , genel ve korunmus siniflari, arayüzleri , yapilari, methodlari ve alanlari tanimlayan HTML sayfalarini yarat?r.Ayni zamanda sinif hiyearasisini ve üyelerin içinde bulundugu indeksi yapar. javah : Java programlarinin bilinen metodlarina eklenen araç ( C de ) jar: Java siniflarini ve kaynaklarini bir Jar arsiv dosyasinda saklar . javakey : Dijital imzalari koruyan araç. updateAWT : bir basvurudaki AWT1.02 metodu ile degistirilen isimleri güncellestirir. Belli bir dizin yap?s? ile glitch' ler olmadan çalisirken /usr/local/JDK1.1.3/bin 'i PATH de?i?kenine ataman?z? tavsiye ederim .Eger kullan?labilen sistem geli?me çevresini daha geni? yapmak istiyorsan?z /etc/profile dosyas? içindeki Path degi?kenini kar??t?r?n.
Karakteristikler
Devam etmeden önce , kendimize Java nedir sorusunu sormamiz gerekir. Cevaplamak için JDK'nin elkitabinda yazdigi gibi Java'n?n bir programlama dili ve ayni zamanda bir platform oldugunu gözönünde bulundururuz. Bir programlama dili olarak Java asagidaki karakteristiklerle beraber yüksek seviyeli bir dildir. (ayni noktada onlari detayli olarak inceleyebiliriz ): Dikkatimizi çeken ilk sey Java'nin yorumlanmsi olmasidir.Java kaynaklarinin bir objeyi baytkodlar olarak yapmasi için bir önceki daha düsük seviyede ki derleyiciye ihtiyaci olmasina ragmen , degisik platformlarda yorumlanabilir . BY Ahmet Tolga Tat
Sayfa 10
Bir Java platformunun iki bölümü vardir :
i.c o
m
" Birkez yazip herzaman çalistirabildigimiz " Java baytkodlarina tesekkür ederiz. Java programlarini bir platformda derleyebilir ve JVM (Java Virtual Machine ) aracini içeren tamamen farkl? ba?ka bir yap?da çal??t?rabiliriz. Örne?in bir Java program? Windows NT platformunda derlenebilir ve bir Sun Ultra Solaris 'de veya bir Linux platformunda sorun olmadan çalisabilir . Genel olarak bir platform uygulamanin çalistigi bir donanim/yazilim ortamidir . Bununla beraber Java için bir platform çalistigi bir yazilim ortamidir . Her Java platformu bir donanim ortaminda çalismak zorundadir.
Java Virtual Machine (JVM)
va
dil
JVM , Java öncelikli derlenen programlarin çalistirildigi açik bir bilgisayardir.Küçük ve basit olarak dizayn edilmistir çünkü dü?ünülen onu her yere indirmektir . Bu basitlik onu tüm varolan platformlara ta??may? mümkün kiliyor , böylece hepsine ortak bir yazil?m sa?l?yor ve her kar???k a? sisteminde ( Internet gibi ) büyük ölçüde tasinabilirlik sorununu ortadan kaldirir.Hayal edilebildi?i gibi bu, durdurulamayan teknoloji için yaklasik bir nedendir. Bununla beraber sanal makine bir yaz?l?m tabakas? olarak görülmemelidir, fakat isminin belirtti?i gibi, bu dolu bir bilgisayar sistemi olmaya çalisiyor,yavas yavas gerçek Java makinelerini , kredi kartlari ,TV dekoderlerini ve benzerlerini destekleyen Java Çiplerini marketlerde görüyoruz .
Uygulamali Program Arayüzü (API)
ww w. ja
API (Application Programmer's Interface), kýsaca Uygulama Programcýsýnýn (siz) kullanacaðý bütün function'larý (iþlevleri) içerir. Java'nin API 'si grafiker kullanici arayüzü (GUI ) gibi özellikleri destekleyen genis bir yazilim bile?enleri koleksiyonudur . Bunlar kütüphanelerde gruplandirilmistir. ( Java terminolojisini kullanan Java paketleri ).Bu paketler sayesinde çok bilinen web Apletlerinin yanisira, Java'yi daha birçok uygulamada kullanmak mümkündür.Web serverlarini dizayn etmek mümkündür, örnegin, vekiller, ileti serverlari, IRC serverlari, ve internet ile ilgili hayal edilebilecek herhangi birseyler...(JSP’ler gibi) API:paketlerini degisken gruplar içerisinde siniflandirabiliriz : Temel: objeler, matrisler, sayilar, girdi ve çikti , bilgi yapilari, sistemin özellikleri, tarih, zaman,vb. Appletler :Fonksiyon seti ve Java apleti yapmak için kullan?lan özellikler. Ag çalismasi:URL'ler, TCP, UDP, soketler, IP adresleme. Uluslararasilastirma : yerel tanimlamalara kolayca adapte olabilen kodlar yazmaya yardim eder ve yerel dilde görüntüle nir. Güvenlik:düsük ve yüksek seviye,dijital imzayi içerir, genel ve özel anahtarlar,kontrol ve sertifikaya giris. Yazilim Bölümleri: JavaBeans olarak bilinir. Veritabanlari: Çok sayida iliskili veritabanina girisi saglar . Ve daha neler neler.......J BY Ahmet Tolga Tat
Sayfa 11
JDK nedir?
va
JDK Kurulumu
dil
i.c o
m
Bu ,Java programlama dilini ve onun çevresel gelisimini açiklayan bir dizi makale ile baslar.Birinci amaç olarak ,dilin tarihi hakkinda yayimlardan, mikrodalgalar ve çamasir makinelerinden... uzak duracagim.( Eger aranizda bunlardan herhangi biri ile ilgilenen varsa bunlar? çoklu kütüphanelerden hatta literatürden bulabilir.) Ayni Zamanda kocaman burunlu, üçgen vücutlu ve ellerini marimba'nin ritmine göre sallayan ,bana eski Amerikan bilim kurgu filmlerini hatirlatan Duke ' tan da (Java'nin maskotu) uzak duracagim. Java fenomeni de zaman?nda geçici popülerlik tasidi.Her seviyedeki bilgisayar magazini bunun hakk?nda yazd? ,Java apletlerini geli?tirmek üzere ürün satan birçok yaz?l?m firmas? var ve çok az web sitesi Java apleti içermiyor. Bu seriler arassnda mümkün oldugu kadar , aslinda temel isler için basit fakat ustal?kl? kullan?m için hayli karisik ve zor olan bu programlama dilini derinlemesine incelemeye ve ögrenmeye çalisacagim. Bu ilk birkaç makale ile amacimiz genel olarak dile bir tanimlama saglamak böylece daha sonra apletler,a?- iliskili planlar, JDBC, vb. gibi konularin derinine inebiliriz. sunu belirtmeliyim ki Java genel amaçli bir dildir,bunu yapmada oldukça popüler olmasina ragmen sadece web sayfalarina aplet yazmak için kullan? lmak üzere yapilmistir. Java'nin sadece görünüsüne takilamayiz çünkü java apletlerinden çok daha ilginç bir çok alternatifi vardir. Cünkü Java Applet’ler Javanin %5‘ni olusturur.
Java ile geliºtirme (development) yapmak için Java Development Kit'e (JDK) ihtiyacýnýz var. Bu paket Java ile gelistirme yapmak için bütün araçlarý içeriyor..
ww w. ja
Bu tool'lara editor (düzenleyici) dahil deðil. Piyasada bir çok GUI Java Editor'ý var. Bunlar genelde ücretli. Ayrýca oldukça güçlü bir makinede bile oldukça aðýr çalýþýrlar. Programýn nasýl çalýþtýðýna zaman harcayýp kafa patlatmanýz gerekir; üstelik, en önemlisi, kodun içine kendiliðinden bir sürü kod eklerler, bu da yazdýðýnýz kodu anlamamanýza yol açar. Bence bu gibi araçlar Java'ya yeni baþlamýþ olanlar için uygun deðil .Bana 'hangi Java editor'u tavsiye edersin' diye sorarsanýz,size aslýnda geliþmiþ bir text editor (metin düzenleyici) olan, fakat Java dahil bir çok dilde programlama yapmanýzda kolaylýk saðlayan EditPlus'u tavsiye ederim.
JRE nedir?
JRE (Java Runtime Enviroment) Java Virtual Machine, Java Platform çekirdek class'larýný ve destekleyici dosyalar gibi paketleri içerir. Yani development yapmak için gerekli olan derleyici (compiler), debugger gibi paketleri içermez. JRE zaten JDK'nýn içinde vardýr.Dolayýsýyla, JRE'yi indirmeniz GEREKMEZ. Böyle bir paketin oluþturulmasýnýn nedeni ise basit: Yazdýðýnýz ve derlediðiniz (compile) Java class'larýný herhangi baþka bir makinede çalýþtýrmak için bu pakete ihtiyacýnýz olabilir.
1- Dosyalarý Birleþtir.
BY Ahmet Tolga Tat
Sayfa 12
i.c o dil
• jdk1_2_2-win-a.exe • jdk1_2_2-win-b.exe • jdk1_2_2-win-c.exe • jdk1_2_2-win-d.exe • jdk1_2_2-win-e.exe • jdk1_2_2-win- f.exe • jdk1_2_2-win- g.exe • jdk1_2_2-win- h.exe • jdk1_2_2-win- i.exe • jdk1_2_2-win-j.exe • jdk1_2_2-win-k.exe • jdk1_2_2-win- l.exe • jdk1_2_2-win- m.exe • jdk1_2_2-win- n.exe • jdk1_2_2-win-o.exe
m
Eðer dosyalarý 1.44 MB'lýk 15 dosya olarak indirdiyesniz, öncelikle dosyalarý birleþtirmeniz gerekiyor. Eðer tek bir dosya halinde indirdiyseniz 2. bölüme geçiniz. Download ettiðiniz dosyalarýn isimleri:
2 -Kuruluma baºla
va
olmalý. Daha sonra jdk.bat'ý dowload edip yukarýdaki dosyalar ile ayný klasöre kopyalayýp üstüne çift týklayýn.Böylece tek, bütün bir dosya oluþmuþ oldu. Bunda sonra 2. bölüme geçebilirsiniz.
ww w. ja
Kuruluma, aynen diðer Windows uygulamalarýnda olduðu gibi, jdk1_2_2-win.exe adlý dosyaya çift týklayarak baþlýyoruz. Ýlk gelen ekranda Next'e, daha sonraki ekranda ise Yes'e týklýyoruz. Daha sonra gelen ekranda kurulum yapacaðýmýz klasörü girmemizi istiyor. Bu deðeri deðiþtirebilirsiniz fakat daha ileride anlatacaðým bazý iþlemleri yapmada zorluklar yaºayabilirsiniz, normali olan c:\jdk1.2.2 kalmasý daha uygundur. Daha sonra gelen ekranda tüm seçenekleri seçtikten sonra Next'e týklayý Böylece kurulum baþlamýþ oldu. Birçok dosyayý kopyaladýktan sonra JRE kurulumu için tekrar bir ekran gelecek burada da Yes'e týklayýn. Daha sonra gelen ekranda dizini yine normalinde býrakýp Next'e týklayýn.Finish'e týklayýn. 3 - PATH ve CLASSPATH deðiþkenlerini ayarla Bunlar CLASSPATH ve PATH adýný verdiðimiz ortam deðiþkenleridir. PATH bildiðimiz çalýþan dosyalarý arama listesidir. Yazdýðýmýz Java komutlarýnýn herhangi bir yerde çalýþmasý için bulunduklarý yerleri PATH olarak gösterilmesi lazýmdýr. CLASSPATH ise derleme sýrasýnda gerekecek temel kütüphanelerin, classlarýn yani API’lerin bulunduðu yeri gösterir. Autoexec.bat dosyasýndaki þu iki satýr herþeyi halledicektir. Böylece dosya kopyalama iþlemi tamamlanmýþ oldu. Þimdi bize bazý kolaylýklar saðlamasý için makinenizin çevre deðiþkenlerinde bazý deðiþiklikler yapacaðýz. Bu kýsýmda oldukça dikkatli olmak gerekiyor. Önce sistem editörünü (system editor) çalýþtýrýyoruz. Start ondan sonra Run'a týklayýp, gelen alana sysedit yazýn, Enter'a basýn.
Ýçinde bir çok pencere olan System editor çalýþmýþ oldu. BY Ahmet Tolga Tat
Sayfa 13
Bu pencerelerden AUTOEXEC.BAT yazýlý olaný seçin.
m
PATH ile baþlayan satýrý bulun. Bu satýrýn en sonuna
i.c o
;C:\JDK1.2.2\BIN deðerini ekleyin. Örnek: PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\JDK1.2.2\BIN Not: Eðer Windows 98 kullanýyorsanýz, PATH ile baþlayan satýr olmayabilir. Bu durumda en alta aþaðýdaki satýrý ekleyin. PATH C:\JDK1.2.2\BIN Daha sonra ise en alta aþaðýdaki satýrý ekleyin
va
dil
SET CLASSPATH = .;c:\java Daha sonra File'dan Save'e týklayýp System editor'ý kapatýn. (NOT: Sistem editöründe baþka herhangi bir deðerle oynamak sistemin bir daha açýlmamasýna neden olabilir. PATH deðiþkenini aktif hale getirmek için Start | Run'a týklayýp gelen alana c:\autoexec.bat yazýp Enter'a basýn. Bir DOS Pencresi açýlacak gerekli iþlemleri yapacak. Yaptýðýndan emin olmak için bir DOS penceresi açýp(Start | Run a týklayýp gelen alana command yazýp entera basýn) path yazýp Enter'a basýn. Size path deðiþkeninin deðerlerini verecek. Bunlarýn arasýnda C:\JDK1.2.1\BIN'in olup olmadýðýný ve doðru yazýlýp yazýlmadýðýný kontrol edin.
ww w. ja
Bu iºlem bize C:\JDK1.2.1\BIN dizini altýndaki programlarý(java, javac vb.) hangi dizinde olursak olalým çalýþtýrabilme olanaðýný erecek. Ayrýca CLASSPATH deðiþkeni ise yazacaðýmýz programlarý çalýþtýrmamýzda yardýmcý olacak.Böylece kurulum tamamlanmýþ oldu.
BY Ahmet Tolga Tat
Sayfa 14
m
Java’ya giris
i.c o
(Girelim bakalim...)
Ýlk Java uygulamamiz
va
Örnek: //Java’ya hosgeldiniz
dil
Daha önceden de bahsettiðimiz gibi Java ile diðer dillerde olduðu gibi sýradan uygulamalarda yazabiliyoruz. Aþaðýdaki kýsacýk programýn amacý, ekrana „Merhaba Dunya!“ karakter dizisini yazdýrmaktýr.
// ilk örnek java uygulamasý //Merheba Dunya
ww w. ja
class MerhebaDunya{
public static void main (String args [ ] ){ System.out.println („Merhaba Dunya“); }
}
Açýklama:
Ýlk uç satýr yorum (comment) tabir ettiðimiz satýrlardýr.“//“ iþareti ile baþlayan satýrlar dikkate alýnmaz. Programcýnýn kendine veya grubuna hatýrlatmalarýdýr.Dördüncü satýr programýn adýnýn verildiði satýrdýr. Programýn kendisine de bir nesne gözüyle bakýldýðý için oda bir class olarak tanýmlanmýþtýr. Programýn kaynak kodunu kayýt ederken, bu ada .java uzantýsýný ekleyip kayýt etmelisiniz ve ayrýca derlendikten sonra bu isim .class isimli Java uygulamasý oluþacaktýr. En sondaki küme paranteziyle programýn baþladýðý görüyoruz. BY Ahmet Tolga Tat
Sayfa 15
m
Beºinci satýrda Java Interpreter’ýnýn çalýþtýracaðý ilk ve ana metodu görüyoruz. Diðer dillerde olduðu gibi burda da main fonksiyonuna bir dizi karakterler atanacaktýr. Bu örnekte komut satýrýndan argüman beklemiyoruz ama eðer; Java MerhabaDunya arg1 arg2 gibi komut yazýp ana fonksiyona arg1 arg2 gibi karakterler gönderseydik bunlar string (karakterler) dizisi olarak tanýmlanmýþ olan arg deðiþkenine atanacaklardý.
herkes tarafýndan eriþebileceðimiz belirtilir.
i.c o
Public, main fonksiyonunun dýþ kullanýcýlara açýk olduðu ve buna Java InterPreter’ý da dahil Static, main metodunun sadece bu uygulamaya ait olduðu ve bu uygulama nesneye yönelik tarzda baþka bir uygulamaya çaðrýldýðýnda deðiþtirilemeyeceðini gösterir. Hafýzada ne kadar kullanýlýrsa kullanýlsýn hep tek kopya tutar.
Void, main metodun ekrana basma iþlemi dýþýnda hiçbir sonuç geri döndürmediðini gösterir. Sondaki küme paranteziyle main metodunu baþlatmýþ bulunuyoruz.
dil
System.out.println satiri ani zamanda System.out class’indeki yani sýnýfýndaki bir metodun yani println’in nasýl kullanýldýðýný gösterir. „Merheba Dunya“ yazýsýný standart çýkýþa yani ekrana yazdýrýr. Sondan bir önceki parantez main metodunu ve en sondakide class Merhaba Dunya yani programý kapatýr. Uygulamamýzý sýradan bir text editörle yapabiliriz. Önemli olan yazdýktan sonra onu MerhabaDunya.java olarak kaydetmemizdir.
va
ªimdi javac komutuyla kaynak kodumuzu derleyebiliriz.
javac MerhebaDunya.java
ww w. ja
Eðer bu iþlem hiçbir sonuç vermezse demek ki her þey sorunsuz ve de artýk ayný dizinde MerhabaDunya.class isimli bytecode dosyanýz bulunmaktadýr. Çok genel iki sorun çýkabilir. Javac komutunu yani dosyasýný bulamayabilir ki bu PATH sorunudur. Veya en basit API’leri yani classlarý bulamadýðýný bildirir, bu da CLASSPATH sorunudur.
Uygulamamýzý çalýþtýrmak için komut satýrýna java komutuyla emir vermemiz yeterlidir.
java MerhebaDunya
BY Ahmet Tolga Tat
Sayfa 16
Ýlk Java Appleti
va
dil
i.c o
m
Bu komutta ekrana; Merhaba Dunya karakter dizisini yazdýracaktýr.
ww w. ja
Þimdiyse bir Web sayfasý üzerinde çalýþabilecek bir Java programý yani bir Applet yaza lým. Aþaðýda örnek appletimizi görüyorsunuz. /***********Merheba Dunya
Java Applet’i***************************/
import java.awt.Graphics;
import java.applet.Applet;
public class MerhebaDunya extends Applet {
public void paint (Graphics g) {
g.drawString ("Merheba Dunya!",30,50); }
}
Birinci satirda program icin aciklama yaziyoruz. BY Ahmet Tolga Tat
Sayfa 17
m
Sonraki iki satýrdaki import komutu sizin class’ýnýzda dýþarýdan kullanýlan class’larý mesela hazýr olan bazý API’leri almak veya çaðýrmak için kullanýlýr. Örneðin import edilen java.awt.Graphics class’ý çizim amaçlý kullanýlan bir sýnýftýr. Ve applet’imizle tarayýcý ekranýna yazý yazdýrmak için onu import edip daha sonra onun bir metodunu kullanýyoruz.
javac
dil
i.c o
Yine ayný þekilde yeni bir applet yaratýrken onun bir çok özelliðini daha doðrusu applet tarzýný zaten hazýr olan applet class’ýndan alýyoruz. Önce ondan türememiz için onu import ediyoruz. (import java.applet.Applet) Daha sonra da kendi class’ýmýz olan MerhabaDunya’ý extends komutuyla applet olarak türetiyoruz. Burada küme paranteziyle applet’in kendisi baþlýyor. Dokuzuncu satýrda applet’in hazýr bir fonksiyonu olan paint metoduna rastlýyoruz. Bu metod ekran çýktýsýyla ilgili olan ve az önce import ettiðimiz Graphics sýnýfýnda kullanýlan ve de üye diye tabir ettiðimiz yani extends ettiðimiz (türediðimiz) applet classýna ait olan temel bir metottur. Metot açýlýrken yazým olayýný azaltmak için Graphics g olarak tanýmlanýyor.Graphics sýnýfýna ait drawString adlý metotla ekrana „MerhebaDunya!“ yazdýrýyoruz. Önce paint metodunu daha da sonra applet’in kendisini parantezlerle kapatýyoruz. Uygulamamýzý bir text editörle yazdýktan sonra týpký uygulamalarda olduðu gibi onu java uzantýlý ve class’ta tanýmlanan isimle kaydediyoruz. Burada örneðimizi MerhebaDunya.java olarak kayýt edelim. Kayýt iþleminden sonra yine ayný þekilde kaynak kodumuzu derliyoruz.
MerhebaDunya.java
ww w. ja
va
Fakat þimdi onu java komutu ile çalýþtýramayýz çünkü o bir uygulama deðil. Bu applet’imizi test için örnek bir web sayfasý yani HTML kodu üretmemiz lazým. HTML dilinde, ya zdigimiz Java Appletini sayfaya çaðýrmak için komutunu kullanýrýz. Aþaðýda örnek web sayfamýzý görebiliriz.
Merheba Dünya Applet‘i
ilk java appletim
Yine standart bir text editörle(NotePad gibi) yazdýðýmýz bu dosyayý test.html olarak kayýt edelim. Java destekleyen herhangi bir tarayýcý ile lokal olarak bu sayfayý açtýðýmýzda applet’imizin sayfada çalýþtýðýný göreceksiniz. komutunda burada kullandýðýmýz „code“ parametresi BY Ahmet Tolga Tat
Sayfa 18
m
çaðrýlacak Java Applet class’ýnýn adýný, width sayfadaki geniþliðini, height ise sayfadaki yüksekliðini verir. Yine JDK’nýn bir aracý olan Appletviewer da applet imizi incelemek için kullanýlabilir. Komut satýrýndan
i.c o
appletviewer test.html
Komutu verildiðinde Appletviewer yukarida gördüðünüz gibi çalýþýp web sayfanýzýn içindeki sadece ama sadece applet’i gösterecektir. Örnek: //Asagidaki java Appleti oval seklinde "canim Türkiyem" yazar import java.awt.*; import java.applet.*;
dil
public class ovalyazi extends Applet {
static final String message="Canim Türkiyem!"; private Font font;
va
public void init() { font=new Font("Impact",Font.BOLD,48); } public void paint(Graphics g) { g.setColor(Color.white);
ww w. ja
g.fillOval(10,10,300,100); g.setColor(Color.blue); g.drawOval(10,10,330,100); g.drawOval(9,9,332,102); g.drawOval(8,8,334,104); g.drawOval(7,7,336,106);
//Text kismi g.setColor(Color.blue); g.setFont(font); g.drawString(message,40,75); } }
BY Ahmet Tolga Tat
Sayfa 19
m
Cikti islemleri(Input)
i.c o
Java’da girdi ve Cikti islemleri(I/O) System.out akisina print ve println islevlerini kullanarak cikti gönderebiliriz.
dil
Örnegin; System.out.println(“Canim Türkiyem“); Yazarsak bilgisayarin ekranindan veya konsoldan Canim Türkiyemciktisini aliriz. görürüz.Eger ciktimizi ekrana yazdirdiktan sonra bir sonraki cikti icin alt satira gecmesini istemezsek print islevini kullaniriz. Örnegin; System.out.print“canim „); System.out.print(„Türkiyem“);
va
Yazisini ekrana ayni satirda Canim türkiyem olarak yazar. Cikit islemlerinin paremetleri yalnizca tek bir dizigi oldugu gibi ,bir deyimde olabilir.eger deyimin sonuncunun türü string degile,ikti islevi cagrilmadan sonuc stringe cevrilir.
ww w. ja
Örnegin; system.out.print.ln(3); Komutu bir tamsayi olan 3 sayisini ilk önce bir dizgiye cevirir ve ekrana bu dizgi yazar.Ekranda 3 sayisini görürsünüz.Bazen bir cikti paremetresi asagidaki gibi olabilir. System.out.println(„Bu sayi dörttür:“+4); Bu komut 4 tamsayisini bir dizigiye cevirdikten sonra + birlestirme islemcisikullanarak,bu dizgiyi komuttaki dizgi ile birlestirir ve sunucu ekrana Bu sayi dörttür:4 yazar.
Girdi islemleri(Output)
Klavyeden bilgi girmek için BufferReader sinifi kullanilir.. BufferReader girdi=new BufferReader( new InputStreamReader(System.in));
Bu sinifin readLine() metodunu kullanarak bilgiyi aliyoruz : try { String giris=girdi.readLine(); } catch (IOException e ) { System.out.println(e); } try-catch blogu olasi bir hatayi yakalamak için kullaniliyor. Eger bir hata olusursa hatayi ekrana yazacak. BY Ahmet Tolga Tat
Sayfa 20
m
Java programlama dilinde girdi islemleri biraz karisik bir konudur.Java’da klavyeden basit bir sekilde girdi alacak islevler yoktur. Asagidaki iki örnekte verilmis topla ve text programlari derlenip topla.class calistirildiginda islemi yapabilirsiniz. Örnek:
i.c o
import java.io.* ; import Text;
va
dil
class topla { public static void main (String args[]) throws IOException { int sayi1,sayi2; int toplam=0; // Text m=new Text(); System.out.println("Bir tamsayi giriniz: "); sayi1=m.readInt(); System.out.println("Bir tamsayi daha giriniz"); sayi2=m.readInt(); toplam=sayi1+sayi2; System.out.println("Toplam "+toplam); } }
import java.io.*; class Text {
ww w. ja
static boolean iseof = false; static char c; static int i; static double d; static String s; static BufferedReader input = new BufferedReader ( new InputStreamReader(System.in)); public int readInt () { if (iseof) return 0; System.out.flush(); try { s = input.readLine(); } catch (IOException e) { System.exit(-1); } if (s==null) { iseof=true; return 0; }
BY Ahmet Tolga Tat
Sayfa 21
i = new Integer(s.trim()).intValue(); return i; }
i.c o
m
}
Java’nin temel yapisi
• Yorumlar
dil
Java’nýn genel yapýsýnýn ilk etapta C veya C++’a çok benzediði fark edeceksiniz, ama zaten herhangi bir dilde programlama tecrübesi olanlara tüm yapýlar tanýdýk gelecektir. Genel olarak dikkat edilmesi gereken hususlardan en önemlisi Java büyük küçük harfe duyarlý bir dil olduðudur.
va
Üç deðiþik þekilde yorumlar koyabiliriz. // tek satýrda yorum /* tek veya daha fazla satýrda yorum*/ /** dokümantasyon yorumu */
Dokümantasyon yorumlarý bir deðiþken veya fonksiyon tanýmýndan hemen önce yerleºtirilmelidir; çünkü Javadoc yani otomatik doküman yaratýcý bu cümleleri hemen altta tanýmlanan unsurun tanýmý olarak alacaktýr.
• Komutlar
ww w. ja
Bunlar Java programýndaki en küçük çalýþtýrýlan komut parçalarýdýr, he rþey olabilirler ve noktalý virgülle ( ; ) biterler. Int x; X= 5*100;
• Ýfadeler
Ýfadelerden kasýt tüm deðiþkenlere, sýnýflara, fonksiyonlara ve nesnelere verilen isimlerdir. Java dilinde bir ifade bir harfle, alt tireyle ( _ ) veya dolarla ( $ ) baºlayabilir. Devam eden karakterler rakam olabilir. Deðiþkenler tüm dilde de olduðu gibi büyük küçük harfe duyarlýdýrlar ve maksimum bir uzunluklarý yoktur. Geçerli ifadeler •
araba12
•
yas-toplamý
•
Yas-Toplamý
•
_toplam
• $maaº BY Ahmet Tolga Tat
Sayfa 22
if
package
do double else extends false final finally float for
implements import instanceof int interface long native new null
private protected public return short static super switch synchronized
this
throw throws transient True Try Void While
i.c o
default
ww w. ja
va
dil
{PRIVATE}abstr act Boolean Break byte case catch char class const continue
m
Ve tabii ki Java diline ayrýlmýþ kelimeler ifade görevi alamazlar mesela bir deðiþken adý olamazlar. Bunlarýn listesi aþaðýdadýr.
BY Ahmet Tolga Tat
Sayfa 23
m
Degiskenler ve Türler § § § §
i.c o
Javada temel beþ tip deðiþken vardýr. Ayrýca deðiþkenler bir class veya dizide olabilirler. Tamsayilar:byte,short,int ve long tam degerli sayilrdir. Virgüllü sayilar: float ve double virgüllü sayilardir. Karekterler:char sembolleri harfleri karakterlerle gösterir. Boolean degerler: boolean mantiksal degerleri gösteren özel türler.
dil
Tamsayilar
Tam sayý deðiþkenlerdir ve kendi içinde dört gruba ayrýlýr.
byte
8 bitlik yer kaplar.-128 den 127 araliginda deger alabilir.
va
short
16 bitlik yer kaplar.-32768 ve 32767 araliginda deger alabilir.
int
32 bitlik yer kaplar. –2.147.483.648 ve 2,147,483,647 araliginda deger alabilir.
long
ww w. ja
64 bitlik yer kaplar.cok büyük bir aragliga sahiptir. {PRIVATE}Tip boolean char byte short int
Bit Büyüklüðü 1 16 8 16 32
long
64
float
32
BY Ahmet Tolga Tat
Deðerler
true veya false ‘\u0000’ dan ‘\uFFFF’ -128 dan +127 -32,768 dan +32,767 -2,147,483,648 dan +2,147,483,647 9,223,372,036,854,775,8 08 dan +9,223,372,036,854,775 ,807 -3,40292347E+38 dan +3,40292347E+38
Sayfa 24
m
i.c o
Örnek: class ornek7 { public static void main(String args[]) { byte a=10*2; short b=50*20; int c=50000; long d=100*100; System.out.println("byte'in degeri="+ a); System.out.println("short'un(don’un) degeri="+ b); System.out.println("int'in degeri="+ c); System.out.println("long'un degeri="+ d); }
dil
}
Karakterler(Characters)
ww w. ja
va
„char“ kelimesini bir karakter tanýmlamak için kullanýrýz. Karakter tek týrnak içine alýnmalýdýr. Bir char‘in araligi 0 ile 65536 arasindadir.Char türü isaretsiz 16 bitten olusur.Iki karekteri birlikte toplayabilirsiniz veya degiskenin degerini artirabilirsiniz. char a; char a1=‘a‘; char a2=‘\n‘;
class ornek4 { public static void main(String args[]) { char c='a'; System.out.println("char c="+ c); } }
Virgüllü sayilar(floating points) float
32 bitlik yer kaplar.Tam sonuc istendiginde kullanilir.
Double
64 bitlik yer kaplar.Tüm Trigonometrik degerlerin hesaplanmasinda double degeri kullanilir. BY Ahmet Tolga Tat Sayfa 25
m
i.c o
class ornek8 { public static void main(String args[]) { float f=3.1444444f; double b=3.488888888888888; System.out.println("float'in degeri="+ f); System.out.println("double'in degeri="+b); } }
dil
Mantiksal degerler(booleans)
Örnek: boolean a=true;
va
Boolean kosullu isletmenler (if,else,while ve do)tarafindan gereksinim duyulurlar.Mantýksal ifadeler iki tip deðer alabilir. true veya false
ww w. ja
Örnek: class ornek5 { public static void main(String args[]) { boolean a=true; System.out.println("boolean a="+ a); } }
Strings islemleri
Karakter dizilerini String kelimesi ile tanýmlarýz. „Ben bir stringim“ Stringdir.“Re Re Re Ra Ra Ra Galatasaray Galatasaray Cim Bom Bom „ bir Stringdir.“Fenerbahze Köyhizmetleri Fitbol idman culübü“ bir Stringdir.String agzindan cikan kelimelerdir. Java Stringleri String sinifindan turetilmis objeler olarak implemente eder.Stringlerin nesne olarak yapisinda tutulup islenmesi Java‘ya ustun özellikler saglar.Örnegin iki String’in BY Ahmet Tolga Tat
Sayfa 26
m
karsilastirilmasi,String icersinden bir supstring’in cikarilmasi,büyük kücük harf cevrimi,iki sitringin birlestirilmesi gibi islemler kolayca gerceklestirilir. „Ben bir stringim“ Stringdir.“Re Re Re Ra Ra Ra Galatasaray Galatasaray Cim Bom Bom „ bir Stringdir.“Fenerbahze Köyhizmetleri Fitbol idman culübü“ bir Stringdir.String agzindan cikan kelimelerdir.
String Fonksiyonlari:
}
va
}
dil
Stiring Uzunlugu: Int Length() Örnek: class deneme { public static void main(String args[]) { char uzun[]={'a','b','c'}; String s=new String(uzun); System.out.println(s.length( ));
i.c o
String s=new String() Bu ifade icinde karakter olmayan bir „s“ String#i olusturur. String(char chars[])Bir Array’i karaketer elemanlarini baslangic deger olarak alan bir String olusturabiliriz.
String Literalleri Asagidaki s1 ve s2 esit Stringlerdir.
ww w. ja
class deneme1 { public static void main(String args[]) { char uzun[]={'a','b','c'}; String s1=new String(uzun); String s2="klm"; System.out.println("klm".length()); } }
Stringleri Birlestirme:
class gleich { public static void main(String args[]) { String slte="20"; String a="Ich bin " + 20 + " Jahre alt"; System.out.println(a); }
BY Ahmet Tolga Tat
Sayfa 27
}
m
class solang { public static void main(String args[]) {
i.c o
String solang="Heyy baby "+"when I see you"+"my heart is jumping"+"uuuOOo Yeeeehhhh" +"this is a story " + "about me "+"hheheheh"; System.out.println(solang); } }
Stringlerin diger tipler ile birlestirilmesi
dil
String s = "dort:" + 2 +2; System.out.println(s); // " dort: 22 " String s = "dort:" +( 2 +2 ); System.out.println(s); // " dort: 4 "
Karakter Cikaran Fonksiyonlar
va
CharAt( ) Char charAt( int where ) String icinde konumu belirtilen karakteri cikarir Char ch ; Ch = "abc".charAt( 1 ); // "b" degerini ch degiskenine atar.
ww w. ja
Getchars( ) Void getchars( int source start, int source end, char target[ ] , int target start ) Stringten verilen iki konum degeri arasinda bulunan substringi cikartir.
Örnek: Class getcharornek {
public static void main( ) {
String s = "Bu gettchar fonksiyonuna ait bir ornektir."; int start=14; int end=27;
Char buf[ ] = new char[end - start ]; s.getchars(start, end, buf, 0 ); System.out.println(buf); }}
BY Ahmet Tolga Tat
Sayfa 28
Stringlerin arastirilmasi
m
Indexof( ) karakter veya substring'in string icinde gecen ilk konumunu verir. Lastindexof( ) karakter veya substring'in string icinde gecen son konumunu verir.
i.c o
Arastirilmaya nereden hangi konumdan baslanacagi bilgisi su form ile verilebilir. Int indexof( string s, int baslangic_indeksi ) Int lastindexof( string s, int baslangic_indeksi ) Örnek: class indexbak{ public static void main( ) {
String s = "Korkma! Sonmez bu safaklarda yuzen al sancak " +
dil
"Sonmeden yurdumun ustunde tuten en son ocak.";
System.out.println(s); System.out.println( "indexof(S) = " + s.indexof('S') );
System.out.println( "lastindexof(S) = " + s.lastindexof('S') );
va
System.out.println( "indexof(ak) = " + s.indexof("ak") );
System.out.println( "lastindexof(ak) = " + s.lastindexof("ak") ); System.out.println( "indexof(s,10) = " + s.indexof('s',10) );
ww w. ja
System.out.println( "lastindexof(s,60) = " + s.lastindexof('s',60) ); System.out.println( "indexof(ak,10) = " + s.indexof("ak",10) ); System.out.println( "lastindexof(ak,60) = " + s.lastindexof("ak",60) ); } }
String Manipulasyonu Concat( ) String concat( string s ) Iki stringi birlestirir. String s1 = "bir"; String s2 = s1.concat( "iki" ); // "biriki" stringini s2 degiskenine atar. Replase( ) string replase( char original, char replacement ) Stringteki bir karakteri baska bir karakter ile yerdegistirir. BY Ahmet Tolga Tat
Sayfa 29
m
String s = "bakla".replace( 'b' , ' t ' ); // "takla"stringini s' e atar.
i.c o
valueof( ) fonksiyonu ile veri tipinin degistirilmesi valueof( ) metodu veriyi kendi formundan okunabilir bir forma donusturur. Static string valueof( double num ) Static string valueof( long num ) Static string valueof( object ob ) Static string valueof( char char[ ] )
String icindeki karakterlerin büyük / kücük harf cevrimi String toLowerCase( ) string icindeki buyuk hafleri kucuk harfe cevirir. String toLowerCase( ) string icindeki kucuk hafleri buyuk harfe cevirir.
va
dil
Örnek: class degis { public static void main(){ String s="Test edelim!"; System.out.println("bak:"+s); String upper=s.toUpperCase(); String upper=s.LowerCase(); System.out.println("UpperCase:"+upper); System.out.println("LowerCase:"+lower); } }
ww w. ja
StringBuffer Nesnesi
StringBuffer stringlere daha fonksiyonel islevler kazandiran string sinifidir. StringBuffer genisleyebilir ve yazilabilir karakter dizileri olusturabilmeyi saglar. StringBuffer Yapici Fonksiyonlari StringBuffer( ) StringBuffer(int size ) StringBuffer(string s )
Örnek: class sitbuf{ public static void main( ) {
Stringbuffer sb =new stringbuffer( "Hello"); BY Ahmet Tolga Tat
Sayfa 30
System.out.println(" Buffer = " + sb );
m
System.out.println(" Length = " + sb.length( ) ); System.out.println(" capacity " + sb.capacity( ) );
i.c o
}}
EnsureCapacity ( ) StringBuffer constructer ile olusturulduktan sonra sting icin yer allocate etmek icin kullanilir. Void ensureCapacity(int capacity) //capacity buffer'in genisligini ifade eder. Setlength( ) StringBuffer icindeki stringin uzunlugunu belirler. Void setlength(int len) //len buffer'in uzunlugunu ifade eder.
dil
GetChars( ) StringBuffer icinden bir substring cekerek array'e aktarir. Void GetChar(int sourceStart,int sourceEnd, char target[ ], int targetStart)
va
Append( ) StringBuffer Append(string s) StringBuffer Append(int num) StringBuffer Append(Object obj) Append( ) metodu diger tipteki datalar ile StringBuffer' daki stringin birlestirilmesini saglar.
ww w. ja
Insert( ) StringBuffer insert(int index, string s) StringBuffer insert(int index, char ch) StringBuffer insert(int index, object obj) Bir stringin digeri icine insert edilmesini saglar.
Reverse( ) Reverse metodu kullanilarak StringBuffer icindeki stringin sahip oldugu karakterlerin sirasi ters cevrilebilir. StringBuffer reverse( )
Deðiþ kenlerin Ýlk Deðerleri Java da hiçbir deðiþken veya nesne referansý deðersiz baþlamaz. Hepsi tanýmladýklarý anda aþaðýdaki deðerleri alýrlar. byte 0 short 0 int 0 BY Ahmet Tolga Tat
Sayfa 31
m
0l 0.0f 0.0d ‘\u0000’ false null
i.c o
long float double char boolean Tüm Referanslar
Tanýmlama ve Deðer atama
va
Diziler(Arrays)
dil
int x,y; // tam sayý tanýmlama float z=5.12; // float tanýmlama ve deðer atama boolean tamam =true; // boolean tanýmlama ve deðer atama char c; // karakter tanýmlama String str1; // string tanýmlama String str2= „Lay Lay“; // string tanýmlama ve deðer atama c=’b’; // char deðiþkenine deðer atma str1=“Uzaylýyýz“; // String deðer atama x=6; // int deðiþkenine deðer atama y=2000; // int deðiþkenine deðer atama
Benzer tür degiskenlerin olusturdugu bir grublara dizi denir:Dizilerin Java da önemli bir yeri vardir
ww w. ja
Her tipin dizisi tanýmlanabilir. char s[ ]; int x[ ]; int tablo [ ] [ ];
Dizi Yapma Java’da tüm diziler esasýnda birer nesnedir. Bu yüzden tanýmlandýktan sonra uzunluklarý verilerek yaratýlmalýdýr. (New yani nesne yapma komutu kullanýlarak) int tablo [ ] [ ]= new int [4] [5]; veya int tablo [ ] [ ]; tablo=new int[4] [5]; Aþaðýdakiler dizi yapma hatalarýdýr. Derleme sýrasýnda derleyici hata verecektir. Hata 1 int liste [40]; // taným sýrasýnda statik bir // dizi yaratmayýnýz. Hata 2 int liste [ ] ; // büyüklüðü belirtmeden liste [2]= 23; // bir diziye deðer atamayýz. BY Ahmet Tolga Tat
Sayfa 32
m
Not:Dizilerin uzunluklarýný length metoduyla alabilirsiniz. int a [ ] [ ] = new int [8] [2]; a.length // deðeri 8 dur a [0].length // deðeri 2 tür.
ww w. ja
va
dil
i.c o
Bazen taným sýrasýnda deðer vererek de dizi uzunluðu tespit edebiliriz. String meyveler [ ]= {„çilek“,“kivi“,“kiraz“}; Esasýnda aþaðýdakinin aynýsýdýr. String meyveler [ ]; Meyveler = new string [3]; Meyveler [0]=“çilek“; Meyveler [1]=“kivi“; Meyveler [2]=“kiraz“;
BY Ahmet Tolga Tat
Sayfa 33
m
Java’da operatörler Aritmetik Operatörü + * / %
Matematiksel Ýfadesi f+7 p-c bm x/y r mod s
Java Ýfadesi f+7 p–c b*m x/y r%s
dil
Java Operasyonu Toplama Çýkarma Çarpma Bölme Mod Alma
i.c o
Java da 5 Temel operatörler (islemciler) vardýr.
Artýrma ve Eksiltme
Örnek Ýfade ++a a++ --b b--
Tanýmý a yý 1 arttýrýp iþlemde öyle kullan a yý iþlemde kullan sonra 1 arttýr b yý 1 azaltýp iþlemde öyle kullan b yý iþlemde kullan sonra 1 azalt
va
Tanýmý Önce Arttýr Sonra Arttýr Önce Azalt Sonra Azalt
ww w. ja
Operatör ++ ++ ---
Karþýlaþ týrmalar Standart Matematiksel Eþitlik ve Kýyaslama Operatörleri Eºitlik Operatörleri = Kýyaslama Operatörleri > <
BY Ahmet Tolga Tat
Java Eºitlik Kýyaslama Operatörleri
ve Örnek Java Durumu
Java Durumunun Açýklamasý
== !=
x == y x != y
x eºittir y x eþit deðildir y
> < >= y x= y x = == != ?: = += -= /= %=
va
Operatör öncelik tablosu
Tip parantez Bir iºlem Çarpan Toplam Karþýlaþtýrma Eºitlik Durumsal Atama
Stringler + ile birleºir. System.out.println („Doktor “+isim) Ekranca „Doktor „ ve hemen yanýna ismin içeriðini basar.
Özel Karakterler
{PRIVATE}Öz Tanýmlarý el Karakterler \n Yeni Satýr Bir sonraki satýrýn baþýna geç \t Bir sonraki yatay Tab a geç BY Ahmet Tolga Tat
Sayfa 35
Bulunduðun satýrýn baþýna geç Backslash basmak için kullanýlýr Tek týrnak basmak için kullanýlýr Çift týrnak basmak için kullanýlýr
m
\r \\ \‘ \„
Bit Ýþlemleri XOR
Sola Kaydýr
Saða Kaydýr
Sýfýrla Saða Kaydýr
|
^
>
>>>
i.c o
OR
ww w. ja
va
dil
{PRIVA AND TE}NO T ~ &
BY Ahmet Tolga Tat
Sayfa 36
i.c o
m
Java’da kontrol yapilari
dil
Hayatta karþýlaþtýðýmýz tüm problemlerin çözümünde de olduðu gibi, bilgisayar programýný yazacaðýmýz bir problemini de önce en iyi þekilde idrak edip, sonra iyi tasarlanmýþ bir çözüm oluþturulmalýyýz. Tüm bilgisayar programla ma dillerinde olduðu gibi, iyi tasarlanmýþ bir çözüme ulaþmak için, önce o bilgisayar programýndaki kontrol yapýlarý en iyi þekilde çalýþýlýp, anlaþýlmalýdýr. Bu bölümde kontrol yapýsý mantýðý ve Java programlama dilinde bulunan kontrol yapýlarýna çalýþacaðýz.
ww w. ja
if (boolean) { Komutlar; } else { Komutlar; }
va
If,else kaliplari
Örnek int sayý ;
sayý = sayýAl () ; // programdaki bir metot if (sayý < 0) {
System.out.println („Hata: sayý deðeri negatif!“): }
else {
System.out.println („blabla „ +sayý+„ bla„) ; }
BY Ahmet Tolga Tat
Sayfa 37
m
Örnek:
va
Koºul kalibi
dil
i.c o
class eger { public static void main(String args[]) { int x; x=20; if(x0; i--){ System.out.print("J"); } System.out.print("\n"); for (int i= a-2; i>0; i--){ System.out.print("A"); for(int j=l-2; j>0; j--) { System.out.print(" "); } System.out.print("V\n"); } for (int i=l; i>0; i--){ System.out.print("A"); } System.out.print("\n"); } }
while döngüleri
While cok kullanilan tekrarlama yapilarindan biridir.( ) icindeki boolean terim true(dogru)oldugu sürece yeniden islemi döndürür.Eger programda boolean islemi sonuclandiracak bir ifade yoksa bu döngü sonsuza kadar devam edebilir.
while (boolean degisken) { Komutlar; }
BY Ahmet Tolga Tat
Sayfa 47
m
while(true) { System.out.println(„Bu döngü sonsuze gider“); } Yukaridaki program sonsuza kadar gider.
class whileornek { public static void main(String args[]) { int num=1; while(num java whileornek nummmer=2 nummmer=3 nummmer=4 nummmer=5 nummmer=6 nummmer=7 nummmer=8 nummmer=9 nummmer=10 nummmer=11
i.c o
//while örnegi import java.lang.*;
ww w. ja
do-while döngüleri
Komutlar; DO/WHÝLE döngü yapýsý ile WHÝLE döngü yapýsý birbirine çok benzer. Tek ve önemli fark, DO/WHÝLE yapýsýnda döngü en az bir kere tekrarlanýr. Bunun nedeni döngü kontrolünün döngünün sonunda yapýlmasýdýr. Ama WHÝ LE döngü yapýsýnda kontrol en baþta olduðu içi n, döngü hiç dönmeyebilir. Bu yüzden DO/WHÝLE yapýsý kullanýlýrken döngünün en az bir kere döneceði unutulmamalýdýr. Bu anlattýðýmýzý ufak bir örnekte inceleyelim. DO/WÝLE ile yazýlan program import java.awt.*; import java.applet.*;
public class dowhileornek02 extends Applet { BY Ahmet Tolga Tat
Sayfa 48
Ayný program WHÝLE ile yazýlýmý import java.awt.*; import java.applet.*;
dil
public class dowhileornek01 extends Applet {
i.c o
}
m
public void paint( Graphics g ) { int i=1; while(i!=1){ g.drawString("BEN WHÝLE ' IM",25,25); } }
va
public void paint( Graphics g ) { int i=1; do{ g.drawString("BEN DO/WHÝLE ' IM",25,25); }while(i!=1); } }
ww w. ja
Aþaðýdaki örnekte ise 5 tane öðrencinin notu dýþarýdan okunup bir dizine atýlýyor (dizinler ileriki bölümlerde açýklanacaktýr). Bu 5 öðrenc i notu aplet'e bir WHÝLE dömgüsü ile yazdýrýlýyor ve not ortalamasý bulunarak oda aplet'e yazdýrýlýyor.
Örnek:
import java.awt.*; import java.applet.*; public class whileornek extends Applet { int n[]; int c=0; int num; int y=25; int toplam=0; Label prompt1; TextField input1;
public void init(){
BY Ahmet Tolga Tat
Sayfa 49
}
i.c o
public void paint(Graphics g) {
m
prompt1= new Label("NOTLARI GÝRÝNÝZ"); input1= new TextField(5); add(prompt1); add(input1); n= new int[10];
if (c==5) {for (int i=1;i 1024) break; if(y < 1) break; x1 = (int)(x/1024.*300.); y1 = (int)(y/1024.*300.); g.drawLine(x0,y0,x1,y1); prevx = x; prevy = y; x0 = x1; y0 = y1; dis = dis + in; an = an + Al; } } }
BY Ahmet Tolga Tat
Sayfa 55
m
Üye degiskenlerinin tanimlanmasi Az olarak,bir üye degiskeni tanimi iki unsura sahiptir: veri degiskenin türü ve onun ismi. type variableName;
// minimal member variable declaration
class IntegerClass { int anInteger; . . .
dil
// Burda methodlari Tanimla
i.c o
Küçük degisken tanimi diger degisken tanimlari gibidir, bizim yazdigimiz diger Java programlarinda oldugundaki gibi örnegin yerel degiskenler veye method parametreleri gibi.Asagidaki örnek kodda görülgügü üzere dogal üye degiskeni Integer olarak isimlendirilmistir sinif IntegerClass ile birlikte.
. . . }
va
Burdan anlasilacagi gibi üye degiskbe tanimlamalari sinif yapisi içerisinde gösterilir. methodla birlikte gösterilmez.. Bu pozisyon sinif yapisi ile birlikte bulunur degisken üye degiskenidir. Üye degiskenlerinin ismi uygun bir java belirtgeçi veya ve anlasma küçük harf ile baslar (sinif isimleri genellikle büyük harf ile baslar.).Biz birden fazla üye degiskeni tanimlayamayiz ayni isim altinda ayni sinif yapisi içinde.Fakat Üye degiskenleri ve methodlar ayniisimde olababilirler.Örnegin Asagidaki kod hatasiz olarak çalisir.
ww w. ja
class IntegerClass { int anInteger;
int anInteger() { member variable
// a method with the same name as a
. . .
}
}
Kisaca tanim protosu asagidaki gibidir.: [accessSpecifier] [static] [final] [transient] [volatile] type variableName Üye degiskenleri tanimlari asagidaki gibi tanimlanir : •
Ulasim belirteci tanimlar hangi diger siniflar ulasabilir bu degiskene.Biz ulasimi kontrol edebiliriz ayni belirtgeçler, kullanarak.,bu yüzden ulasim kontrolu sinifin üye degiskenlerine kapsar bizim nasil bütün üye degiskenlerine ve methodlarina ulasacagimizi.
BY Ahmet Tolga Tat
Sayfa 56
•
static
•
final
•
transient
•
volatile
degiskenin sabit oldugunu gösterir.
m
içerir bu degisken bir siin degiskenidir aralik üye degikenin tam tersi gibi. Biz sinif methodlarini static to anahtar kelimesiylede tanimlayabiliriz.
degiskeneleri nesne durum kisminin parçasi degildir.
i.c o
tanimlanir zamana bagli olmayarak.
Bir sinif icinde tanimlanan degiskenler ulasilma tekniklerine gore ve ozelliklerine gore bir cok kisma ayrilir.
Static :
Bu tip degiskene sinif degiskeni de denir. Olusturulan butun nesnelerin icin bir kopya vardir ve degisiklige ugradigi zaman hepsi icin ayni degisiklik soz konusudur.
Sabitler :
Final anahtar sozcuguyle belirtilirler. Program calisma esnasinda kesinlikle degistirilmelerine izin verilmez.
// prompt user to input // input values here // store input value
va
Label prompt; TextField input; String adsoy,args;
dil
Örnek: import java.awt.* ; import java.applet.* ; public class selamla extends Applet{
ww w. ja
selam greeter1 = new selam(); public void init() { prompt = new Label( "Enter your name and press Enter:" ); input = new TextField( 10 ); add( prompt ); // put prompt on applet add( input ); // put input on applet } public void paint(Graphics d) { greeter1.setYourName(adsoy); greeter1.sayHello(d);
} public boolean action( Event e, Object o ) { adsoy = input.getText(); input.setText( "" ); // clear data entry field repaint(); return true; } BY Ahmet Tolga Tat
Sayfa 57
Method Tanimlanmalari
m
}
i.c o
Bir method tanimi derleme esnasinda bir çok bilgiler tedarik eder ve çalisma sirasinda ve diger nesne ve siniflar hakkinda da bir çok bilgiyi alabiliriz.Bunun yanisira, methodun ismi ve tanimlanmasibilgi tasi örnegin, methodun ve kaç tane parametre döndürülmesi gerektigi method tarafindan ve ayni zamanda diger siniflarin ve nesnelerin çagrilacagini belirtir. class Stack { . . .
dil
boolean isEmpty() { . . . } }
va
Method’tan Deger Döndürmek
Javanin dönecek degerinin tipinin belirtilmesine ihtiyaci vardir.Eger bir method herhangi bir deger döndürmüyorsa, o void anahtar söcügü ile tanimlanmalidir.. class Stack {
ww w. ja
static final int STACK_EMPTY = -1; Object[] stackelements;
int topelement = STACK_EMPTY; . . .
boolean isEmpty() {
if (topelement == STACK_EMPTY) return true;
else
return false;
}
}
Fakat, pop() methodu referans bir veri tipi döndürüyorsa buna nesne denir.. class Stack {
BY Ahmet Tolga Tat
Sayfa 58
static final int STACK_EMPTY = -1;
int topelement = STACK_EMPTY; . . .
i.c o
Object pop() {
m
Object[] stackelements;
if (topelement == STACK_EMPTY) return null; else {
return stackelements[topelement--]; }
dil
} }
Methodlar return anahtar sözcügünü kullanilirlar .ve herhangi bir method return yapisi tasiyorsa void ile tanimlanmamalidir. .
va
Methodun Ismi
Bir method ismi herhangi bir Java tanimlayicisi olabilir. There are three special cases to consider in regards to Java method names: class DataRenderer {
void draw(String s) {
ww w. ja
. . .
}
void draw(int i) { . . .
}
void draw(float f) { . . .
}
}
Note: The information within the parenthesis in the method declaration are arguments to the method.
1.Herhangi bir method sinif ismi ile ayni ise bu metoda biz baslandirici BY Ahmet Tolga Tat
Sayfa 59
m
diyoruz.Bu metodun özel bir görevi vardir.Baslandiricilar sinif tarafindan üretilen nesnenin baslangiç degerleri verilmesi için kullanilir. Constructors sadece Java new operatorü ile çagrilirlar. Bir sinif methodu yeniden yazabilir supersinif da tanimlanmis bir methodu. Tekrar ile yüklenecek method atni isimden olmak zorundadir.
i.c o
Bunlarin yaninda method tanimlanmasinda iki elemana ihtiyaç duyar.Bir methos tanimlamasi baska elemanlarida içerir.Bütün bu elemanlar method tarafindan kabul edilen argumanlari açiklarlar. Asagidaki yapida methodun tanimlanmsi açiklanmistir.
Örnek: import java.awt.* ; import java.applet.* ; public class numara extends Applet{
// prompt user to input // input values here // store input value
va
Label prompt; TextField input; int num,ypos; Graphics d;
dil
[accessSpecifier] [static] [abstract] [final] [native] [synchronized] returnType methodName ([paramlist]) [throws exceptionsList] Method tanimlamalari normal bilinen yapisal programlamaya cok benzer. Methodlarda eger bir degisken dondurulmek isteniyorsa o degiskenin degerine uygun method tanimlamasi yapilmalidir. Ornegin Eger bir dogrui yanlis gibi flag degerleri dondurulmek isteniyorsa Boolean anahtar sozcugu kullanilir. Eger hic bir sey dondurulmek isteniyorsa void tanimlamasi yapilir
ww w. ja
public void init() { prompt = new Label( "Enter your number and press Enter:"
);
input = new TextField( 10 ); add( prompt ); // put prompt on applet add( input ); // put input on applet
}
public void swap1(Stupid a, Stupid b) { Stupid temp;
temp=a; a=b; b=temp; d.drawString("======= during swap1 ========",10,130); a.sayHello(d,145); b.sayHello(d,160); }
BY Ahmet Tolga Tat
Sayfa 60
m
i.c o
public void swap2(Stupid a, Stupid b) { int temp=a.getNum(); a.changeNum(b.getNum()); b.changeNum(temp); d.drawString("======= during swap2 ========",10,230); a.sayHello(d,245); b.sayHello(d,260); }
va
dil
public void paint(Graphics g) { Stupid One=new Stupid(num); Stupid Two=new Stupid(2); g.drawString("======= before swap ========",10,80); One.sayHello(g,95); Two.sayHello(g,110); swap1(One,Two); g.drawString("======= after swap1 ========",10,180); One.sayHello(g,195); Two.sayHello(g,210); swap2(One,Two); g.drawString("======= after swap2 ========",10,280); One.sayHello(g,295); Two.sayHello(g,310); }
ww w. ja
public boolean action( Event e, Object o ) { num = Integer.parseInt (input.getText()); input.setText( "" ); // clear data entry field repaint(); return true; } }
import java.awt.*; // import the Java.awt package import java.applet.*; // import Applet class class Stupid { int myNum; Stupid(int n) { myNum = n; } public void sayHello(Graphics g,int yp) { g.drawString("Numaram : "+ myNum,10,yp); } BY Ahmet Tolga Tat
Sayfa 61
m
public void changeNum(int n) { myNum=n; } public int getNum() { return myNum; }
i.c o
}
Sinif kurucusu
dil
Bütün Java siniflari özel bazi methodlara sahiptirler bunlara kurucu denir ve siniflardan olusturulan yeni nesnelere baslangiç degerleri vermek için kullanilir.Kurucular sinif ile yani ismi tasimak zorundadir.Mesela Rectangle sinifinin kurucusunun ismi da Rectangle olmak zorundadir. Java method isminin yeniden yüklenmesini destekler ve bu yüzden bir sinif birden fazla kurucusu olabilir ayni isimda olan. Diger tekrar yüklenen methodlar gibi kurucular birbirlerinden farkli olmak zorundadir tipinin farkli olmasi veya parametre sayilarin farkli olmasi gibi Örnek olarak Rectangle sinifin java.awt paketinde bulunan çok farkli kurucular tedarik edebilir hepsi Rectangle(),isminde fakat herbir farkli sayida elemanlar veya farkli tipte bulunan elemanlar ile birlikte kurucular olusturulabilinir.:
va
public Rectangle()
public Rectangle(int width, int height)
public Rectangle(int x, int y, int width, int height)
ww w. ja
public Rectangle(Dimension size) public Rectangle(Point location)
public Rectangle(Point location, Dimension size)
Birinci Rectangle kurucusu yeni Rectangle nesnesine baslangiç degerlerini atar, ikinci kurucu ise belirtilen width ve height ile yeni nesnesi olusturulur. üçüncü örnekte ise yeni dimension size ile nesne baslangiç degeri atanir. Genel olarak kurucular kendi elemanlarinin kullanilir yeni nesne durumunu atamak için kullanilir.Bu yüzden yeni bir nesne olusturmak bizim en iyi tepki verecek argümanlari seçmekte ve onla atama islerini yapilmasi için bir kurucu türü seçilebilinir. Bunun yaninda elemanlarin tip sayisi biz kurucu methoduna geçebiliriz. ve derleyici hangi kurucuyu kullanacagina karar verir. Sonuç olarak derleyici bizim yazdigimiz seyi bilir. new Rectangle(0, 0, 100, 200);
Eger integer bir argüman gerekiyorsa onunla belirtilen bir kurucu seçilmelidir.asgida yazildigi gibi. new Rectangle(myPointObj, myDimensionObj);
BY Ahmet Tolga Tat
Sayfa 62
m
Biz kendi sinifimizi yazdigimiz zaman, onun için bir kurucu olusturmamiza gerek yoktur. Önce belirli olan kurucu herhangi bir argüman almaz o tamamem otomatik olrak çalisma sirasi esnasinda meydana gelir bütün siniflar için. Fakat biz kendi sinifimiz için bir kurucu isteyebiliriz veya gerekli olabilir Bir kurucu thread in alt sinifi olan, thread bir animasyon gerçeklestirebilir. ve yeni degerler kurabilir. mesela çerçeve hizi, görüntü sayisi...yeni degerlerin yüklenmesi.
i.c o
class AnimationThread extends Thread { int framesPerSecond; int numImages; Image[] images;
dil
AnimationThread(int fps, int num) {
super("AnimationThread");
this.framesPerSecond = fps;
va
this.numImages = num;
this.images = new Image[numImages]; for (int i = 0; i right shift with sign extension Her bit bir tane saga kaydirilir. Saga isaret biti beslenir. >>> right shift with zero extension Her bir bir tane saga kaydirilir. Saga 0 beslenir ~ one's complement Bütün bitler tersine çevrilir. Yukaridaki islemler parametre yardimi ile 1 den fazla defa yaptirilabilir. Asagida bir sayinin bit açilimini gösteren bir örnek applet sunulmustur.
Örnek: PrintBits Örneði
import java.awt.*; import java.awt.event.*; import java.applet.Applet;
public class PrintBits extends Applet implements ActionListener { private TextField inp ut, output;
public void init() { add( new Label(" Bir integer sayi giriniz: ")); input= new TextField(10);
BY Ahmet Tolga Tat
Sayfa 106
m
input.addActionListener(this); add(input);
i.c o
add( new Label(" Sayinin bit'leri: ")); output= new TextField(35); output.setEditable( false ); add(output); } public void actionPerformed(ActionEvent e) { int val = Integer.parseInt(e.getActionCommand()); output.setText( getBits( val)); }
dil
public String getBits( int value) { int displayMask = 1