The European Union’s “Making the Labour Market more Inclusive III” programme For “North Cyprus” Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module 2:Server Side Internet Programming Modül 2: Sunucu Tarafı Internet Programlaması Laboratuar Notları A project implemented by CyberSoft Bilişim Teknolojileri Ltd. This project is funded by European Union. The contents of this publication are the sole responsibility of Cybersoft Bilişim Teknolojileri Ltd. and can in no way be taken to reflect the views of the European Union. İçerik Bölüm 7: Java Applet..........................................................................................................................2 1.1 Applet Nedir?............................................................................................................................2 1.2 Java Applet Nedir?....................................................................................................................2 1.3 Applet Sınıfı ve Yaşam Döngüsü..............................................................................................3 1.4 Java Applet’lerin Avantajları ve Dezavantajları.......................................................................4 2. İlk Java appletinin Yaratılmasi ve Çalıştırılması...........................................................................5 3. Java Applet üzerine Form Nesnelerini Eklemek............................................................................8 3.1 TextArea Kullanımı...........................................................................................................9 3.2 TextField Kullanımı.........................................................................................................10 3.3 Buton Kullanımı...............................................................................................................11 3.4 Label Kullanımı................................................................................................................11 3.5 Checkbox Kullanımı..........................................................................................................12 Örnek 1: Textfield, Button ve Label içeren Kullanıcı adı ve şifre soran bir örnek bir uygulama......12 Örnek 2: Bütün Form nesnelerinin bir arada kullanıldığı bir örnek………………………………..13 Örnek 3: Form Nesnelerinin Hizalanmasına örnek bir uygulama......................................................15 Çalışma 1 : Aşağıdaki gibi bir form hazırlayınız…………………………………………….……..18 Calışma 2 : Basit bir hesap makinesi yaratınız……………………………………………………..18 Java Applet 1 1.1 Applet Nedir? Applet'ler bir web sayfası içinde sürekli değişken (dinamik) ve kullanıcı ile diyalog kuran programlardır. Bu programlar Netscape, Internet Explorer gibi JAVA'yı destekleyen ağ tarama programlama tarafından ekranda belirirler. 1.2 JAVA Applet nedir? JAVA Applet, JavaByteCode formunda dağıtılan küçük çaplı Java uygulamalarına verilen addır. Java Applet'ler, JavaVirtualMachine yüklü olan bilgisayarlarda web tarayıcısının içerisinden çalıştırılabilirler ya da bağımsız bir uygulama olan Sun'ın AppletViewer uygulaması ile de test edilebilirler. Browser'dan bağımsız çalışan JavaWebStart kullanılarak ta Java uygulamalarını çalıştırmak mümkündür. Java Applet'ler ilk kez 1995 yılında Java'nın ilk versionu ile hayatımıza girdi. Java Applet'ler genellikle Java Programlama Dili ile yazılırlar ama ayrıca derlendiğinde JavaByteCode üreten başka dillerle de yazılabilirler. (Örneğin, Jython. Jython, eski adı ile JPython, Java ile yazılmış bir Python programlama dili implementasyonudur.) JavaByteCode platform bağımsız olduğu için, aralarında Windows, Unix, Mac OS ve Linux platformlarının da bulunduğu birçok platformda çalıştırılabilir. 1.3 Applet sınıfı ve yaşam döngüsü Appletler yaşamlarında belirli evreler geçirirler. Bunlar ; a) init b) start c) stop d) destroy methodlarıdır. init : İnit metodu applet sınıfı yüklenmeden önce çalışan özel bir methodtur. Applet sınıfından kalıtılarak gelmiştir ve üzerine yazılarak ( Override ) işlem yapılır. Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar. Stop : Eğer çalışan bir applet dosyasının bulunuduğu sayfadan başka bir URL’ye geçiş yaparsanız veya sayfanızı tamamen kapatırsanız. Applet sınıfında ilk olarak “stop” methodu çalışır. Stop methodu da “Applet” sınıfından kalıtılarak gelmiştir ve üzerine yazılarak kullanılır. Destroy : Applet bulunan sayfalarınızdan birini kapattığınızda veya başka bir URL’ye geçtiğinizde, ilk olarak stop methodu ardından son olarak çöp toplayıcı method çalışır. Bu methodu tetikleyen method “destroy” methodudur. Destroy methodu Applet sınıfından kalıtılarak gelir ve genellikle üzerine yazılmaz. Bir applet sınıfının hayat döngüsü aşağıdaki gibi olur, stop edilmiş bir applet dosyası init edilmeden tekrar start edilebilir. 2 CREATOR -> INIT -> START <--> STOP-> DESTROY Çizim methodları : Paint – Update – Repaint Paint : bu method parametre olarak Graphics sınfından bir nesne alır, JVM tarafından gönderilen cizim nesnesi kullanılarak Appletler üzerine çizim işlemleri yapılabilir. Update : Bu method da aynı paint methodu gibi çalışır, yalnız paint methodundan farkı bu method çağrıldığı zaman çalışır ve yaptığı çizimleri önceki çizimlerin üzerine geçirir. Oysa paint methodu çağrılmasa da varsayılan olarak genellikle start methodundan sonra çalışır, ayrıca paint methodu çizim yaparken öncek çizimleri siler. Repaint : Paint methodunu bir daha çağrılmasını sağlar. Kısacası sayfanın yenilenmesi sürecini işletir diyebiliriz. 1.4 JavaApplet'in Avantajlari ve Dezavantajlari Avantajları: Linux, Windows ve MacOS üzerinde çalışmasını sağlamak kolaydır (cross-platform) Makina üzerinde aynı anda farklı Java versionaları kurulu olabileceği gibi, bir Java Applet, makinaya kurulu herhangi bir Java versionu ile çalıştırılabilir. Çalışırken, sadece son versiona bakılmayacaktır. Fakat JavaApplet yeni version bir JRE istiyorsa ve bu version makinada kurulu değil ise öncelikle gerekli JRE kurulmalıdır. Kullanıcının onaylaması durumunda uygulamanın çalıştırıldığı makinaya tam erişim sağlama imkanına sahiptir. Dezavantajları: Java plug-in yüklenmeden bir Java Applet'i çalıştırmak mümkün değildir. 64 bitlik sistemlerde Sun tarafından yazılmış bir Java plug-in yoktur. Fakat, çeşitli open source projeler bu açığı kapatmaya çalışıyorlar. Java Virtual Machine olmadan çalışamaz, bu da ilk çalışma sırasında önce JVM hafızaya çıkacağı için bekleme süresini biraz uzatacaktır. Applet'ler JRE'nin belli bir versionuna ihtiyaç duyabilirler. 2. İlk Java appletinin Yaratılmasi ve Çalıştırılması Bu bolumde bir java appletinin nasil yaratilip, calistirilacagini gorecegiz. 1. File > New Project Java Java Application seciniz ve next’e basiniz. 3 2. Yeni bir applet yaratmak icin, File new file seciniz. 3. JApplet seciniz. 4 4. Class Name kismindan appletinize NewJApplet ismini yaziniz ve Finish’e basiniz. 5. Kodu yaziniz. 5 6. Shift + F6 veya Debug’dan calistiriniz. 7. Java Applet’inizin goruntusu iste boyle olacaktir. 6 8. HTML olarak açmak için; NetBeansProjects JavaLibrary1 build'den .html uzantılı dosyayı çalıştırırız. 7 3. Java Applet üzerine Form Nesnelerini Eklemek Form olusturmak için bize gerekli olan nesneler sunlardır; Label TextField TextArea CheckBox Buton Bu nesneleri ilk önce olusturmamız gereklidir. Daha sonra olusturdugumuz nesnelerin gorunmesini saglamak icin add(); komutunu kullanmamız gerekiyor.Bu komut sayesinde olusturdugumuz nesneler applet uzerınde gozukucektir.Bu komutla eklemezsek kesinlikle nesnelerimiz gözükmüycektir. 3.1 TextArea Kullanımı Textarea Kullanıcıların form nesnelerine görüş ve fikirlerini yazdıgı uzun metinli form nesnesidir. 8 import java.awt.*; import java.applet.Applet; public class TextAreaSimpleTest extends Applet { TextArea disp; public void init() { disp = new TextArea("Code goes here", 10, 30); add(disp); } } 3.2 TextField: TextField sınıfı, kullanıcı tarafından bir ya daha çok satır girşi yapılması düşünülen alanları tanımlamak için kullanılır. Burdaki satır sayısı TextField yaratılırken atanan maksimum değere bağlıdır. import java.awt.*; import java.applet.Applet; public class TextFieldSimpleTest extends Applet { public void init() { TextField f1 = new TextField("type something"); 9 add(f1); } } 3.3 Buton: Buton tek satırlık, fare ile tıklanabilen bir label’dır. import java.awt.*; import java.applet.Applet; public class ButtonTest extends Applet { public void init() { Button button = new Button("OK"); add(button); } } 3.4 Label : import java.awt.*; import java.applet.Applet; public class LabelTest extends Applet { public void init() { add(new Label("A label")); 10 // right justify next label add(new Label("Another label", Label.RIGHT)); } } 3.5 Checkbox: Checkbox üzerinde basılan buton bulunan bir label’dır. Checkbox basıldığı zaman true basılmadığı zaman ise false değerini alır. Başlangıçta false olarak tanımlanır. import java.awt.*; import java.applet.Applet; public class CheckboxSimpleTest extends Applet { public void init() { Checkbox m = new Checkbox("Allow Mixed Case"); add(m); } } Örnek 1: Textfield, Button ve Label içeren Kullanıcı adı ve şifre soran bir örnek bir uygulama import java.awt.*; import java.applet.Applet; public class Layouts extends Applet { TextField tf1; TextField tf2; Button bt1; Label lb1; Label lb2; Panel p1; 11 public void init() { p1=new Panel(); p1.setBackground(Color.yellow); p1.setLayout(new FlowLayout(FlowLayout.LEFT)); lb1=new Label("Kullanıcı Adı: "); tf1=new TextField(25); lb2=new Label("Şifreniz: "); tf2=new TextField(25); bt1=new Button(" OK "); p1.add(lb1); p1.add(tf1); p1.add(lb2); p1.add(tf2); p1.add(bt1); add(p1); } } Örnek 2: Bütün Form nesnelerinin bir arada kullanıldığı bir örnek package NewApplet; //kendiliğinden gelir buna herhangi bir düzenleme gerekmez import java.awt.*; import java.applet.Applet; /*yukarı daki 2 satırda applet'ımıza kulalndığımız kodlara bağlı olarak gerekli olan kütüphaneleri ekledikl*/ public class NewApplet extends Applet { //classımızı oluşturduk bu class adı dosya adıyla aynı olmalıdır public void init() { setBackground(Color.white);//applet'ımızın arkaplan renginiz seçtik Label lbKadi = new Label("kullanıcı adınızı girin; "); /*burada "lbKadi" nesnemizin etiketidir ve programın devamında bu nesneyi kontrol etmek için bu adı kullanacağız isimdeki "lb" bölümü 12 nesnenin türünüün Label olduğunu gösterir "Kadi" bölümü nesnenin adıdır*/ Label lbSifre = new Label("şifrenizi girin; "); Label IbSifre2 = new Label("şifrenizi doğrulayın;"); Label lbmail1 = new Label("mail adresnizi girin; "); Label lbmail2 = new Label(" mail adresinizi doğrulayın; "); Label lbCinsiyet = new Label("Cinsiyetin; "); Label lbprogram = new Label("bildiğiniz diller; "); Label lbdogum = new Label("doğum tarihinizi girin;"); //yukarıdaki 8 kod satırında applet'mıza gerekli LABEL'ları oluşturduk TextField txtKadi = new TextField(10); /*burada "txtkadi" nesnemizin etiketidir ve programın devamında bu nesneyi kontrol etmek için bu adı kullanacağız isimdeki "txt" bölümü nesnenin türünün Textfield olduğunu gösterir "Kadi" bölümü ise nesnenin adıdır */ TextField txtSifre = new TextField(10); TextField txtSifre2 = new TextField(10); TextField txtmail1 = new TextField(10); TextField txtmail2 = new TextField(10); TextField txtd1 = new TextField(2); TextField txtd2 = new TextField(2); TextField txtd3 = new TextField(4); TextField txtdiger = new TextField(10); //yukarıdaki 9 kod satırında applet'mıza gerekli TEXTFİELD'ları oluşturduk CheckboxGroup cbCins = new CheckboxGroup(); // bu satırda ise "cbCins" adında yeni bir checkboc gubu oluşturduk Checkbox cbjava = new Checkbox("java - jscript"); /*burada "cbjava" nesnemizin etiketidir ve programın devamında bu nesneyi kontrol etmek için bu adı kullanacağız isimdeki "cb" bölümü nesnenin türünün CHECKBOX olduğunu gösterir "java" bölümü ise nesnenin adıdır ("java - jscript") bölümünde "" içinde yazanlar checkbox'ımızın içinde yazacak olanlarıdr*/ Checkbox cbphp = new Checkbox("php - mysql"); Checkbox cbasp = new Checkbox("asp - asp.net"); Checkbox cbyok = new Checkbox("hiçbir dili bilmiyorum"); Checkbox cbdiger = new Checkbox("diğer"); Button gonderbtn = new Button("Gönder"); /*burada "gonder" nesnemizin etiketidir ve programın devamında bu nesneyi kontrol etmek için bu adı kullanacağız buton eklerken buton ismine herhangi özel bir değer eklememize gerek yoktur(cbjava daki "cb" gibi) ("Gönder") bölümünde "" içinde yazanlar buton'umuzun i üstünde yazılacaktır*/ 13 Button temizlebtn = new Button("temizle"); /*yukarıdaki 2 kod satırında applet'mıza gerekli buton'ları Oluşturduk*/ add(lbKadi); add(txtKadi); add(lbSifre); add(txtSifre); add(IbSifre2); add(txtSifre2); add(lbmail1); add(txtmail1); add(lbmail2); add(txtmail2); add(lbdogum); add(txtd1); add(txtd2); add(txtd3); add(lbCinsiyet); add(new Checkbox("Erkek ", cbCins, true)); add(new Checkbox("Kadin ", cbCins, false)); /*yukarıdaki 2 satırda cbCins checkbox grubunun içine 2 tane checkbox oluşturduk ve aynı zamanda bunları applet'ımıza eklemiş olduk*/ add(lbprogram); add(cbjava); add(cbphp); add(cbasp); add(cbyok); add(cbdiger) ; add(txtdiger); add(gonderbtn); add(temizlebtn); /*yukarıdaki 26 kod satırında daha önceden oluşturduğumuz nesneleri applet'ımızın içine ekledik "add" eklememiz için gerekli olan komut veparantez içindekilerde nesnelerimizin etiketleri yani tür ve isimlerini içinde barındıran tam isimleridir*/ } } 14 Örnek 3: Form Nesnelerinin Hizalanmasına örnek bir uygulama import java.awt.*; import java.applet.Applet; public class NewApplet extends Applet { Label UserNameL = new Label("Kullanıcı Adı"); Label PassWordL = new Label("Şifre"); TextField UserNameT = new TextField(25); TextField PassWordT = new TextField(25); Button Tamam = new Button("Tamam"); 15 GridBagLayout Hizalayici = new GridBagLayout(); GridBagConstraints HizalayiciAyar = new GridBagConstraints(); public void ElemanYerlestir(int Xekseni, int Yekseni, int Genislik, int Yukseklik, Component Eleman) { HizalayiciAyar.gridx = Xekseni; HizalayiciAyar.gridy = Yekseni; HizalayiciAyar.gridwidth = Genislik; HizalayiciAyar.gridheight = Yukseklik; Hizalayici.setConstraints(Eleman, HizalayiciAyar); } public void init() { setLayout(Hizalayici); HizalayiciAyar.insets = new Insets(2, 2, 2, 2); //HizalayiciAyar.fill = GridBagConstraints.BOTH; ElemanYerlestir(0, 0, 5, 1, UserNameL); add(UserNameL); ElemanYerlestir(6, 0, 5, 1, UserNameT); add(UserNameT); ElemanYerlestir(0, 1, 5, 1, PassWordL); add(PassWordL); ElemanYerlestir(6, 1, 5, 1, PassWordT); add(PassWordT); ElemanYerlestir(6, 2, 2, 1, Tamam); add(Tamam); } } 16 Java Applete Resim Eklemek JAaplet ta birden fazla resim ekleme bu şekilde olur. import java.awt.FlowLayout; import java.awt.Image; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JApplet; import javax.swing.JLabel; public class NewJApplet extends JApplet { JLabel Deneme = new JLabel(); ImageIcon Resim = new ImageIcon(); JLabel Deneme2 = new JLabel(); ImageIcon Resim2 = new ImageIcon(); JLabel Deneme3 = new JLabel(); ImageIcon Resim3 = new ImageIcon(); public void init() { setLayout(new FlowLayout()); Deneme.setIcon(new ImageIcon(getImage(getDocumentBase(), "a.gif"))); Deneme2.setIcon(new ImageIcon(getImage(getDocumentBase(), "b.gif"))); Deneme3.setIcon(new ImageIcon(getImage(getDocumentBase(), "c.gif"))); add(Deneme); add(Deneme2); add(Deneme3); } } ilk once resmi nereye kaydedicegimiz ayarlanır. 17 kaydet dedikten sonra resmi netbeans projects ye gireriz.. ve ordan hangi proje ise o projenın icine gireriz 18 ve enson olarak build dosyasına girerek resimleri oraya kaydederiz. Dosyalar buraya kaydedilmıstir. 19 sonucta 3 ayrı resmi bir JApplet uygulamasında kullanmış olduk. Çalışma 1 : Aşağıdaki gibi bir form hazırlayınız. 20 Calışma 2 : Basit bir hesap makinesi yaratınız. 21