İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Mustafa Hadi Dilek
hadi@ulakbim.gov.tr

Java Appletleri ve Web Programlama

Java ile web üzerinden program işletimi appletler aracılığı ile mümkündür.

Applet'ler ve HTML

Web için yazılan Java uygulamaları genellikle applet olarak bilinir. HTML dökümanı kullanıcının tarayıcısına çekilince HTML içine gömülmüş applet tanımlayıcı parça yorumlanır. Tarayıcı burada verilen bilgileri kullanarak appleti yükler ve çalıştırır. HTML içinde applet çağırma örneği:

<applet codebase="http://www.sun.com" code=Main width=300 height=200>
<param name=name1 value="value1">
  You do not have a Java enabled browser
</applet>

Burada kullanılan <applet> etiketi (tag) içinde 'codebase' özelliği (attribute) appletin bulunduğu dizinin tam adresini, 'code' etiketi çağrılan applet sınıfının adını gösterir. <param> etiketi içinde applete girecek parametreler adı ve değeri ile birlikte konur..

Güvenlik

Appletler ağ üzerinden çekilip yerel makina üzerinde çalıştırıldığı için programcılar tarafından kötü amaçlı kullanılabilirlerdi. Bu nedenle uygulamalara göre daha fonksiyonları sınırlanmıştır.

Appletler ve Uygulamalar

Appletleri uygulamalardan ayıran en önemli özeellik 'Applet' sınıfından bir ana sınıfa sahip olması gerekmesidir. 'Applet' sınıfı 'panel' sınıfını devralan bir sınıf olduğu için bu bileşenin tüm özelliklerini içerir. Bu nedenle standart olarak 'FlowLayout' yerleşim özelliği gösterir. 'Applet' sınıfının programcılar tarafından üstüne yazılması (overriding) gereken dört metodu vardır:

Örneğin kullanıcı tarayıcısında Java appleti içeren bir sayfa açınca appletin 'init' ve sonra da 'start' metodları çağrılır. Kullanıcı sayfa içi bir bağlantıya tıklayınca appletin 'stop' metodu çağrılarak applet geçici olarak durdurulur. 'init' ile applete ayrılan kaynaklar hala tutulmaktadır. Daha sonra kullanıcı tarayıcısını kapatmadan tekrar applet içeren sayfaya dönerse appletin 'init' metodu çağrılmadan 'start' metodu çağrılır. Appleti içeren sayfa veya tarayıcı kapatılınca 'destroy' metodu çalıştırılarak appletin elindeki tüm kaynaklar sisteme iade edilir.

Applet'lerle Sunucu Kaynaklarına Ulaşım

Appletler sunucu makinalarda dağıtık bir şekilde duran kaynakların alınıp kullanılması için çeşitli metodlar kullanır. Bunlardan bazıları:

Döküman ve imaj nesnesi gibi verilere URL (Evrensel Kaynak Yer Belirticileri - Universal Resource Locators) denilen adreslerle erişilebilir. Örnek bir URL aşağıdaki gibi olabilir:

http://hadi.ulakbim.gov.tr/documents/programming/index.myhtml

Burada görüldüğü gibi URL'ler üç parçadan oluşurlar.

URL'leri giriş-çıkış stremları gibi gelişmiş araçlarla desteklenmiş olarak kullanabilmek için 'java.net' paketinde 'URL' sınıfı tanımlanmıştır. Bu sınıfı uygulamamızda nesneleştirdikten sonra giriş, çıkış streamlarını kullanarak dosya download ve upload işlevlerini gerçekleştirebileceğimiz gibi kendimize özgü bir protokol kurgusu oluşturup kullanabilmemiz bile mümkündür. URL sınıfı kullanılan bir örnek aşağıda verilmiştir:

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import java.net.*;
  2 import java.io.*;
  3 class ReadURL {
  4   public static void main (String [ ] args) {
  5     try {
  6       URL address = new URL(args[0]);
  7       InputStreamReader iread = new InputStreamReader(address.openStream( ));
  8       BufferedReader in = new BufferedReader(iread);
  9       String line = in.readLine( );
 10       while (line != null) {
 11         System.out.println(line);
 12         line = in.readLine( );
 13       }
 14       in.close( );
 15     } catch (MalformedURLException e) {
 16       System.out.println("URL exception " + e);
 17     } catch (IOException e) {
 18       System.out.println("I/O exception " + e);
 19     }
 20   }
 21 }

Burada komut satırından verilen adresteki dökümanı satır satır okuyup ekrana basan bir uygulama gösterilmiştir. Dikkati çeken bir nokta da girilen URL'in hatalı olması durumunda URL sınıfının inşa edicisinin 'MalformedURLException' üretebileceğidir.

Uygulamalar ve Appletlerin Birleştirilmesi

Appletler sınıf tanımları içindeki statik metodları görmezden gelirler. Bu özellik kullanılarak yaratılacak programların hem applet hem de uygulama olarak çalıştırılabilmesi sağlanabilir. Aşağıda buna örnek verilmiştir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import java.applet.*;
  2 import java.awt.*;
  3 import java.awt.event.*;
  4 public class PaintApplet extends Applet {
  5   // executed for applications
  6   // ignored by applet class
  7   public static void main (String [ ] args) {
  8     Frame world = new PaintApplet( ).application( );
  9     world.show( );
 10   }
 11   private Frame application( ) {
 12     return new AppletFrame (this);
 13   }
 14   private class AppletFrame extends Frame {    public AppletFrame (Applet p) {
 15       setTitle("Paint Application");
 16       setSize (400, 300);
 17       p.init( ); p.start( );
 18       add("Center", p);
 19     }
 20   }
 21 ... // remainder as before
 22 }

Burada program, application olarak çağrılmış ise 'Applet' sınıfı içindeki 'main' statik metodu çağrılır. Bu metod 'application' metodunu çağırarak bir 'AppletFrame' türü nesne yaratır ve 'main' metoduna bu nesneyi iletir. Ancak bu nesne aslında 'Frame' sınıfını devralmış ve içine de applet nesnesinin kendisi sanki bir panel ekleniyormuş gibi eklenmiştir. Dolayısıyla appletimiz bir uygulama çerçevesinin (frame) içinde karşımıza gelecektir. Artık 'Applet' sınıfının 'init' ve 'start' metodları otomatik çağrılamayacağı için programın başlangıcında yapmasını istediğimiz işleri yaptırmak için bizim tarafımızdan açık olarak (explicitly) çağrılmışlardır.

Eğer program applet olarak çağrılırsa 'main' metodu hiç çağrılmayacak, 'AppletFrame' nesnesi yaratılmayacak ve applet normal işleyişinde çalışacaktır.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır