ww w. ja
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:
Java’yi taniyalim............................................................................................................................5 Java nedir? .....................................................................................................................................................................................5 Özellikler .......................................................................................................................................................................................5 Geliºtirme & Uygulama ..............................................................................................................................................................9 Java Virtual Machine (JVM)....................................................................................................................................................11 JDK Kurulumu ...........................................................................................................................................................................12
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
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
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
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
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
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
ww w. ja
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.
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
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.
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.
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.
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.
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
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.
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.
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.
Ýþ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
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.
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.
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
Hizlilik bakimindan bakildiginda Java en üstte yani en yavas olan dillerden bir tanesidir.
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.
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-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 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
þ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.
ww w. ja
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.
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
" 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.
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 .
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
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 (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.
• 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
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:
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
Bu pencerelerden AUTOEXEC.BAT yazýlý olaný seçin.
PATH ile baþlayan satýrý bulun. Bu satýrýn en sonuna
;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
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.
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.
ww w. ja
public static void main (String args [ ] ){ System.out.println („Merhaba Dunya“); }
Ý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
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.
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.
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.
ªimdi javac komutuyla kaynak kodumuzu derleyebiliriz.
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.
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
Birinci satirda program icin aciklama yaziyoruz. BY Ahmet Tolga Tat
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.
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.
ww w. ja
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