Java-ile-daginik-programlama (1)

download Java-ile-daginik-programlama (1)

of 31

Transcript of Java-ile-daginik-programlama (1)

  • 8/3/2019 Java-ile-daginik-programlama (1)

    1/31

    JAVA NEDR

    Java kelimesini son zamanlarda ok sk duyuyorsanz ve ne olduunu merak ediyorsanz bu sayfa tamsize gre. nk bu sayfada Java 'nn ne olduunu anlatyorum.Uzun bir cmle ileJAVA

    Sadece interneti deil tm bilgisayar dnyasn deiime uratacak SUN firmasnn gelitirdiiyeni platform bamsz programlama dili

    Hindistan'da bir ada Ana ihracat rn kahve olan Pazifik'te bir ada bu yzden USA'da kahve iin kullanlan argo

    kelime dir.6*2 madde ile JAVA1. Basit & Kk

    Java programlama dilinin renilmesinin kolay olduunu iddia eden Sun'daki gelitiricilere,yeni programlamaya balayanlarn inanmas biraz g olacaktr.

    Programlamay bilen kiiler iin (zelliklede C++) ok daha kolaydr. nk Java C++ 'a okbenzer.

    C++ 'da karmak olan baz eyler atlm, basit olanlar eklenmi

    Kk : Java ok kk ilemcilerde bile alabilir. Temel ihtiyac ( lemci, standart snflar ve"Thread"-destei ) 215 KB dr. (Sun 'n iddias )2. Nesneye ynelimli & Dank

    Nesneye ynelimli mi ? O da ne? Nesne ynelimli (Object Oriented) , insanlarn kavramadaok zorluk ektikleri bir kavram. Ama bu, iyi zelliklerinden dolay, yazlm gelitirmede kabulgrmesini engelleyemiyor.

    Adndan da anlald gibi, nesneye ynelimli programlamada insan nesne gelitirmeyekonsantre oluyor. Nesne, verilerden ( deikenler ) ve bu verileri deitirmeye yarayanfonksiyonlardan ( Method ) oluuyor. Nesneye ynelimli programlamada, sonradankullanlabilecek genel nesneler (Object) oluturulmas idealdir (Snflar). Profesyonelprogramlamada, devaml byyen havuzda bulunan nesnelere ulalarak, bu nesneler tekrarkullanlabilir (Snf ktphaneleri). Standart snf ktphaneleri (Giri/k, Grafik vb.)oluturulmutur. Bunlar programlarn iine katlrlar.

    Uzaktaki bir sistemde bulunan nesnelere Java programlar Internet zerinden kolaycaulaabilirler.Sun firmasnn vizyonu : Programlarn tamamnn lokal bilgisayarda bulunmamas,gerekli paracklarna ihtiya halinde internet zerinden eriilmesi. Sun firmasnn buvizyonunun gerek olup olmayacan greceiz...

    3. Yorumlaycl & Hzl Java programlar direkt ilemci tarafndan yorumlanmaz. zel bir program tarafndan

    yorumlanrlar (Yorumlayc = Interpreter ). Bunun avantaj ve dezavantajlar vardr : Program gelitirirken baz admlardan kurtulursunuz.

    rnein baz program paracklarna balant kurmaktan (Link). Dezavantaj ise tmdesteklemelere ramen, programn almasnn yava oluu.

    Sun firmas bir ara katman oluturdu. Java bir nyorumlayc tarafndan byte koduna(bytecode) evrilir. ok byk avantaj olan, baz kk deitirmelerde derleyemeye gerekkalmamas, bununla yok oluyor.

    Fakat bu "bytecode" makina diline ok yakndr. Bundan dolaydr ki ok hzl bir kodoluturulmu oluyor. Bu arada "Just-in-Time" Compiler lar "bytecode" u gerek makina kodunaeviriyorlar. Bylece hz 10 kat (hatta daha fazla) artyor.

    Sun firmasnn gelitirecei zel "Java ilemcileri" kapda. Bunlar Java programlar direktaltracaklar.

    4. Salam & Gvenilir Derleyici (Compiler) ve yorumlayc (Interpreter) kombinasyonun baka bir ynden avantajlar

    var. n derleyici tip (ve buna benzer) hatalar kontrol ederken, yorumlayc hatalar yakalar vegereini yapar. En kt ihtimalle, derlenmi bir program ker.

    Yorumlayc, yabanc verilere ulalmasn engeller. C++ 'taki bu zellik kaldrm. Gerekten Java gvenli bir programlama dili ( Hi bir ey %100 gvenli deildir. Gnmzde

    kredi kart katl yaplmasna ramen halen insanlar hal kredi kartlarn internet

    zerinden kullanyorlar. Niye Java %100 gvenilir olsun ki ....)

    1

  • 8/3/2019 Java-ile-daginik-programlama (1)

    2/31

    5. Platform bamsz & Tanabilir Burada program gelitiricilerinin bir ryas gerekleiyor:Herkes farkl ilemcilerde ve iletim

    sistemlerindeki problemi bilir. Birisinde alr dierinde almaz ve bu gelitiricilerinkabusudur ( Dnn ki 10 tane video sistemi var ). Derleyici burada devreye girer veprogram "bytecode" evirir. Bu kod tamamen platform bamszdr ve tm ilemcilerde alr

    Bir Java program, hibir deiiklik yaplmadan, desteklenen tm sistemlerde alr.

    Ayrca C++ 'da baz belirsizlik arz eden tanmlar temizlenmi. Bu tanmlar deiik sistem vederleyicilerde, deiik biimlerde kabul ediliyorlard. rnein C++ 'da hibir zaman birtamsaynn (integer) ka byte olduu bilinemiyordu. Java'da bir tamsay herzaman (Hangisistemde olursa olsun ) 4 Byte dr.

    6. Multithread & Dinamik Modern bir programda bir ok ilem ayn zamanda olur. Bu zellie "multithread" deniyor

    (Buna uygun bir trke kelime bulamadm). Java bu tr programlar gelitirenlere, zelfonksiyonlar sunuyor ki, gelitiriciler programn asl amacna konsantre olsunlar.

    Baz dzenlemelerden dolay Java, C++ 'dan daha dinamiktir. Snflar (Class) ve Nesneler(Object) arasndaki ilikiler kat bir kural ile bal deildirler. leriki safhalarda deitirilmesi okbasittir. ( Bu da yorumlayc sayesindedir)

    Java ile neler yaplr ?Tek kelime ileHerey

    Saysz madde ile Animasyonlar, kayan yazlar, web sayfalrnda chat, hesap makinesi, oyunlar, ifreleme

    programlar, interaktif web sayfalar, mzik, kelime ilemci, kk internet appletleri, kocamanpaket programlar, resim ileme programlar, tecme programlar, sipari sistemleri, saatler,yazm kontrol programlar... vb. (rnekler oaltlabilir)

    Gerekten Java bir programlama dili. Yukardaki tm zellikler kullanlrsa, Sun 'da hz olayn zerse ( ki

    zecek gibi gzkyor ) her program java ile yazmamak iin bir neden kalmyor. Tabii ki ncellikle internet ve WWW bundan nasibini ald. Birok web sayfasnda Java

    appletlerini grebilirsiniz. ncellikle gze ho gelen oyunlar ( Animasyon, kayan yazlar gibi),

    daha yararl eyler ise yava yava oluuyor ( Chat, daha iyi kullanc arayzleri, evbankacl gibi)Java ile neler yaplamaz ?Ufak bir cmle ileKahve piirilmez.

    2

  • 8/3/2019 Java-ile-daginik-programlama (1)

    3/31

    Programcnn ihtiyalarEditrJava programlar veya appletleri yazmak iin editre ihtiya vardr. Henz severek kullandnz bir editrbulamdysanz buraya bir gzatn.

    Windows 95/98/NT

    EMacs : Bu editr yazdnz koddaki kelimeleri cinsine gre renklendiriyor. Ayrca stunatlamalarn dzenli bir ekilde yaptndan bloklarnz sizin ayarlamanza gerek kalmyor.Renklerdirme ve zel stun atlama zellikleri ile kodun okunabilirliini kolaylatryor. Editre aitbir paketle, java kodlarnz editrn iindeki menler yardm ile derleyebiliyorsunuz. Aynzamanda Unix'de de alyor. stelik bedava.UltraEdit : 45 gnlk deneme sresi olan bir shareware program.

    UnixGNU Emacs : Bu editr yazdnz koddaki kelimeleri cinsine gre renklendiriyor. Ayrca stunatlamalarn dzenli bir ekilde yaptndan bloklarnz sizin ayarlamanza gerek kalmyor.Renklerdirme ve zel stun atlama zellikleri ile kodun okunabilirliini kolaylatryor. Editre aitbir paketle, java kodlarnz editrn iindeki menler yardm ile derleyebiliyorsunuz. Aynzamanda Windows paltformlarnda da alyor ( Yukarya baknz ).Xemacs :Bu editr GNU Emacs 'in bir varyasyonu. Daha iyi X destei olduu syleniyor

    ( Bazlar tarafndan ). MacOS

    BBEdit : ok popler olan bu ticari editr, Java ve HTML desteinin yannda dah bir okprogramlama dilinide destekliyor.SpotCheck :Sadece Java'y destekleyen ticari bir editr.

    JDK ( Java Development Kit )Herkesin java programlar gelitirmesine olanak tanmak (bylece dahaabuk yaygnlamasn salamak ) iin SUN temel ihtiyalar ieren bir paket kard :JDK ( Java Development Kit ) Bu pakette herey var. Derleyici ( Compiler ),Yorumlayc ( Sanal makina ), Snf ktphaneleri ( API 'ler ), dkmantasyon ( HTML formatnda ) ve birsr demo.Bedava olan bu paket grsel deildir, komut satr programdr. Grsel olan Java gelitirme ortamlarvardr, lakin bunlar ticaridir, dolaysyla paraldr. Bunlarn ouda SUN'n gelitirdii JDK paketinin

    makinada kurulu olmasn isterler. Grsel gelitirme ortamlar hakknda daha fazla bilgi iin JavaGelitirme Ortamlar blmne baknz.Gelelim JDK'nn srmlerine :

    SPARC/Solaris ve X86/SolarisJDK 1.02JDK 1.1.7JDK 1.2( imdi "Java 2" diye anlyor. )

    Windows 95/98/NTJDK 1.02JDK 1.1.8JDK 1.2( imdi "Java 2" diye anlyor. )

    MacOSJDK 1.02 ( Minumum MacOS 7.5.3 ve 25 MHz bir makinaya ihtiya duyuyor. )

    Dier iletim sistemleri ( En gncel liste SUN tarafndan salanyor. )Dkman & Kitapyi bir dkmantasyon tabii ki kanlmaz. JDK paketinde tabii ki birdkmantasyon var, ama ne yazk ki ingilizce.Nette bulunan dkmanlar "Linkler" blmnden, Java kitaplarn ise "Kitaplar" blmnde bulabilirsiniz.Java Gelitirme OrtamlarDoru drst bir java program yazmak iin JDK yeterli deil. Eksik olan konforlu bir zel editr, debugger( hata ayklaycs ) ve GUI-Builder.Borland yllar nce, bir program gelitirilmesi iin gerekli olan hereyi ierenIDE ( Integrated Development Environment ) diye anlan entegre edilmigelitirme ortamn karmt. Java programclar iin de byle bir gelitirmeortamna ihtiya vardr ve bu ii ok daha kolaylatrr. Mevcut Java Gelitirme ortamlarn grmek iin

    burayatklaynz.

    3

    http://www.gnu.org/software/emacs/http://www.ultraedit.com/products/http://www.gnu.org/software/emacs/http://www.xemacs.org/http://www.xemacs.org/http://www.bbedit.com/http://www.genieworks.com/http://www.genieworks.com/http://java.sun.com/products/jdk/1.0.2/http://www.sun.com/solaris/java/http://java.sun.com/products/jdk/1.2/http://java.sun.com/products/jdk/1.2/http://java.sun.com/products/jdk/1.0.2/http://java.sun.com/products/jdk/1.1/download-jdk-windows.htmlhttp://java.sun.com/products/jdk/1.2/download-windows.htmlhttp://java.sun.com/products/jdk/1.2/download-windows.htmlhttp://java.sun.com/products/JDK/1.0.2/index.htmlhttp://java.sun.com/cgi-bin/java-ports.cgihttp://java.sun.com/cgi-bin/java-ports.cgihttp://linkler.html/http://kitaplar.html/http://dokuman/ide.htmlhttp://dokuman/ide.htmlhttp://www.gnu.org/software/emacs/http://www.ultraedit.com/products/http://www.gnu.org/software/emacs/http://www.xemacs.org/http://www.bbedit.com/http://www.genieworks.com/http://java.sun.com/products/jdk/1.0.2/http://www.sun.com/solaris/java/http://java.sun.com/products/jdk/1.2/http://java.sun.com/products/jdk/1.0.2/http://java.sun.com/products/jdk/1.1/download-jdk-windows.htmlhttp://java.sun.com/products/jdk/1.2/download-windows.htmlhttp://java.sun.com/products/JDK/1.0.2/index.htmlhttp://java.sun.com/cgi-bin/java-ports.cgihttp://linkler.html/http://kitaplar.html/http://dokuman/ide.html
  • 8/3/2019 Java-ile-daginik-programlama (1)

    4/31

    Bir applet hazrladnzda bunu bir HTML dkmanna yerletirmelisiniz.HTML 3.2 ile birlikte, Java appletlerin kullanlmasn salayan iki yeni eleman kt. Bunlar APPLET vePARAM. Dier HTML elemanlar gibi bu iki elemannda birok zellikleri mevcuttur. Fakat idealisadece gerekli olan zelliklerin kullanlmasdr.APPLET Elemannn kullanlmasAPPLET eleman, HTML dkmanna yerletirdiiniz appletin tanmlanmasn ve zelliklerinin

    tanmlanmasn salar. Her HTML eleman gibi, APPLET elemannn da bir balang tag ve biti tag vardr.APPLET eleman iin gerekli olan zellikler: CODE, WIDTH ve HEIGHT dr.CODE zellii kullanlacak appleti, WIDTH zellii appletin geniliini (Pixel),HEIGHT zellii ise appletin yksekliini (Pixel) belirlemenizi salar.Aada gerekli olan zellikleri ile bir appletin HTML dkmanna balanm eklini gryorsunuz. MetSar n Java Sayfas

    Yukardaki rnekte HTML dkman ve metsar.class adl java appleti ayn dizinde bulunmaldrlar.ayet java appleti farkl bir dizinde ise opsiyonel CODEBASE zelliini kullanmanz gerekir.CODEBASE zellii, appletin bulunduu URL yi belirtmenizi salar. Aadaki rnek, yukardakirnein hemen hemen aynsdr. Tek fark java appleti baka bir dizinde bulunduu varsaylarakCODEBASE zellii kullanlmtr. MetSar n Java Sayfas Dier opsiyonel zellikleri yle sralayabiliriz.ALIGN : Appletin konumunu belirlemizi salar. Alabilecei deerler ABSBOTTOM, ABSMIDDLE,BASELINE, BOTTOM, CENTER, LEFT, MIDDLE, RIGHT, TEXTTOP, TOP dur.HSPACE: Appletin altnda ve stnde ne kadar boluk brakabileceinizi belirleyebilirsiniz. HSPACE evereceiniz deer Pixel olarak ilenir.rnek : HSPACE=10VSPACE: Appletin sanda ve solunda ne kadar boluk brakabileceinizi belirleyebilirsiniz. VSPACEe vereceiniz deer Pixel olarak ilenir.rnek : VSPACE=20

    ALT: Appletleri gsteremeyen browser larda, appletin yerine alternatif bir yazkmasn salayabilirsiniz.NAME: Applete bir isim vermenizi salar.PARAM Elemannn kullanlmasPARAM eleman ile applete parametre gnderebilirsiniz. PARAM elemannn sadece balang tagvardr. . Applete gndermek istediiniz her parametre iin bir tagkullanmalsnz. PARAM taglarn balang tag ile biti tag arasnayerletirmelisiniz.Appletler tagnda belirtilen parametrelere getparameter() metodu ile ularlar. tagnn gerekli iki tane zellii vardr. NAME ve VALUE. NAME zellii ile parametrenin ad belirtilir kigetparameter metodu ile bu isme gre aranr. VALUE zellii ise parametrenin deerini verir.Aada, applete kullanlacak resmi parametre ile girilen bir HTML dkman rnei verilmitir.

    MetSar n Java Sayfas

    4

  • 8/3/2019 Java-ile-daginik-programlama (1)

    5/31

    Java appletinde, resim parametresinin deeri aadaki komut ile okunur.Resim_logo=getparameter(Resim);Veri TipleriLiterallerDeikenlerAklamalarOperatrlerAyrlm KelimelerKarlatrmalarDnglerDizilerVeri Tipleri

    Java'da herey bir nesnedir. Tek istisna veri tipleri. Java veri tipleri btn platformlarda standartbykle sahiptir. Bu satndart Java 'nn tanabilirliini salyor. Aada Java 'da bulunan veri tipleri vebyklkleri listelenmitir.Veri tipi Byklkbyte 8-bitshort 16-bitint 32-bitlong 64-bitfloat 32-bit kayan noktadouble 64-bit kayan noktachar 16-bit Unicode

    Eer C/C++ programcs iseniz "unsigned" tipinin olmad dikkatinizi ekmitir. Byte tipi ise C/C++ daki"char" tipinin yerini almtr. Java'daki char tipi 16 bittir.nk Java karakter verisinde Unicode karakter setini temel alr. Unicode uluslararas karakterleridestekleyen bir standarttr. Programlarnzn deiik platformlarda ve lkelerde altrlacanda Unicodeok uygundur.Yukardaki tabloda olmayan dier bir veri tipi ise boolean dr. Bir boolean deiken numerik deerevrilemez ve sadece iki deer alabilir. Bu deerler"true" ve "false" dur.LiterallerLiteraller, deikenlere deer atamak iin kullanlr. Integer 'lara C/C++ benzer biimde deer atanr. 25gibi tamsay atayabilirsiniz. Hexadecimal bir tamsay atamak iin, saynn nne "0x" ifadesi koymanzgerekir. rnein 15 saysn hexadecimal olarak 0xF eklinde atamalsnz. 8 'lik tabanda bir say atamak

    iin "0" ifadesini saynn nne koymalsnz.Kayan noktal saylar ise direkt 5.2345 eklinde atayabilirsiniz. Bunlar 32 bit float veya 64 bit doubleolarak saklanabilirler. Belirtmez iseniz varsaylan 64 bit double dr. Belirtmek iin yapacanz tek eysaynn arkasna float iin F, double iin D koymaktr. rnein 5.323 F veya 5.323 D.Karakterler, tek trnak iinde atanrlar. rnein 'a' gibi. Escape karakterleri iin slash (\) kullanlr. Bunlardatrnak iinde belirtilir. \t=tab, \n=satr atlama gibiStringler iin ift trnak kullanlr. "MetSar'n Java Sayfas" gibi. Satr atlamas yapmak istiyorsanz"MetSar'n Java Sayfas \n"DeikenlerJava' da tip deiken vardr : instance,class ve local. ilk iki tipe ileriki blmlerde deinilecektir. Lokaldeikenler metodlarn ve bloklarn iinde tanmlanabilirler. Blok, { ile balayan ve } ile biten ifadelertopluluudur. Blok iinde tanmlanan lokal deikenler, blok sonuna kadar geerlidir.Genel format u ekildedir :

    rnein double tipinde pi adl deikeni tanmlayalm.

    5

  • 8/3/2019 Java-ile-daginik-programlama (1)

    6/31

    double pi;Deerde atayabilirdik:double pi=3.1415;Deikenler, harf, say, dolar iareti, alt izgi ile balayp bu karakterlerle devam edebilir. Ama komutlar,operatrler deiken ismi olarak kullanlamazlar.Aklamalar

    Programlarnza aklama koymak iin Java da kullanacbileceiniz iki stil vardr.Birincisi ift slash ( // ) . ift slash tan satr sonuna kadar olan ksmda bulunan herey aklama olarakkabul edilir. kincisi ise slash ve yldz ( /*) ile balar yldz ve slash ile biter. Bunlar arasndaki hereyaklama olarak kabul edilir.rnek 1 : double pi; // pi deikeni double olarak tanmland.rnek 1 : /* Bu programn amac saysal loto tahmini yapmaktr.

    OperatrlerJava'da bulunan operatrler aadaki tabloda verilmitir.Kategori Operatr Aritmetik + - * / %likisel < > >= >>> ~ &= |= =

    Artrma ++Azaltma --

    Aada iki deiken tanmlanp, bunlara deer atanyor. Daha sonra ise bu iki deikenin ieriitoplanyor.int x,y ;x= 3 ;y=4 ;int z=x+y ;Z 'nin deeri yedidir.Operatrlerin ncelik sras aadaki tabloda gsterilmitir.[] ()++ - ! ~

    * / %+ -> >>>< > === !=& ^|&&||= ve dierleriBit ilemleri

    Ayrlm KelimelerAadaki tabloda Java 'nn komutlar olarak kullanlan kelimeler listelenmitir. Bu kelimeler Java iinayrlmtr. Yani bu kelimeleri deiken ismi gibi eyler iin kullanamazsnz. Bunlar snf tanmlamas,deiken tipi belirleme, koul, dng gibi ilemler iin kullanlr.

    Abstract booleanbreak bytebyvalue casecatch char class constcontinue defaultdo doubleelse extendsfalse final

    finally floatfor goto

    6

  • 8/3/2019 Java-ile-daginik-programlama (1)

    7/31

    if implementsimport instanceof int interfacelong nativenew nullpackage private

    protected publicreturn shortstatic super switch synchronizedthis threadsafethrow transienttrue tryvoid while

    KarlatrmalarKarlatrmalar , genelde bir karlatrmann sounucuna gre belirtilen komut veya komutlaraltrrlar. Eer birden fazla komut kullanlacak ise blok iinde olmaldr. Tek bir komut iin bunagerek yoktur.

    rnein; a deikenin deerinin bir olup olmadn kontrol ediyoruz.Eer a=1ise a=2deil ise a=1Grld zere karlatrma boolean bir deer dndrmelidir. Yani true(doru) veya false(yanl)deerini dndrmelidir ki bu deere gre ilenecek komutlar belirlenebilsin.Java'da karlatrma yapmak iin "if...else..." kullanlr. Format u ekildedir:if (karlatrma){ karlatrmann sonucudoru ise ilencek komutlar}else{ karlatrmann sonucu

    yanl ise ilencek komutlar}Yukardaki rnei java formatnda yazarsak :if (a==1) // Java'da = operatr atama iin kullanlr.// Karlatrma iin == operatrn kullanlr.a=2;elsea=1; // Tek komut olduu iin blok iine alnmasna gerekyoktur.Eer birok karlatrma var ise i ie karlatrmalar (if ) kullanlabilir.Sonucu nmerik olan karlatrmalar iin "switch...case..." komutu kullanlr. Bu komut sadecenmerik deerler iin kullanlr. Format u ekildedir:switch (deiken)

    {case 1: // deikenin deeri 1 isebreak;case 2:{// deikenin deeri 2 isebreak;}default: // yukardaki deerler haricindeki deer isebreak;}

    DnglerJava 'da tane dng ilemi vardr. "for" dngsnn yaps aadaki ekildedir.for (ilk deer; test; deer artrma/azaltma)

    7

  • 8/3/2019 Java-ile-daginik-programlama (1)

    8/31

    Bu yapda grlen ilk deer ifadesi, deikeninizin alaca ilk deerdir. Test ifadesinde ise basit veyakompleks bir karlatrma kullanabilrisiniz. Deer artma veya azaltma ise deikeninizin on ankideerini deitirecek bir ifadedir. "for" dngsnb rnek kullanm :for (sayac=0;sayac

  • 8/3/2019 Java-ile-daginik-programlama (1)

    9/31

    try {String girilen=giris.readLine();} catch (IOException e ) { System.out.prinln(e);}try-catch blou olas bir hatay yakalamak iin kullanlyor. Eer bir hata oluursa hatay ekranayazacak. imdide girileni yazdralm. Ekran birey yazdrmak iin System.out snfnn printlnmetodunu kullanacaz :

    System.out.println ("Girdiiniz ey : " + girilen );println metodu ekrana verilen parametredeki yazy yazdktan sonra imleci bir alt satra geirir. ayetimlecin bir alt satra gemesini istemiyorsanz print metodunu kullann. Ama bu metodu kullandnzdaekrana bilginin kmas iin akabinde flush metodunuda kullanmalsnz. u ekilde :System.out.print("Ali ");System.out.flush()Bu blmde iaretli ( signed ) appletin ne olduunu ve Microsoft / Netscape web browserlar iinsertifikal appletin nasl yaplacan anlatmaya alacam.Java internet ortamna girdiinde, javay destekleyen browserlardaki buglar yznden ou kullancjava zelliini kapatmak durumunda kalmt. Gnmzde javann gvenlii artm durumda. Bundabrowserlarn buglarnn azalmasnn rol olduu gibi sertifika kavramnnda byk rol vardr.

    KULLANICILAR

    a. Sertikasz/aretsiz Appletler Neler Yapabilir ?Kullanclarn bilgisayarnda istenmeyen ilemlerin yaplmasn engellemek iin, her browsern gvenliksnrlamalar vardr. Bu gvenlik snrlamasnn tr browsera gre deiir. Gnmzdeki browserlarnjava appletlerin iin aadaki gvenlik snrlamalar vardr :- Appletler kullancnn bilgisayarndan veri okumaz ve yazamazlar.- Kullancnn bilgisayarnda program altramazlar.- A balants sadece appletin bulunduu server ile kurulabilir.- Sistem ayarlarn deitiremezler.Bu gvenlik snrlamalarna bakld zaman normal bir applet sadece grafik veya yaz gsterme, sesve animasyon ilemlerini yapabilir. Byk iler iin normal appletler uygun deildir ki kk bir verigirii dahi olamadan die dokunur uygulama yapmak mmkn deildir.b. Sertifikal ve aretli Nedir ?Appletlerin web sayfalarn daha grsel hale getirmekten baka bir ie yaramad abuk anlald.

    Ama daha fazlasn; mesela kulancdan bilgi almak ve yazmak; yapabilmek iin gvenliksnrlamalarn kaldrmak gerekiyordu.Fakat bunun mmkn olduu gvenli olmas iin, appletler yeni browserlar iin iaretlenebiliyor.Bunun iin applet gelitiricisinin amacn belirten sertifaya ihtiyac vardr. Sertifa browser okuyabileceiekilde aktr ve gelitiricinin adn ve kontrol kodu ierir.Bu sertifaka ile gelitirici appleti gvenli olarak iaretler. Baka hi kimse bu sertifikay kullanarak birappleti iaretletyemez. nk gelitirici appleti iaretlemek iin sertifika ile birlikte verilen zel kodukullanr.Kullanc appleti altrdnda ( applet olan bir web sayfasn ardnda ) browser appletin iaretiile sertifikay karlatrr. Bylece appletin iareti sertifaka ile uyumlu ise altrr.Bu u anlama geliyor: Doru iaretli bir appletin gelitiricisini kullanc applet yklenirken grr. Amasadece applet yklenirken.c. aretli Appletler Neler Yapabilir ?

    aretli bir applet yklendiinde kullancnn karsna bir pencere gelir. Bu pencerede sertifikahakknda bilgiler vardr ve kullanc onay istenir. Kullanc bu bilgiler nda appletin almasna izinverir veya vermez.Kullancnn almasn onaylam bir applet normal programlarn yapabildiihereyi yapabilir.d. Bu Durumdaki Gvenlik !Burdaki problem onaylama ileminin ya hep ya hi mantnda ilemesidir. Bunun anlamonayladnz bir appletin gerek amacnn dndaki verileride okuyabildii veya istenmeyen bir yereveri yazabildiidir.Tam anlamyla eriim haklarnn belirlenmesi programclara ar geldii iin ou programc tarafndanyaplmyor. Yinde Microsoft ve Netscape'in browserlar iin eriim haklarnn deiik ekildebelirlenmesi karsnda programclar minimum dzeyde eriim hakkyle yetiniyorlar.kinci bir problem ise sertifikann gerekliidir. Gerek sertifikalar, programc tarafndan deil,programcnn gvenilirliine kefil olan irketler tarafndan oluturulmu sertifikalardr. Bu irtketler para

    karlnda sertifika oluturmaktadr. Bir sertifika en az $200 balayp sertifikaya gre artmaktadr.

    9

  • 8/3/2019 Java-ile-daginik-programlama (1)

    10/31

    Programc yllk olarak $100 balayan fiyatlarda demek zorundadr. ou programc iin bu fiyatlarar pahal gelmektedir.En azndan herkes bedava kendi sertifasn oluturabilir. Fakat byle bir sertifa, programcnn gerektekim olduunu ve amacnn doruluunu belirtmez. Hatta test sertifikalar diye anlanlar istenenherhangi bir isim ile oluturulabilir.Her ne kadar insan korkutsada, bilinmeyen bir shareware program denemekten daha gvenlidir.

    Appleti onaylamak veya onaylamamak bizim elimizde deil mi ?

    GELTRCLERa. Sertika irketleriGerek sertifakalar sertifa irketleri ( Certificate Authority ksa CA ) tarafndan veriliyor. Bu irketlerprogramncnn yada irketlerin amacn kontrol ettikten sonra sertifika veriyorlar. En tannm sertifikairketleri VeriSign, Thawte ve BelSign.Her CA, verecei sertifikalar kendi sertifikas altna tanmlar ki daha nceden gvenli belirlenmikendi sertifikalar gibi ilem grsnler. CA'lar kendilerine ait sertifikalar daha nceden browserlaratanmlanm ve kurulmutur.Maalesef bu irketlerin verdikleri hizmetin bedeli yksek. Bir defaya mahsus cret $200 dan balyor,yllk cretler ise 100$ dan. uana kadar iaretli appletlern yaygnlamamasnn en byk nedeni buolsa gerek.

    b. Test SetifikalarTest sertifikas herkes tarafndan be kuru denmeden oluturulabilen sertifikalardr. Amaprogramcnn amacn gerek olarak ispatlamayan sertifikalar bunlar. Bu sertifikalarda browsera gredeiiyor. Bir Netscape ve birde Microsoft iin oluturmak gerekiyor. Sun'n HotJava browserna higirmeyeceim burda, belki ileride onuda ele alrm.c. Microsoft Browser in Test SertifakasMicrosoft browser sertifikas oluturmak iin, Microsoft'un sitesinden bedava indirebileceiniz "Software Developer's Kit ( SDK) " e ihtiyacnz var. Bu yazlm kitinin iindeki programlarn tek tekindirilememesi tabii ki ok kt bir durum. Bu kitin iindeki herhangi bir program iin 20 MBbyklndeki bu kiti indirmek zorunda kalyorsunuz. Ama bu kiti CD olarakta sipariedebiliyorsunuz.Bu kit ile gelen ingilizce dkmantasyon tam olarak okunmal, nitekim olmazsa olmaz bir ok nemliparametre mevcut. Burada bu kitin iindeki DOS programlaryla sertifika oluturulmasn ksaca

    anlatmaya alacam. Bu sadece balang iin yardm niteliindedir. Gerisini dkmanabrakyorum.1. makecert ile Private/Public Key oluturun. Sertifika iin gerekli olan .cer uzantl bir dosya

    oluacaktr.2. cerrt2spc ile sertifikay oluturun. Birinci admda oluturduunuz .cer uzantl dosyadan .spc

    uzantl bir dosya oluturur.3. cabarc ile class dosyalarnz cab dosyas haline getirin. Bu cab dosyas Internet Explorer

    tarafndan indirilecek dosyadr.4. Oluturduunuz cab dosyasn signcode ile iaretleyin. Bu ilem srasnda oluturduunuz

    .spc uzantl dosyada kullanlacaktr.d. Netscape Browser in Test SertifakasNetscape programclarn iini biraz daha kolaylatrm Microsoft'a gre, sertifika iin gerekli olan"Signtool" uramadan indirebilecek ve Microsoft'un kitine gre daha kolay kullanm var. Signtool

    Win95 ve Unix srmleri var.Ksaca admlar :

    1. signtool ile Private ve Public Key oluturmak iin -G parametresini kullann. Bu ilem ilex509.cacert adl bir dosya oluacaktr.

    2. signtool ile class dosyalarnz jar dosyas haline getirin.Bu ilemleri batch dosyas ilede yapabilirsiniz.Bundan birka yl nce Sun, HotJava adl web browser piyasaya kard. Sun'n bu web browser,Java'y destekliyordu. Buda iine java nesneleri gmlebilen uygulamalarn ilk rneini tekil ediyordu.Bunun ardndan Netscape kendi web browsernada Java desteini ekledi. Ardndan da MS.Gn getikce Java'nn yeni srmleri kt. Bununla birlikte Netscape ve MS kendi ihtiyalarna uygunsnf ktphanelerini eklediler browserlarna. Bylece her browsern kendine zel JVM ( Java VirtualMachine ) 'i oldu. Dolaysyla browserlarn iine gmlen JVM ile browserdan bamsz olarak JVM 'igncellemek imkanszd.

    Sun, herhangi bir ortamda Java'nn alabilmesi iin gerekli olan hereyi ieren ( Java VM ve snfktphaneleri ) JRE 'yi kard. Eer JRE bilgisayarnzda yklyse, herhangi bir uygulamaya ( rnein

    10

    http://www.verisign.com/http://www.thawte.com/http://www.belsign.be/http://www.microsoft.com/java/download.htmhttp://www.verisign.com/http://www.thawte.com/http://www.belsign.be/http://www.microsoft.com/java/download.htm
  • 8/3/2019 Java-ile-daginik-programlama (1)

    11/31

    browser ) gmlm java nesneleri alabiyor. Sorun, browserlarn sadece kendi JVM lerinebakmalar ve makinada ykl olan JRE 'ye ulamak iin bir mekanizmaya sahip olmamalaryd. Sunolaya el att : Java Plug-InSun'n gelitirdii Java Plug-In, JRE 'ye HTML sayfalarndan browser kullanarak ulamak iin birmekanizma. Java Plug-In, Sun'n web sitesindenbedavaya indirilebiliyor. Sayfaya girildiinde, istenenjava srm kullancnn makinasnda ykl deilse, kullanc Java Plug-In sayfasna ynlendirilir.

    Java Plug-In, Netscape'de plug-in olarak, IE 'de ise ActiveX Control olarak otomatik yklenir.Java Plug-In KullanmakJava Plug-In, Netscape'de EMBED, IE 'de ise OBJECT tag sayesinde kullanlabilir. MIME tipi ileistenen java srmn belirtmelisiniz. rnein Java 1.2 srmnn zelliklerini kullanan bir appletinizvarsa, MIME tipinde bunu belirterek appletinizin doru almasn salarsnz.

    MIME Tipi Nesne Tipi / Srmapplication/x-java-applet; Applet / Mevcut srmapplication/x-java-applet;version=1.1 Applet / Java 1.1application/x-java-applet;version=1.2 Applet / Java 1.2application/x-java-bean; Bean / Mevcut srmapplication/x-java-bean;version=1.1 Bean / Java 1.1

    HTML sayfasna appletinizi geleneksel yntemlerle koymak isterseniz, yani Java Plug-In kullanmakistemiyorsanz APPLET tagn kullanmanz gerekir. APPLET tagnn kullanm iin buraya tklaynz.

    Java Plug-In kullanmak istiyorsanz;Netscape iin EMBED tagn kullanmalsnz :Applet Desteklenmiyor

    PLUGINSPAGE ve TYPE alt tagn kullanmanz gerektiini unutmaynz. nk browser Java Plug-Inykleme sayfasn ve srm bilmesi gerekir. APPLET tagnda kullanlan PARAM alt tagn budurumda kullanmazsnz. Parametreleri direkt, rnekte grld gibi ( parametre1="2") direktyazmalsnz.CODE, CODEBASE,WIDTH,HEIGHT gibi alt taglar APPLET tagnda olduu gibikullanlr.Internet Explorer iin OBJECT tagn kullanmalsnz :

    Applet desteklenmiyorBurada CODEBASE alt tag gml nesnenin gerektirdii ActiveX Controlnn yeridir. Java'ya aitcodebase,type,code gibi taglar PARAM alt tag ile belirtilir.Netscape ve IE iin farkl yntemlerin kullanlmas, her biri iin ayr web sayfalarmz olaca anlamnagelmiyor. HTML kodu kullanarak her ikisi iinde geerli bir sayfa hazrlayabilirsiniz. Fakat byle birHTML kodu yazmak iin kendinizi kasmayn. nk Sun, Java Plug-In ile beraber HTML eviricisi( HTML Converter ) sunuyor. Bu evirici sayesinde HTML sayfasnda kullanlan APPLET taglar her iki

    browserda da kullanlabilecek ekilde evriliyorSymantec Visual Cafe Inprise (Borland) JBuilderWindows 95/98/NT ve MacOS Windows 95/98/NT

    11

    http://java.sun.com/products/plugin/1.1/index.htmlhttp://java.sun.com/products/plugin/1.1/index.htmlhttp://java.sun.com/products/plugin/1.1/index.htmlhttp://dokuman/htmldejava.htmlhttp://cafe.symantec.com/http://www.inprise.com/jbuilder/http://java.sun.com/products/plugin/1.1/index.htmlhttp://dokuman/htmldejava.htmlhttp://cafe.symantec.com/http://www.inprise.com/jbuilder/
  • 8/3/2019 Java-ile-daginik-programlama (1)

    12/31

    MS Visual J++ Sybase PowerJWindows 95/98/NT Windows 95/98/NTIBM VisualAge for Java SuperCedeWindows 95/98/NT ve OS/2 Windows 95/98/NTMetroWerks Code Warrior with Java Sun Java WorkshopWindows 95/98/NT ve MacOS Windows 95/98/NT ve Solaris

    Sun Java Studio Apptivity (Progress Software)Windows 95/98/NT ve Solaris Windows 95/98/NTSimplicity for Java NetBeansWindows 95/98/NT, MacOS, Solaris, OS/2 veherhangi bir Java 1.1 ortam

    Windows 95/98/NT, MacOS, Solaris, OS/2 ve herhangibir Java 1.1 veya 1.2 ortam

    Oracle JdeveloperWindows 95/98 ve NTrn JBuilder zerine yaplan baz eklemelerile oluturulmu.

    Java programlarndan mevcut veritabanna balant kurmak iin SUN, JDBC ktphanesini gelitirdi.Bu sayfalarda JDBC 'nin nasl kullanlacan bulacaksnz.Giri

    JDBC konusuna giri, JDBC nedir ? JDBC iin neler gerekli ? Hangi veritabanlarna eriilebilir ?SrclerSrc nedir, ne ie yarar ? Bana gerekli srcleri nasl bulabilirim ? JDBC-ODBC kprs, SrcYneticisi.Balant KurmaVeritabanna balant kurma ilemi nasl yaplyor ? Hangi snflar ve komutlar kullanmam lazm ?Sorgulama & Sonucun AlnmasVeritabanndaki herhangi bir kayda ulama, herhangi bir kritere gre kayt aratma, ksacas sorgulamave sorgulama sonucunun alnmas ilemleri.Veri lemeVeritabanna kayt ekleme, veritabanndaki bir kayd deitirme, veritabanndan kayt silme ilemlerinasl yaplr ? Toplu ileme nedir, nasl yaplr ?Store Procedure

    Store procedure 'm var. Java'dan nasl altracam. Parametre gnderme ve dnen deerlerinalnmas hangi komutlarla yaplyor.Java programlarndan mevcut veritabanna balant kurmak iin SUN, JDBC ktphanesini gelitirdi.Bu sayfalarda JDBC 'nin nasl kullanlacan bulacaksnz.GiriJDBC konusuna giri, JDBC nedir ? JDBC iin neler gerekli ? Hangi veritabanlarna eriilebilir ?SrclerSrc nedir, ne ie yarar ? Bana gerekli srcleri nasl bulabilirim ? JDBC-ODBC kprs, SrcYneticisi.Balant KurmaVeritabanna balant kurma ilemi nasl yaplyor ? Hangi snflar ve komutlar kullanmam lazm ?Sorgulama & Sonucun AlnmasVeritabanndaki herhangi bir kayda ulama, herhangi bir kritere gre kayt aratma, ksacas sorgulama

    ve sorgulama sonucunun alnmas ilemleri.Veri lemeVeritabanna kayt ekleme, veritabanndaki bir kayd deitirme, veritabanndan kayt silme ilemlerinasl yaplr ? Toplu ileme nedir, nasl yaplr ?Store ProcedureStore procedure 'm var. Java'dan nasl altracam. Parametre gnderme ve dnen deerlerinalnmas hangi komutlarla yaplyor.Bu logo'yu daha nce grdnz m ? Peki ne anlama geliyor biliyormusunuz ?Logoda belirtilen %100 Pure Java ifadesini, ben Trke'ye %100 Katksz Java diye evirdim.Bildiiniz zre Java platformdan bamsz bir programlama dili olarak ortaya kt. Bunun anlam Javaile gelitirdiiniz programlar ister Windows, ister Mac isterse Unix olsun tm platformlardaalacaktr.Gl gr ki kazn aya yle deil. Java ile gelitirilmi baz programlar sadece bir platformda veya

    birka platformda dzgn alyor. te %100 Katksz Java logosu, Java programnn tmplatformlarda sorunsuz alacan belirtiyor.

    12

    http://www.microsoft.com/visualjhttp://www.sybase.com/products/powerjhttp://www.software.ibm.com/ad/vajava/http://www.supercede.com/http://www.metrowerks.com/http://www.sun.com/workshop/java/http://www.sun.com/studio/http://apptivity.progress.com/http://www.datarepresentations.com/http://www.netbeans.com/http://www.oracle.com.tr/http://jdbc/giris.htmlhttp://jdbc/suruculer.htmlhttp://jdbc/baglantikurma.htmlhttp://jdbc/sorgulama.htmlhttp://jdbc/veriisleme.htmlhttp://jdbc/storeprocedure.htmlhttp://jdbc/giris.htmlhttp://jdbc/suruculer.htmlhttp://jdbc/baglantikurma.htmlhttp://jdbc/sorgulama.htmlhttp://jdbc/veriisleme.htmlhttp://jdbc/storeprocedure.htmlhttp://www.microsoft.com/visualjhttp://www.sybase.com/products/powerjhttp://www.software.ibm.com/ad/vajava/http://www.supercede.com/http://www.metrowerks.com/http://www.sun.com/workshop/java/http://www.sun.com/studio/http://apptivity.progress.com/http://www.datarepresentations.com/http://www.netbeans.com/http://www.oracle.com.tr/http://jdbc/giris.htmlhttp://jdbc/suruculer.htmlhttp://jdbc/baglantikurma.htmlhttp://jdbc/sorgulama.htmlhttp://jdbc/veriisleme.htmlhttp://jdbc/storeprocedure.htmlhttp://jdbc/giris.htmlhttp://jdbc/suruculer.htmlhttp://jdbc/baglantikurma.htmlhttp://jdbc/sorgulama.htmlhttp://jdbc/veriisleme.htmlhttp://jdbc/storeprocedure.html
  • 8/3/2019 Java-ile-daginik-programlama (1)

    13/31

    Peki bu logoyu kimler kullanabiliyor ? nne gelen herkes kullanabilir mi ? Tabii ki HAYIR. Bu logoyukullanabilmek iin KeyLabs 'a bavurmak gerekiyor. KeyLabs bamsz bir sertifikasyon merkezidir.Programnzn %100 Katksz Java olup olmadn kendinizde kontrol edebilirsiniz. Bu ilemiJavaPureCheck isimli program kullanarak yapabiliyorsunuz. JavaPureCheck programnzn kullandsnflar kontrol ediyor ve size sonu hakknda bilgi veriyor. Bu program burayatklayarakindirebilirsiniz.

    %100 Katksz Java sertifikasn almak bedava mdr ? Ne yazk ki HAYIR. lk program iin 1000 $cret alyorlarm. Daha sonrakiler iin indirim yapyorlarm. %100 Katksz Java sertifikal birprogramnzn bu sertifikas ne kadar sre geerli diye bir soru aklnza geliyor ise, programdadeiiklik yapmadnz srece geerlidir. Fakat deiiklik veya ekleme yaptnz programlar iinsertifika paras olarak 500 $ dyorsunuz.Chat ne demek ? Bunu internetle birazck alakal olan herkes biliyordur herhalde ! Chat, sohbetetmektir. Bu sohbet iki veya daha fazla kii arasnda olabilir. Internet ile dnyann drt bir kesindekiinsanlarla sohbet edebilirsiniz. Bunun iin elbette yazlma ihtiyacnz var. eitli yazlmlar mevcut :MIRC , PIRCH gibi. zel chat yazlmlar kullanmadan bu i yaplamaz m peki ? Belki sizderastlamsnzdr, web sayfalar zerinden chat bile yapmsnzdr belkide ?te bizde bu sayfalarda java ile byle bir chat program hazrlayacaz. Hazrsanz balayalm.GvenlikAppletlerin, yani HTML sayfalarna balanm java programlarnn gvenlik nedeniyle baz

    kstlamalar vardr. rnein : Appletler sadece yklendikleri server ile balant kurabilirler. Bir applet"www.javasayfasi.net" 'den yklenmi ise, sadece "www.javasayfasi.net" ile balant kurabilir. Aksitaktirde ( baka bir server ile balant kurmaya alrsa ) browser 'n status (durum) ubuunda"Applet can't start: Security violation: security.socket.connect" hatas belirir. Ayn hata balantkurulmak istenen porttan cevap alnlamad durumlarda da ortaya kar. rnein chat-serveralmyorsa, chat server 'n dinledii porttan cevap alnamaz.URL 'lerBaka bir bilgisayar ile balant kurmak iin, o bilgisayarn internet adresinden faydalanyoruz. rnein"www.javasayfasi.net" gibi. Balanty java ile kurmak iin snf oluturuyoruz. Aadaki rnek javakodu "www.javasayfasi.net" adl bilgisayardaki index.html dosyasna ulamak iin kullanlyor.try{baglantiurl= new URL("http://www.javasayfasi.net/index.html");

    } catch (MalformedURLExceoption e){getAppletContext().showStatus("Ulalamayan URL:" + baglantiurl);}Yukarda grld gibi try { } catch { } blou ile balant kurmay deniyoruz ve hatalaryakalayabiliyoruz. Hata olumas durumunda status ubugunda "Ulalamayan URL :www.javasayfasi.net " eklinde bir mesaj kmasn salyoruz. Hata olumamas durumunda adresiniverdiimiz server'a, hatta bu durumda o server 'daki bir dosyaya ulam oluruz. Bundan sonraki admise verilerin alnmas, bunu C++ 'dan tandmz stream 'lerle yapacaz.StreamStream, basit olarak iki nokta arasndaki balantdr. Bir taraf verileri gnderirken dier taraf verilerialr. Stream 'de gzel olan iki taraf iinde kar tarafta ne olduu nemli deildir. rnein verilerignderen tarafta bir dosya, klavyeden girilmi manuel bir bilgi veya baka bilgisayar ile kurulmu bir

    veri balants olurken, alc taraf bir program bir dosya vb. olabilir.Yukarda kurulan balantdan veri alabilmemiz iin stream kullanmamz gerekiyor. URL snfnnopenStream() adl metodu tam bu i iin. Aadaki kod, yukardaki URL balantsndan satr satr bilgiokuyup bunu gsteriyor.try{InputStream is=baglantiurl.openStream();DataInputStream dis=new DataInputStream(is);} catch (IOException e) {}

    while(in.blabla()){try

    {satir=in.readLine();

    13

    http://www.keylabs.com/100percenthttp://www.javasoft.com/100percent/download.htmlhttp://www.javasoft.com/100percent/download.htmlhttp://www.javasayfasi.net/http://www.javasayfasi.net/http://www.keylabs.com/100percenthttp://www.javasoft.com/100percent/download.htmlhttp://www.javasayfasi.net/http://www.javasayfasi.net/
  • 8/3/2019 Java-ile-daginik-programlama (1)

    14/31

    System.out.println(satir);} catch (IOException e) {}}SocketlerStreamler ile olan zm geri iletiim kurmak iin bir yntemdir ki veriler bir noktadan dierineaktarlyor. Sohbetlerde letiimin ift tarfal olmas gerektii bir gerek, aksi taktirde bir taraf hep sukut

    halinde deil midir ? Geri streamler ile server'a veri gnderilebilir. Server 'da alan bir cgiprogramda bu verileri alp deerlendirir. Ama Internetin temelini oluturan TCP/IP protokol ift tarafliletiimler iin daha iyi bir yntem sunuyor : SocketlerTCP/IP protokolnn bir zellii verilerin paketler halinde alnp verilmesini salamasdr. Verilerindoru adrese ulamas iin de her pakete bir IP adresi verilir. Internet teki tm server larn bir IP adresivardr. Bir network ortamndaki bir ok kullanc farkl serverlar ile balant kurarken, bir kullancda birok server ile balant kurabilir. Kurulan balantlarn akmamas iin her veri paketine IP adresininyannda bir numara daha verilir. Bu numara port numarasdr. IP adresi ve port numaras ile veri paketidortu yerine ular.Bu IP adresi ve port numaras kombinasyonuna Socket denir.Baz portlar standart hale getirilip, rezerve edilmitir. rnein Telnet iin port 23 , WWW iin port 80standarttr. 256 'nn altndaki tm portlar standart a hizmetleri iin rezerve edilmitir. 256 ile 1024arasndaki portlar UNIX hizmetlerine tahsis edilmitir. rnein : rlogin

    1024 ile 16384 arasndaki portlar serbesttir ve kullanlabilir. Bizim yazacamz chat sistemininstandart bir portu yok. Kendimize 1024 iel 16384 arasnda bir say seebiliriz. Ben 8888 numaral portusetim. Umarm bir itiraznz yoktur. Eer var ise siz baka bir port kullanabilirsiniz.Sunucu / stemci ( Client / Server )Socketler yardm ile chat sistemimizi programlamaya balayacaz. Belli bir appleti ykleyenkullanclarn birbirleri ile sohbet etmesini salayacak bu sistemimiz.Daha ncede bahsettiim gibi gvenlik nedeniyle appletler birbirleri ile direkt iletiim kuramazlar. Bunedenden dolay chat sistemimizi Sunucu/stemci mimarisine gre gelitireceiz. Server zerinde biruygulama alacak devaml balant bekleyen ve balant isteklerine cevap veren. Appletinbaland HTML sayfasda bu server zerinde olmaldr. Tabii ki bu server zerinde Web server dakurulu olmas gerekir. HTML sayfasi dier bilgisayarlar ( kullanclar ) tarafndan yklediinde, busayfann iinde olan applet alacak ve server ile balant kuracaktr.Girilen tm veriler server'agnderilecek, server ise gelen bilgileri, kendisine bal olan tm kullanclara geri gnderecektir.

    Chat SistemiChat sistemimiz toplam 3 snftan oluacak. Birincisi Chat Server, server zerinde alacak vebalant taleplerine cevap verecektir. kincisi Baglanti Snf, Balant taleplerini karlayacak vekullanclar arasndaki veri iletiimini dzenleyecek. ncs Chat Applet, kullancnn bilgisayarndaalacak.Chat Server Snfncelikle kullanacamz standart snf paketlerini yazalm:import java.net.*;import java.io.*;import java.util.*;java.net ierisinde Socket veya URL gibi internet iletiiminde gerekli olan snflar bulunuyor. java.ioierinde Giri/k snflar , java.util ierisinde ise bir sr gerekli snf bulunuyor.public class chatserver implements Runnable

    {...}Chat Server snfmz kendi bana alan bir thread eklinde olacaktr. Bunun iin implementsRunnable kullanyoruz.public static final int PORT = 8888;protected ServerSocket dinle;protected Vector baglantilar;Thread baglan;Snf tanmndan sonra deiken tanmlarn yaptk. PORT sabit bir deiken ve daha nceden kararverdiimiz port numaras atanm. "dinle" balant taleplerini dinlemek iin. "baglantilar" aktifbalantlarn tutulaca liste iin. "baglan" chat server snfnn thread 'ini tutuyor.public static void main(String[] args)

    {

    14

  • 8/3/2019 Java-ile-daginik-programlama (1)

    15/31

    new chatserver();}main metodumuzda chat server snfmz oluturuyoruz.public chatserver(){try

    {dinle = new ServerSocket(PORT);} catch (IOException e){System.err.println("Socket oluturulurken hata :"+e);System.exit(1);}baglantilar = new Vector();

    baglan = new Thread(this);baglan.start();}Chat server snfmzn balangnda (constructor) verilen portta bir socket alyor ve olas hatalar

    yakalanyor. Sonra balantlarn tutulaca liste ve thread oluturulup altrlyor.public void run(){try{while(true){Socket istemci=dinle.accept();

    baglanti b = new baglanti(this, istemci);baglantilar.addElement(b);}} catch (IOException e)

    {System.err.println("Balant talebi beklerken hata :"+e);System.exit(1);}}run () metodu yani asl alan ksm sonsuz dng iinde balant taleplerini bekliyor. Balant talebigeldiinde bu talep iin baglanti adnda yeni bir connection nesnesi oluturuyor. Niye her bir talep iinyeni connection nesnesi oluturuyor diye bir soru geldi ise aklnza, Server bundan sonraki balanttaleplerine cevap verebilsin diye.public void mesajgonder(String msg){int i;baglanti sen;

    for (i=0; i

  • 8/3/2019 Java-ile-daginik-programlama (1)

    16/31

    import java.net.*;import java.io.*;

    class baglanti extends Thread{...

    }Her balant talebi iin baglanti nesnesi oluturulur. Bu nesne balant talebini alr ve balant sonunakadar altrr. Bundan dolay her balant kendi bana bir thread olmaldr.protected Socket istemci;protected BufferedReader in;protected PrintWriter out;protected chatserver server;istemci Chat Server 'dan Socket i alr. in ve out adl Giri/k streamleri bu nesne ile balantlolacaklardr. server Chat Server objesini gsterir.public baglanti(chatserver server, Socket istemci){this.server=server;this.istemci=istemci;

    try{in =new BufferedReader(new InputStreamReader(istemci.getInputStream()));out = new PrintWriter(istemci.getOutputStream());} catch (IOException e){try{istemci.close();} catch (IOException e2){System.err.println("Stream oluturulurken hata : " + e);return;

    }

    this.start();}Baglanti snfnn balangcnda (constructor) parametre olarak alnan server ve istemci deikenesaklanyor. Sonra bir giri ve bir k stream i oluturulmak isteniyor. Bu srada oluacak hatalarcatch() tarafndan yakalanyor.public void run(){String satir;try{while(true)

    { satir=in.readLine();if(satir!=null)server.mesajgonder(satir);}} catch (IOException e){ System.out.println("Hata:" + e);}}Baglanti snfnn asl alan ksm gelen mesajlar aktif balantlara gnderen sonsuz bir dngdenoluuyor. Mesaj gndermek iin chat server snfn mesajgonder metodu kullanlyor.Chat AppletToplam snfmzdan biri olan chat appleti, tek grafik arayzne sahip snftr. Bu yzden java.appletpaketinin yannda java.awt snf paketininide kullanmas gerekiyor.

    import java.net.*;import java.io.*;

    16

  • 8/3/2019 Java-ile-daginik-programlama (1)

    17/31

    import java.awt.*;import java.applet.*;import java.awt.event*;

    public class chatapplet extends Applet implements Runnable,ActionListener{

    ...}Chat Applet snf Applet snfn miras alr ve Thread kullanr. Mesaj yazldktan sonra Enter'a baslpbaslmadn kontrol etmek iin ActionListener snfn kullanyoruzpublic static final int PORT = 8888;Socket socket;BufferedReader in;PrintWriter out;TextField inputfield;TextArea outputarea;Thread thread;PORT, socket, in und outchatserver ve baglanti da aklanan ile ayn anlam tar. inputfieldgirinesnesini outputarea ise k nesnesini tutuyor. threadkendine ait Thread 'i saklyor.

    public void init(){inputfield = new TextField();outputarea = new TextArea();outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));outputarea.setEditable(false);

    this.setLayout(new BorderLayout());this.add("South", inputfield);this.add("Center", outputarea);this.setBackground(Color.lightGray);this.setForeground(Color.black);inputfield.setBackground(Color.white);

    outputarea.setBackground(Color.white);inputfield.addActionListener(this);}Init metodunda grafik arayz hazrlanyor. Giri sahas (Textfield) ve k sahas (Textarea)oluturulup, giri sahas aaya gelecek ekilde yerletiriliyor. Bunun akabinde renkler belirleniyor. Enson satrda ise mesaj girilecek yaz alannda meydana gelen Enter'a basma olayn anlamak iinActionListener ekliyoruz.public void start(){try{socket = new Socket(this.getCodeBase().getHost(), PORT);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

    out = new PrintWriter(socket.getOutputStream());} catch (IOException e){this.showStatus(e.toString());say("Server ile balant kurulamad!");System.exit(1);}

    say("Server ile balant kuruldu...");

    if (thread == null){thread = new Thread(this);

    thread.setPriority(Thread.MIN_PRIORITY);thread.start();

    17

  • 8/3/2019 Java-ile-daginik-programlama (1)

    18/31

    }}Start metodunda applet server ile balant kurulmaya allyor. Gerekli olan server adresi HTMLdkman tarafndan belirleniyor. Bu da daima HTML dkmann bulunduu servern adresidir. Bakaserverlar ile balantya izin verilmedii iin, baka server olmasnnda hi bir anlam yok. Hataoluursa veya balant kurulursa, sonu bir mesaj ile kullancya bildiriliyor. Bundan sonra kendi thread

    'ini oluturup balatyor.public void stop(){try{socket.close();} catch (IOException e){this.showStatus(e.toString());}

    if ((thread !=null) && thread.isAlive()){

    thread.stop();thread = null;}}Stop Metodu browser tarafdan, kullanc sayfay terk ettii zaman otomatik olarak arlr. Socketkapatlyor ve thread durduruluyor.public void run(){String satir;

    try{while(true)

    {satir = in.readLine();if(satir!=null)outputarea.append(satir+'\n' );}} catch (IOException e) { say("Server ile balant kesildi."); }}run metodunda sonsuz bir dg iinde giri sahasndan girilen mesajlar, k sahasnda gsteriliyor.public void actionPerformed(ActionEvent e){if (e.getSource()==inputfield){String inp=inputfield.getText();

    out.println(inp);out.flush();inputfield.setText("");}}actionPerformed, kullanc giri yaptnda aktif olur. Kullancnn giri sahasna girip girmediinikontrol ediyoruz. Bu taktirde girileni alp servera gnderiyoruz. Giri sahasn tekrar boaltyoruz.public void say(String msg){outputarea.append("*** "+msg+" ***\n");}Say Metodu girilen mesaj bana ve sonuna yldz ekleyerek gsteriyor.Derleme & altrma

    imdi chatserver ve chatappleti derleyelim.

    18

  • 8/3/2019 Java-ile-daginik-programlama (1)

    19/31

    javac chatserver.javajavac chatapplet.javaBu ilem sonucunda class oluacak, chatserver otomatik olarak baglanti class oluturur.Bizim chat sistemimiz JDK 1.1 metodlarn kullanyor. Bu yzden JDK 1.1 desteklemeyen Netscape 3hatta 2 gibi browserlarda appletimizin almayacaktr.imdi chat server 'a balatalm. Yoksa kullanclar balanamaz deil mi ?

    java chatserverHTML SayfasAppletimizi balayacamz ufak bir HTML sayfas hazrlayalm. Siz bu sayfay ssleye bilirsiniz.Sohbet

    Bu HTML sayfasn appletin bulunduu dizine kopyalayn ve en az iki browser penceresi an. Her iki

    pencereye de yukardaki HTML sayfasn ykleyin. yi sohbetler.Eer sadece kendi kendinize sohbet etmek istemiyorsanz, kendinize bir web server kurmal veinsanlarn bunu dardan grebilmelerini salamalsnz. Dial-up balanyor olsanz bile onlineolduunuz zamanlar arkadalarnz chate davet edebilirsiniz.Her zaman ulalmasn istiyorsanz, web hosting yapan bir kurulula anlamanz gerekir. Ama oukurulu sizin chat server'nz altrmak istemeyecektir.Kim bilir belki siz chat server 'nz altrmalarn belki salayabilirsiniz.Sadece BalangBu sisteme bir sr fonksiyon eklenbilir. IRC programlarn grenler, bir ok fonksiyon olduunu bilirler.rnein her kullancya bir isim atamak, kullanclar arasnda zel mesajlama gibi...Ama bu sadece iin balangc, sizin bir chat sistemi nasl yazlr, bunun temelini vermeye altm.Gerisi size kalm.Kendinize kopyalayn !

    Kaynak Kodlar (java)Derlenmi (class)Appletler, dinamik web tabanl ierik iin en ideal programcklardr. Teorikte bir kere yaz, herbilgisayarda, her browserda ve her iletim sisteminde altr; mantn ileri sren Sun bunu "Bir kereyaz, her yerde altr ( Run Once, Run Anywhere ) " sloganyla lanse ediyor. Ne gzel bir hayal !Pratikte, birok java programcs ve birok kullanc Java appletlerinin baarsna sebep olduunusylyorlar. "Neden applet almyor ?" ierikli birok mail geliyor.Applet alt zaman tam alyor, almad zaman ise byk bir sorun halini alyor. Hataybulmak ve hatay dzeltmek gerekten baarsna neden olabiliyor. Hatta Java ile programgelitirmeyi bu yzden brakanlar bile var. Deiik browserlar, browser srmlerinin farkllklar, hattabrowser konfigrasyonlarndaki farkllklar appletlerin almasnda rol oynayabiliyor. Browserlaragml Java Sanal Makinasndaki ( Java Virtual Machine ) buglar ve bilgisayarn performansda etkilioluyor.ayet browser'nz hibir appleti altramyor ise, java applet ihtiva eden bir sayfay ardnzda

    taklp kalyorsa browser yazlmn tekrar kurmak ou zaman problemi ortadan kaldryor. Bu szkonusu deilde, gri bir dikdrtgenden baka bir ey gremiyorsanz bunun bir ka sebebi olabilir.Neden gri dikdrtgen ?Appletin yklenmesi srasnda veya yklendikten sonra altrlmas srasnda meydana gelenhatalardan dolay oluur. Java programlama dilinde bunun teknik ad "Exception" dr. Trke karltam olarak istisna durum veya harici durum olmasna karn, ben bunu hata olarak trkeye evirmeyidaha uygun buluyorum. Java'da hatalar yakalama imkan olduunu biliyoruz, daha dorusu bilinenou hatay desek daha iyi olur. Oluan hatalar bilinmedik, beklenmedik hata veya appletdenkaynaklanmayan hatalar olabildii iin bu hatalar yakalama imkan yok. imdi en ok karlalan vebilinen hatalar inceleyelim :

    Class dosyasna ulaamama veya ykleyememeBilindii gibi applet dediimiz programcklar, derlendikten sonra class dosyas halini alyorlar.

    Appletlerin almas iin bu class dosyalarnn yklenmesi gerekiyor. ayet class dosyasnn yeribulunamaz veya dosya yklenirken hata oluur ise gri kutunun iinde class dosyasn bulunamadna

    19

    http://dokuman/chat/chat_kaynak.ziphttp://dokuman/chat/chat_class.ziphttp://dokuman/chat/chat_class.ziphttp://dokuman/chat/chat_kaynak.ziphttp://dokuman/chat/chat_class.zip
  • 8/3/2019 Java-ile-daginik-programlama (1)

    20/31

    dair veya yklenirken hata olutuuna dair bir hata mesaj kar ve applet almaz. Applet almadiin, ki hata daha applet yklenirken olutuu iin, applet kodu iinden bu hatay yakalamanz veengellemeniz mmkn deildir. Bu hata ou durumda, tag iinde class dosyasnnbulunduu yeri yanl olarak belirtildii zaman ortaya kyor.

    A kaynaklarna eriememe

    Baz zamanlar a zerinde bulunana server ger veya herhangi bir sebepten balant kurulamaz.Kullanc firewall arkasndadr ve Socket, DatagramSocket istekleri almaz. Eer a kaynaklarnaeriim gerektiren bir applet yazyorsanz, iletiim iin TCP/UDP protokl yerine HTTP protoklnkullann. nk firewall arkasnda olan kullanc says gn getike artyor.Karlalan dier bir hata sebebi ise, browserlarn appletler ile ilgili kstlamalarndan kaynaklanyor.Appletviewer'da sorunsuz alan applet, browserda almyor. Applet sadece bulunduu server ilebalant kurabilir.Birok applet ise domain isimlerini IP adresine evirirken hata oluturuyorlar. Bunu nlemek iindomain ismi yerine IP adresi kullann.

    Null Hatalarok karlalan hatalardan biriside NULL hatalardr. Bu appletin kodundan kaynaklanan ve appletinalmamasn salayan bir hatadr. Bir deikene bir nesne atarken, nesnenin deerinin Null

    ( deersiz ) olmamasna dikkat edin. Aadaki rnei inceleyin :rnek:String sayac = getParameter ("sayac"); //sayac parametresini alif ( sayac == null ) // Eer sayac null isesayac = "1"; // sayac deerini "1" yap.

    Biraz dikkat ile, web sayfalarnda nmze kan gri dikdrgen kutucuklar azaltabiliriz.Java konusunda bir ok yanl kan var. Bunlardan bir kana bu yaz ile cevap vermeye alam.

    KanAppletler lokal sabit diskteki dosyalar okuyabilirler, silebilirler.

    Gerek

    Appletlerden sabit diskteki bir dosyaya eriilmek istendiinde, java hata (SecurityException) oluturur.ayet hata oluturmaz ise, applet taklp kalr (crash), ama dosya eriimi mmkn deildir.Dijital iaretlenmi appletler, yani sertifikal, istisnadr. Bu tr applet ile karlaldnda, browsersizden onay isteyecektir. Onay penceresinde sertifika hakknda bilgiler vardr. ( Ayrntl bilgi iinJavaSertifikas ). Onay vermediiniz taktirde gvendesiniz.

    KanJava web browser ile alr.

    GerekJava'nn deiik tipleri vardr, en ok bilinen java appletleridir. Java appletleri web browser veAppletviewer ile alrlar.Java programlar, herhangi baka bir program ( rnein MS Word ) gibi alrlar. Sun,Microsoft gibi

    yazlm reticilerinin JVM ( Java Virtual Machine ) 'sini kurmanz durumunda java programlarn,bildiiniz herhangi bir program gibi altrabilirsiniz.Java servlet'leri web server zerinde alrlar. Servlet'lar CGI script ve ASP ( Active Server Pages)'nin alternatifidirler. CGI scriptlerden daha hzl ve daha etkilidirler.

    KanJava, C 'ye gre 1000 kat daha yavatr. Sakn nemli programlar iin kullanmayn.

    GerekOrjinal JVM gerekten yavat. C program ile karlatrldnda, bu yavalk 20 katlara kadarvarabiliyordu. Ama iyi dizayn edilmi JVM'ler sayesinde, Java ve C/C++ arasndaki fark kapanyor.Tabii ki, byte kodunu gerek makina koduna dntren JIT ( Just-In-Time ) 'ide unutmamak lazm.Appletlerin yavalndaki en byk etken, appletlerin yklenmesinden kaynaklanyor. zellikle byk

    appletlerde bu ok skc olabiliyor. Neyseki java programlarnda ve servlet'larda yklenme sorunu yok.

    20

    http://dokuman/javasertifikasi.htmlhttp://dokuman/javasertifikasi.htmlhttp://dokuman/javasertifikasi.htmlhttp://dokuman/javasertifikasi.htmlhttp://dokuman/javasertifikasi.html
  • 8/3/2019 Java-ile-daginik-programlama (1)

    21/31

    FLOWLAYOUT SINIFIFlowLayout snf en basit bir yerleim yneticisidir. Bileenler tek bir satra yerletirilir. Sgmayanbileenler dier alt satra otomatikman yerletirilir. FlowLayout snf u sabitlere sahiptir.LEFT-0 , CENTER-1 , RIGHT-2

    KurucularFlowLayout()5 piksel dey ve yatay aralkl olduu varsaylan ve merkeze yaslanm dzen sunar.FlowLayout(int align)Align parametresi ile nereye yaslanaca belirlenmi bileenlerin yerleimini saglar..FlowLayout(int align,int hgap,int vgap)Align parametresi ile nereye yaslanaca ve hgap(satr iinde bileenler aras boluk), vgap(stuniinde bileenler aras boluk) belirlenmi yeni bir yerleim salar.

    GRDLAYOUT SINIFIEit boylarda hcrelerden oluan bir zgara biiminde yerleim saglar.

    Kurucular

    GridLayout (int rows,int cols)Srtn ve satr says belirlenmi zgara biimli bir yerleim saglar.GridLayout (int rows,int cols,int hgap,int vgap)Srtn ve satr says belirlenmi zgara biimli bir yerleim saglar. Ayn zamanda hgap(satr iindebileenler aras boluk), vgap(stun iinde bileenler aras boluk) belirlenmi yeni bir yerleim salar.

    BORDERLAYOUT SINIFIEn fazla 5 hcreye ayrlr.Bileenler North,South,East,West,Center olmak zere appletin,frameyeyerletirilir.

    KurucularBorderLayout ()Yeni bir borderlayout snf oluturur.

    BorderLayout (int hgap,int vgap)Yeni bir borderlayout snf oluturur.hgap(satr iinde bileenler aras boluk), vgap(stun iinde bileenler aras boluk) belirlenmi yenibir borderlayout snf oluturur.

    STANDART YERLEM YONETCLERNN KULLANILMAMASI (SETBOUNS METODU)Bunun iin setBouns metodu uygulanr.Ama nceden setLayout(null); tanmlanmaldr.Bileenlerde yle uygulanr.SetBounds(stun,satir,genilik,boy);Buton1.setBounds(10,20,50,60); gibi// Program Ad: flowlayout.java//Ornek Kod1..: FlowLayout yerleim yneticisinin kullanlmasi.

    import java.awt.*;import java.applet.*;import java.awt.event.*;public class flowlayout extends Applet {Button buton1,buton2;FlowLayout fl;public void init() {fl=new FlowLayout(0,10,10);setLayout(fl);buton1=new Button(" Ben Buton-1 ");buton2=new Button(" Ben Buton-2 ");add(buton1);add(buton2);}//init metodunun sonudur....}//flowlayout applet snfnn sonudur....// Program Ad: gridlayout.java//Ornek Kod2..: GridLayout yerleim yneticisinin kullanlmasi.

    21

  • 8/3/2019 Java-ile-daginik-programlama (1)

    22/31

    import java.awt.*;import java.applet.*;import java.awt.event.*;public class gridlayout extends Applet {Button buton1,buton2,buton3,buton4,buton5,buton6;GridLayout gl;public void init() {

    gl=new GridLayout(2,3);setLayout(gl);buton1=new Button(" Ben Buton-1 ");buton2=new Button(" Ben Buton-2 ");buton3=new Button(" Ben Buton-3 ");buton4=new Button(" Ben Buton-4 ");buton5=new Button(" Ben Buton-5 ");buton6=new Button(" Ben Buton-6 ");add(buton1); add(buton2); add(buton3);add(buton4); add(buton5); add(buton6);}//init metodunun sonudur....}//gridlayout applet snfnn sonudur....// Program Ad: borderlayout.java//Ornek Kod3..: BorderLayout yerleim yneticisinin kullanlmasi.

    import java.awt.*;import java.applet.*;import java.awt.event.*;public class borderlayout extends Applet {Button buton1,buton2,buton3,buton4,buton5,buton6;BorderLayout bl;public void init() {bl=new BorderLayout(10,10);setLayout(bl);buton1=new Button(" Ben Buton-1 ");buton2=new Button(" Ben Buton-2 ");buton3=new Button(" Ben Buton-3 ");buton4=new Button(" Ben Buton-4 ");buton5=new Button(" Ben Buton-5 ");add("North",buton1);add("South",buton2);add("East",buton3);add("West",buton4);add("Center",buton5);}//init metodunun sonudur....}//borderlayout applet snfnn sonudur....// Program Ad: setbounds.java//Ornek Kod4..: setbounds -layoutsuz- kullanmimport java.awt.*;import java.applet.*;public class setbounds extends Applet {Button buton1,buton2,buton3,buton4,buton5,buton6;public void init() {setLayout(null);

    buton1=new Button(" Ben Buton-1 ");buton2=new Button(" Ben Buton-2 ");buton3=new Button(" Ben Buton-3 ");add(buton1); add(buton2); add(buton3);buton1.setBounds(10,10,100,40);//50.stn 50. satra ve genilii 100 boyu 40buton2.setBounds(70,70,150,50);//70.stn 70. satra ve genilii 150 boyu 50buton3.setBounds(100,120,160,70);//100.stn 120. satra ve genilii 160 boyu}//init metodunun sonudur...}//setbounds applet snfnn sonudur....Threadlar genel olorak sanal CPU ya benzetilebilir. Bir thread sanal bir CPU ise bu sanal CPU daistediimiz programlar altrabiliriz. Yani bir thread alrken diger programlar altrabiliriz.stediimiz kadar thread kullanabiliriz. Bunlarn ynetilmesi ve hiyerarisi son derece nemlidir.Aagda threadlarn mantgn anlamak iin ufak bir kod bulunmaktadr. Bu threadn amac sonsuz birdong kullanlmtr. Bu dongnn degeri Label ile applette gsterilmitir. Bu thread alr iken baka

    ilemlerle uraabilirsiniz.

    22

  • 8/3/2019 Java-ile-daginik-programlama (1)

    23/31

    import java.awt.*;mport java.applet.*;publicclass thread_ornegi extends Applet implements Runnable {Thread kanal1;int dongu=0;Label l=new Label();

    publicvoid degis() {Font kalin = new Font ("TimesRoman",Font.BOLD,34);l.setText("Dng Durumu...: " + dongu);}//degis metodunun somudur...publicvoid start() {kanal1=new Thread(this);kanal1.start();add(l);} //start n sonudur....publicvoid stop() {kanal1.stop(); } //stop un sonudur...publicvoid run() {while(true) {

    try {kanal1.sleep(35);dongu++;} catch(InterruptedException e) {}degis();} } //run n sonuudur.....}//snfn sonudur.....imdide birden fazla threadn kullanmn grelim. Bunun iin ayr ayr classlarla threadlar kullanlr.Bu claass gerekli yerlerden agrlarak altrlr. Aagda bu konuyla ilgili bir kod bulunmaktadr. kiayr dng var. Bu dglerin degerleri Label ile applette gsterilmektedir.import java.awt.*;import java.applet.*;publicclass thread1 extends Applet implements Runnable {

    Thread thread1;int dongu1=0;Label l=new Label("Dong...: ");thread2 t2=new thread2();publicvoid degis() {Font kalin = new Font ("TimesRoman",Font.BOLD,24);l.setText("Dng Durumu...: " + dongu1 + " " + t2.dongu2);}publicvoid start() {thread1=new Thread(this);thread1.start();add(l);} //start n sonudur....

    publicvoid stop() {thread1.stop();} //stop un sonudur...publicvoid run() {while(true) {try {thread1.sleep(35);dongu1++;} catch(InterruptedException e) {}degis();}} //run n sonuudur.....}//snfn sonudur.....class thread2 extends Thread{Thread thread2;

    int dongu2=0;

    23

  • 8/3/2019 Java-ile-daginik-programlama (1)

    24/31

    public thread2() {thread2=new Thread(this);thread2.start();}//constrktur sonu...publicvoid run() {while(true) {

    try { thread2.sleep(750);dongu2++;} catch(InterruptedException e) {}}} //run n sonudur.....}//snfn sonudur.....Burada birinci kanaln sleep degeri 35, ikinci kanalan sleepi ise 750dir. Yani her 35 ve her 750milisaniyede bir bu threadlar altrlacaktr. Geri kalan zaman aralklarnda kullanc istedii ilemleriyapabilecektir. Bundan dolay makine kitlenmez.Aagdaki rnekte threadlarn en ok kulland alanlardan birisi olan animasyon rnegi verilmitir. Burnekte class dosyalarn bulunduu dizine *.gif dosyalarn koplayanz.import java.awt.*;import java.applet.*;publicclass animasyon extends Applet implements Runnable{

    Image resimler_dizisi[]=new Image[10];String resim_ata;Image resim;Thread thread;int i;publicvoid init() {for(i=0;i

  • 8/3/2019 Java-ile-daginik-programlama (1)

    25/31

    imdi bu alt yntemlerin ne ie yaradn bir grelim.mouseEnter(Event e,int x,int y) Mousun bileene girerken ki x ve y koordinatlar bulunabilir.mouseExit(Event e,int x,int y) Mousun bileeni terk ederken ki ki x ve y koordinatlar bulunabilir.mouseMove(Event e,int x,int y) Mousun eer hibir tuuna basmadan bileen zerinde hareketettirirseniz mousun bileen zerindeki x ve y koordinatlarn bulabilirsiniz.mouseDown(Event e,int x,int y) Mousu eer devaml olarak basl tutarsanz mousun o anki bileenzerindeki x ve y koordinatlarn bulabilirsiniz.mouseDrag(Event e,int x,int y) Mousun devaml olarak basl tutarsanz ve hareket ettirirsenizmousun o anki bileen zerindeki x ve y koordinatlarn bulabilirsiniz.mouseUp(Event e,int x,int y) Mousu basl durumdan brakrsanz ekerseniz mousun o anki bileenzerindeki x ve y koordinatlarn bulabilirsiniz.keyDown(evt e,evt.key) Normal bir tua basld anlalr.

    keyUp(evt e,evt.key) Baslan normal tuun brakldgn gsterir.action(Event e,Object sonuc) Baz eylemlerin gereklendiini belirtir. Eylemin gereklendii bileenve eylemin kendisi bu metodla anlalabilir.gotFocus(Event e,Object sonuc) Odaklanan bileeni gstermektedir.lostFocus(Event e,Object sonuc) Oda kaldrlm bileeni gstermektedir.imdi bu metodlarn en ok kullanlanlaryla ilgili rnekleri inceleyelim. Birinin kullanm anlalrsadigerlerin kullanmda anlalm olur.import java.awt.*;import java.applet.*;import java.awt.event.*;publicclass olay extends Applet {Label down,downxl,downyl,clicksayisi;Label up,upxl,upyl;

    Label move,movexl,moveyl;Label enter,enterxl,enteryl;

    HAND

    LEEVENT()

    Event.MOUSE_ENTER mouseEnter(Event e,int x,int y)

    Event.MOUSE_EXIT mouseExit(Event e,int x,int y)Event.MOUSE_MOVE mouseMove(Event e,int x,int y)Event.MOUSE_DOWN mouseDown(Event e,int x,int y)

    Event.MOUSE_DRAG mouseDrag(Event e,int x,int y)Event.MOUSE_UP mouseUp(Event e,int x,int y)Event.KEY_PRESS keyDown(evt e,evt.key)Event.KEY_ACTION keyDown(evt e,evt.key)Event.KEY_RELEASE keyUP(evt e,evt.key)Event.KEY_ACTION_RELEASE keyUp(evt e,evt.key)Event.ACTION_EVENT action(Event e,Object sonuc)Event.GOT_FOCUS gotFocus(event evt,Object sonuc)Event.LOST_FOCUS lostFocus(event evt,Object sonuc)

    25

  • 8/3/2019 Java-ile-daginik-programlama (1)

    26/31

    Label exit,exitxl,exityl;FlowLayout fl=new FlowLayout(FlowLayout.LEFT);publicvoid init() {setLayout(fl);down=new Label("Mouse DOWN Olayinda----> ");downxl=new Label("X Koordinati...: ");

    downyl=new Label("Y Koordinati...: ");clicksayisi =new Label("Click Sayisi..: ");add(down); add(downxl); add(downyl); add(clicksayisi);up=new Label("Mouse UP Olayinda----> ");upxl=new Label("X Koordinati...: ");upyl=new Label("Y Koordinati...: ");add(up); add(upxl); add(upyl);move=new Label("Mouse MOVE Olayinda----> ");movexl=new Label("X Koordinati...: ");moveyl=new Label("Y Koordinati...: ");add(move); add(movexl); add(moveyl);enter=new Label("Mouse ENTER Olayinda----> ");enterxl=new Label("X Koordinati...: ");

    enteryl=new Label("Y Koordinati...: ");add(enter); add(enterxl); add(enteryl);exit=new Label("Mouse EXT Olayinda----> ");exitxl=new Label("X Koordinati...: ");exityl=new Label("Y Koordinati...: ");add(exit); add(exitxl); add(exityl);}//init metodunun sonudur....publicboolean mouseDown(Event e,int x,int y) {//mouse basl durumda...downxl.setText("X Koordinati...: " + x);downyl.setText("Y Koordinati...: " + y);clicksayisi.setText("Click Sayisi.: " + e.clickCount);showStatus("aloo..: "+e.id);return true;

    }//mouseDown metodunun sonudur...publicboolean mouseUp(Event e,int x,int y) {//mouse cekili durumda...upxl.setText("X Koordinati...: " + x);upyl.setText("Y Koordinati...: " + y);showStatus("aloo..: "+e.id);return true;}//mouseUp metodunun sonudur...publicboolean mouseMove(Event e,int x,int y) {//mousun hi bir tusuna basmadan hareket ettirilmesi...movexl.setText("X Koordinati...: " + x);moveyl.setText("Y Koordinati...: " + y);return true;

    }//mouseMove metodunun sonudur...publicboolean mouseEnter(Event e,int x,int y) {//mausun bileene girerkenki konumu..enterxl.setText("X Koordinati...: " + x);enteryl.setText("Y Koordinati...: " + y);return true;} //mouseEnter metodunun sonudur...publicboolean mouseExit(Event e,int x,int y) {//mausun bileene karkenki konumu..exitxl.setText("X Koordinati...: " + x);exityl.setText("Y Koordinati...: " + y);return true;} //mouseEnter metodunun sonudur...} //olay appletin sonudur....

    kinci program orneide handleEvent() st metodunun kullanm ile ilgilidir.

    26

  • 8/3/2019 Java-ile-daginik-programlama (1)

    27/31

    import java.awt.*;import java.applet.*;import java.awt.event.*;public class olay2 extends Applet {Label lid1=new Label("Su anda - - nolu islemi yapiyorsunuz");Label lid2=new Label("");

    Button b1=new Button("Ben Buton-1-");Button b2=new Button("Ben Buton-2-");Button b3=new Button("Ben Buton-3-");Button b4=new Button("Ben Buton-4-");charchr;publicvoid init() {setLayout(new FlowLayout(FlowLayout.LEFT));add(b1); add(b2); add(b3); add(b4); add(lid1); add(lid2);}//init metodunun sonudur...publicboolean handleEvent(Event e) {lid1.setText("Su anda -"+e.id+" - nolu islemi yapiyorsunuz");if(e.id==Event.ACTION_EVENT) {showStatus("argman...: " + e.arg);

    }if(e.id==Event.MOUSE_DOWN) {lid2.setText("x Koordinati...: "+e.x+" Y Koordinati...: "+e.y);}return true;} //handleEvent n sonudur...} //olay2 applet snfnn sonudur...Aagdaki kodda keyDown metodu ile ilgili gzel bir rnektir. Bu kod baslan tuu applette gstermekteve eer baslan tular yn tular ise bu karakteri appletin istediimiz bir yerine tamaktadr.keyUp metodunun kullanm keyDown mtodu ile ayndr. kisinin arasndaki fark ise keyDown metodutua basl tutarsanz aktif hale gelmekte , keyUp metodu ise baslan tuu ektiinizde aktif olmaktadr.import java.awt.*;import java.applet.*;import java.awt.event.*;

    publicclass olay3 extends Applet {charbasilan_karakter;int yerx,yery;publicvoid init() {yerx=(size().width/2)-8;yery=(size().height/2)-16;}//init metodunun sonudur...publicboolean keyDown(Event e,int key) { //tua basldn gsterir.showStatus("Baslan tuun asc kodu.: " + key);switch(key) {case(Event.DOWN):yery+=7;break;

    case(Event.UP):yery-=7;break;case(Event.LEFT):yerx-=7;break;case(Event.RIGHT):yerx+=7;break;default:basilan_karakter=(char)key;}repaint();

    return true;} //keyDown metodunun sonudur...

    27

  • 8/3/2019 Java-ile-daginik-programlama (1)

    28/31

    publicvoid paint(Graphics graf) {if(basilan_karakter!=0) {graf.drawString(String.valueOf(basilan_karakter),yerx,yery);}} //paint metodunun sonudur...}//olay3 applet snfnn sonudur...

    GRAFKdrawLine(int x1,int y1,int x2,int y2)x1,y1 den x2,y2 ye cizgi izilir.import java.awt.*;import java.applet.*;publicclass grafik1 extends Applet {publicvoid paint(Graphics graf) {graf.drawLine(25,25,75,75);}//main ana blogun sonudur...}//grafik1 appletin sonudur....drawRect(int x1,int y1,int width,int height)Bir drtgen izer. Drtgenin st sol keleri x1,y1 dir. Buradan belirtilen genilik ve yksekliktedrtgeni izer.rnegin : graf.drawRect(25,25,75,75);

    fillRect(int x1,int y1,int width,int height)Bir drtgen izer. Ancak izilen drtgeni setColor la belirtilen renkle boyar. Drtgenin st sol kelerix1,y1 dir. Buradan belirtilen genilik ve ykseklikte drtgeni izer.drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)Bir drtgen izer. Burada arcWidth parametresi drt ke zerinde yayn yatay ap , int arcHeightparametresi ise drt ke zerindeki yayn dikey apdr.fillRect(int x,int y,int width,int height,int arcWidth,int arcHeight)Bir drtgen izer. Burada arcWidth parametresi drt ke zerinde yayn yatay ap , int arcHeightparametresi ise drt ke zerindeki yayn dikey apdr. DrawRoundRect metodundan tek fark iiboyaldr.drawOval(int x1,int y1,int width,int height)x,y,width,height parametreleriyle belirtilen drtgene uyacak ekilde bir daire izer.fillOval(int x1,int y1,int width,int height)

    x,y,width,height parametreleriyle belirtilen drtgene uyacak ekilde bir daire izer. Ancak ii setColor leset edilen renge boyalar.drawArc(int x1,int y1,int width,int height,int startangle,int arcAngle)Daire yahut elips izilir. x,y yayn merkezidir. Height yksekligi,width ise geniliidir. Startanglebalang acs,arcanglede yayn asdr.fillArc(int x1,int y1,int width,int height,int startangle,int arcAngle) Daire yahut elips izilir. AmasetColor la onceden belirlenmi renkte izer.

    YAZI , RENK,FONT KONTROLGraphics snf kullanarak applete yahut frameye yaz yazmak istedigimizde drawString() alt metodukullanlr.drawString(String string,int x,int y)string parametresi ile belirtilen stringi appletin yahut framenin x,y koordinatlarnda gsterir.

    import java.awt.*;import java.applet.*;publicclass grafik1 extends Applet {publicvoid paint(Graphics graf) {graf.drawString("Java Bir Harika",25,50);}//main ana blogun sonudur...}//grafik1 appletin sonudur....Bu kod 25.stun 50.satra (bu degerler piksel degerleridir) Java Bir Harika yazacaktr.Bu yazm olduumuz yaznn rengini deitirmek iinse Color snf kullanlr. Color snfda tpkGraphics snf gibi java.awt. nin bir alt snfdr (java.awt.Color)import java.awt.*;import java.applet.*;publicclass grafik1 extends Applet {

    publicvoid paint(Graphics graf) {graf.setColor(Color.blue);

    28

  • 8/3/2019 Java-ile-daginik-programlama (1)

    29/31

    graf.drawString("Java bir Harika",25,50);}//main ana blogun sonudur...}//grafik1 appletin sonudur....Burada setColor(Color.blue) ile renk seiminde bulunuyoruz.Standart renkleri bu ekilde kullanabiliriz. Standart renklerwhite,red,gray,black,darkGray,blue,yellow,cyan,pink,orange vs.vs.vs.

    Javada renklerin kontrol krmz,yeil,mavi renklerinin karmlar eklinde elde edilmektedir. ylekiyukardaki rnegi u ekilde yapalm.import java.awt.*;import java.applet.*;publicclass grafik1 extends Applet {publicvoid paint(Graphics graf) {Color renk=new Color(50,150,100);//Color (red,green,blue)graf.setColor(renk);graf.drawString("Java bir Harika",25,50);}//main ana blogun sonudur...}//grafik1 appletin sonudur....Tm appletin yada framenin zemin rengini deitirmekte mmkn. Bunun iin u metodlar kullanlr.

    setBackground(Color.green) yada setBackground(10,200,40)Yazm olduumuz yaznn fontunu deitirmekte mmkn. Bunun iin Font snf kullanlr. Fontsnfda tpk Graphics snf ve Color snf gibi java.awt. nin bir alt snfdr (java.awt.Font)Font snf u ekilde kullanlr:Font(String font_name,int style,int size)Bu parametreleri ve bunlarn alabilecekleri deerleri anlatlrsa:font_name...: Fontun ad belirtilir.Alacag deerler : TimesRoman,Courier,Sysbol,Dialog,Helvetica .....style............: Kullanlacak stil. Alacag degerler Font.BOLD (kaln stil) , Font.ITALIC (italicstil) ,Font.PLAIN (normal stil)size.............: Yaznn bykl belirtilir.Aagda font snfnn kullanm ile ilgili bir kod vardr.import java.awt.*;

    import java.applet.*;publicclass grafik1 extends Applet {publicvoid paint(Graphics graf) {Color renk=new Color(100,150,200);Font kalin_font=new Font("TimesRoman",Font.BOLD,40);graf.setColor(renk);graf.setFont(kalin_font);graf.drawString("Java bir Harika",25,50);}//main ana blogun sonudur...}//grafik1 appletin sonudur....

    RESM EKLEMEKJavada applete,frameye resim eklemek(resimle almak-resim gstermek) iin Image snf kullanlr.

    Bu snfn kurucusu Image() dr.Aagda bu konuyla ilgili bir ornek bulunmaktadr.import java.awt.*;import java.applet.*;publicclass grafik1 extends Applet {Image resim;publicvoid paint(Graphics graf) {resim=getImage(getCodeBase(),"spor.gif");graf.drawImage(resim,50,50,this);}//main ana blogun sonudur...}//grafik1 appletin sonudur....HTML JAVA CGI VRML SGML W.R. STANEKSistem Yaynclk, ISBN : 9753220111

    Kitapta birok konu ilendii iin Java'ya fazla deinilmemi. Java hakknda kltrel bilgi veriliyor. BenimJava'nn detayna ihtiyacm yok sadece nedir ne deildir reneyim diyorsanz bu kitap size gre, ayrca

    29

  • 8/3/2019 Java-ile-daginik-programlama (1)

    30/31

    HTML,CGI gibi konularda da bilgi sahibi olursunuz.

    Java Grup JavaBeta YayneviJava'ya yeni balamsanz, bu kitap tam size gre. erii fazla geni deil. Balang dzeyinde olan bukitap sade bi anlatma sahip. Fazla ayrntya girilmemi, zaten kitabn yarsndan fazlasda rneklerle

    doldurulmu. Bu rneklerin aklamas yok. Kitap Java 1.02 'yi baz alm. Java konusunda, trke ieriklive trkler tarafndan yazlm ilk kitap nvanna sahip. Java'ya yeni balyorsanz bu kitap size Java'nntemellerini retecektir. Ama fazla birey beklemeyin.

    Java 1.1 Programlama Klavuzu ( CD'li ) Sybex ( eviri )Alfa yayneviBu kitap daha ok Java ile daha nceden har neir olmular iin. Java temel bilgisi olduu varsaylarakkonular anlatlm. Java 1.1 ierisinde bulunan Servletlar, Beanler, Rmi, Javadoc gibi hemen hemen herkonuya deinilmi. Ayrca kitabn sonunda Java snf ktphanelerinin ierii, ok sk sorulan sorulardavar. Java'nn temellerini biliyorsanz, trke ierikli en iyi kitap.

    Yararl Java Scriptler:

    1)Bir kelimeyi link haline dntrdnzde kelimenin altn izili olarak grmekten bktysanz ve budurumdan kurtulmak istiyorsanz aada verilen yazlm sayfanza arasna ekleyiniz . . .

    2)Sayfanzda istediiniz gibi trke karakter kullanmak istiyorsunuz fakat browserler farkl karakterlergsteriyorsa sayfanzn arasna u cmleyi ekleyin. . .

    3)Sayfanzn giriinde ziyaretiye bir mesaj vermek ve bunun iinde kk bir uygulama penceresi almasnistiyorsunuz,ite o zaman verilen yazlm sayfanzda dilediiniz yere ekleyin. . .

    alert("yi Gezintiler ve uradnz iin teekkurler");

    4) Yaz,icon ,frame vb. bir blm sayfanzda gizlemek ve belirli linklere baslmak suretiyle grnpkaybolmasn istiyorsanz buyrun bu yazlm kullann. . .

    Sir Volt Home PageYaziyi goster

  • 8/3/2019 Java-ile-daginik-programlama (1)

    31/31

    300px;

    POSITION: absolute; TOP: 330px; WIDTH: 75px; Z-INDEX: 1"onclick="document.all.bodyframe.style.visibility='hidden'">Yaziyi gizle

    5)Linklerin zerine gelindiinde el yerine art iaretini grmek istiyorsanz ite bu yazlm kullann ve link

    cumlesini byle deitirin

    Art