Java - Uygulama Temelleri

Bir appletWeb tarayıcısında çalışan bir Java programıdır. Bir uygulama, tam olarak işlevsel bir Java uygulaması olabilir, çünkü emrinde tüm Java API'sine sahiptir.

Bir uygulama ile bağımsız bir Java uygulaması arasında aşağıdakiler dahil bazı önemli farklılıklar vardır:

  • Bir uygulama, java.applet.Applet sınıfını genişleten bir Java sınıfıdır.

  • Bir uygulamada main () yöntemi çağrılmaz ve uygulama sınıfı main () öğesini tanımlamaz.

  • Applet'ler bir HTML sayfasına gömülecek şekilde tasarlanmıştır.

  • Bir kullanıcı, bir uygulama içeren bir HTML sayfasını görüntülediğinde, uygulamanın kodu, kullanıcının makinesine indirilir.

  • Bir uygulamayı görüntülemek için bir JVM gereklidir. JVM, bir Web tarayıcısı eklentisi veya ayrı bir çalışma zamanı ortamı olabilir.

  • Kullanıcının makinesindeki JVM, uygulama sınıfının bir örneğini yaratır ve uygulamanın ömrü boyunca çeşitli yöntemleri çağırır.

  • Uygulamaların Web tarayıcısı tarafından zorunlu kılınan katı güvenlik kuralları vardır. Bir uygulamanın güvenliğine genellikle sanal alan güvenliği denir ve uygulamayı bir sanal alanda oynayan bir çocukla, uyulması gereken çeşitli kurallarla karşılaştırır.

  • Uygulamanın ihtiyaç duyduğu diğer sınıflar tek bir Java Arşivi (JAR) dosyasında indirilebilir.

Bir Applet'in Yaşam Döngüsü

Applet sınıfındaki dört yöntem, herhangi bir ciddi uygulama geliştirdiğiniz çerçeveyi size verir -

  • init- Bu yöntem, uygulamanız için gerekli olan tüm başlatma işlemleri için tasarlanmıştır. Uygulama etiketi içindeki param etiketleri işlendikten sonra çağrılır.

  • start- Bu yöntem, tarayıcı başlatma yöntemini çağırdıktan sonra otomatik olarak çağrılır. Ayrıca, kullanıcı diğer sayfalara gittikten sonra uygulamayı içeren sayfaya her döndüğünde çağrılır.

  • stop- Bu yöntem, kullanıcı uygulamanın bulunduğu sayfadan çıktığında otomatik olarak çağrılır. Bu nedenle, aynı uygulamada tekrar tekrar çağrılabilir.

  • destroy- Bu yöntem yalnızca tarayıcı normal şekilde kapandığında çağrılır. Applet'lerin bir HTML sayfasında yaşaması amaçlandığından, normalde bir kullanıcı uygulamayı içeren sayfadan ayrıldıktan sonra kaynakları geride bırakmamalısınız.

  • paint- start () yönteminden hemen sonra ve ayrıca uygulamanın tarayıcıda kendini yeniden boyaması gerektiğinde çağrılır. Paint () yöntemi aslında java.awt'tan miras alınır.

Bir "Merhaba Dünya" Uygulaması

Aşağıda HelloWorldApplet.java adlı basit bir uygulama yer almaktadır -

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

public class HelloWorldApplet extends Applet {
   public void paint (Graphics g) {
      g.drawString ("Hello World", 25, 50);
   }
}

Bu import ifadeleri, sınıfları uygulama sınıfımızın kapsamına getirir -

  • java.applet.Applet
  • java.awt.Graphics

Bu içe aktarma ifadeleri olmadan, Java derleyicisi, uygulama sınıfının başvurduğu Applet ve Graphics sınıflarını tanımaz.

Applet Sınıfı

Her uygulama, java.applet.Applet sınıfının bir uzantısıdır . Temel Applet sınıfı, türetilmiş bir Applet sınıfının tarayıcı bağlamından bilgi ve hizmetler elde etmek için çağırabileceği yöntemler sağlar.

Bunlar, aşağıdakileri yapan yöntemleri içerir -

  • Uygulama parametrelerini alın
  • Uygulamayı içeren HTML dosyasının ağ konumunu alın
  • Uygulama sınıfı dizininin ağ konumunu alın
  • Tarayıcıda bir durum mesajı yazdırın
  • Bir görüntüyü getir
  • Bir ses klibi getir
  • Bir ses klibi oynatın
  • Uygulamayı yeniden boyutlandırın

Ek olarak, Applet sınıfı, görüntüleyicinin veya tarayıcının uygulama hakkında bilgi aldığı ve uygulamanın yürütülmesini kontrol ettiği bir arayüz sağlar. İzleyici şunları yapabilir:

  • Uygulamanın yazarı, sürümü ve telif hakkı hakkında bilgi isteyin
  • Uygulamanın tanıdığı parametrelerin açıklamasını isteyin
  • Uygulamayı başlatın
  • Uygulamayı yok edin
  • Uygulamanın yürütülmesini başlatın
  • Uygulamanın yürütülmesini durdurun

Applet sınıfı, bu yöntemlerin her birinin varsayılan uygulamalarını sağlar. Bu uygulamalar gerektiğinde geçersiz kılınabilir.

"Merhaba, Dünya" uygulaması olduğu haliyle tamamlanmıştır. Geçersiz kılınan tek yöntem boyama yöntemidir.

Bir Applet Çağırmak

Bir uygulama, yönergelerin bir HTML dosyasına gömülmesi ve dosyanın bir uygulama görüntüleyicisi veya Java'nın etkin olduğu bir tarayıcı aracılığıyla görüntülenmesi yoluyla çağrılabilir.

<applet> etiketi, bir uygulamayı bir HTML dosyasına yerleştirmenin temelidir. Aşağıda, "Merhaba, Dünya" uygulamasını çağıran bir örnek verilmiştir -

<html>
   <title>The Hello, World Applet</title>
   <hr>
   <applet code = "HelloWorldApplet.class" width = "320" height = "120">
      If your browser was Java-enabled, a "Hello, World"
      message would appear here.
   </applet>
   <hr>
</html>

Note- HTML'den applet çağırma hakkında daha fazla bilgi edinmek için HTML Applet Etiketine başvurabilirsiniz .

<applet> etiketinin kod niteliği gereklidir. Çalıştırılacak Applet sınıfını belirtir. Bir uygulamanın çalıştığı panelin başlangıç ​​boyutunu belirtmek için genişlik ve yükseklik de gereklidir. Uygulama yönergesi bir </applet> etiketiyle kapatılmalıdır.

Bir uygulama parametre alırsa, <applet> ile </applet> arasına <param> etiketleri eklenerek parametreler için değerler geçirilebilir. Tarayıcı, uygulama etiketleri arasındaki metni ve diğer etiketleri göz ardı eder.

Java içermeyen tarayıcılar <applet> ve </applet> 'i işlemez. Bu nedenle, uygulama ile ilgili olmayan etiketler arasında görünen her şey, Java'nın etkin olmadığı tarayıcılarda görülebilir.

Görüntüleyici veya tarayıcı, belgenin konumunda derlenmiş Java kodunu arar. Aksini belirtmek için, gösterildiği gibi <applet> etiketinin kod tabanı niteliğini kullanın -

<applet codebase = "https://amrood.com/applets" code = "HelloWorldApplet.class"
   width = "320" height = "120">

Bir uygulama, varsayılandan farklı bir pakette bulunuyorsa, paket / sınıf bileşenlerini ayırmak için tutma paketi kod özniteliğinde nokta karakteri (.) Kullanılarak belirtilmelidir. Örneğin -

<applet  = "mypackage.subpackage.TestApplet.class" 
   width = "320" height = "120">

Uygulama Parametrelerini Alma

Aşağıdaki örnek, bir uygulamanın belgede belirtilen kurulum parametrelerine nasıl yanıt vereceğini gösterir. Bu uygulama, siyah ve ikinci bir renk dama tahtası desenini gösterir.

Her karenin ikinci rengi ve boyutu, belge içindeki uygulamaya parametreler olarak belirtilebilir.

CheckerApplet parametrelerini init () yönteminde alır. Paint () yönteminde parametrelerini de alabilir. Bununla birlikte, değerleri her yenilemede almak yerine uygulamanın başlangıcında bir kez almak ve ayarları kaydetmek uygun ve etkilidir.

Uygulama görüntüleyicisi veya tarayıcı, çalıştırdığı her uygulamanın init () yöntemini çağırır. İzleyici, uygulamayı yükledikten hemen sonra init () 'i çağırır. (Applet.init () hiçbir şey yapmamak için uygulanır.) Özel başlatma kodunu eklemek için varsayılan uygulamayı geçersiz kılın.

Applet.getParameter () yöntemi, parametrenin adı verilen bir parametreyi getirir (bir parametrenin değeri her zaman bir dizedir). Değer sayısal veya karakter olmayan başka bir veriyse, dizenin ayrıştırılması gerekir.

Aşağıdaki CheckerApplet.java'nın bir iskeletidir -

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

public class CheckerApplet extends Applet {
   int squareSize = 50;   // initialized to default size
   public void init() {}
   private void parseSquareSize (String param) {}
   private Color parseColor (String param) {}
   public void paint (Graphics g) {}
}

İşte CheckerApplet init () ve özel parseSquareSize () yöntemleri -

public void init () {
   String squareSizeParam = getParameter ("squareSize");
   parseSquareSize (squareSizeParam);
   
   String colorParam = getParameter ("color");
   Color fg = parseColor (colorParam);
   
   setBackground (Color.black);
   setForeground (fg);
}

private void parseSquareSize (String param) {
   if (param == null) return;
   try {
      squareSize = Integer.parseInt (param);
   } catch (Exception e) {
      // Let default value remain
   }
}

Uygulama, squareSize parametresini ayrıştırmak için parseSquareSize () öğesini çağırır. parseSquareSize (), bir dizeyi ayrıştıran ve bir tamsayı döndüren Integer.parseInt () kitaplık yöntemini çağırır. Integer.parseInt (), argümanı geçersiz olduğunda bir istisna atar.

Bu nedenle, parseSquareSize (), uygulamanın hatalı girdide başarısız olmasına izin vermek yerine istisnaları yakalar.

Uygulama, color parametresini bir Color değerine ayrıştırmak için parseColor () öğesini çağırır. parseColor (), parametre değerini önceden tanımlanmış bir rengin adıyla eşleştirmek için bir dizi dize karşılaştırması yapar. Bu uygulamanın çalışması için bu yöntemleri uygulamanız gerekir.

Applet Parametrelerini Belirleme

Aşağıda, içinde CheckerApplet'in gömülü olduğu bir HTML dosyası örneği verilmiştir. HTML dosyası, <param> etiketi aracılığıyla her iki parametreyi de uygulamaya belirtir.

<html>
   <title>Checkerboard Applet</title>
   <hr>
   <applet code = "CheckerApplet.class" width = "480" height = "320">
      <param name = "color" value = "blue">
      <param name = "squaresize" value = "30">
   </applet>
   <hr>
</html>

Note - Parametre adları büyük / küçük harfe duyarlı değildir.

Apletlere Uygulama Dönüşümü

Grafiksel bir Java uygulamasını (yani, AWT'yi kullanan ve Java program başlatıcısı ile başlayabileceğiniz bir uygulama) bir web sayfasına yerleştirebileceğiniz bir uygulamaya dönüştürmek kolaydır.

Aşağıda, bir uygulamayı bir uygulamaya dönüştürmek için belirli adımlar yer almaktadır.

  • Uygulama kodunu yüklemek için uygun etiketi içeren bir HTML sayfası oluşturun.

  • JApplet sınıfının bir alt sınıfını sağlayın. Bu sınıfı herkese açık yapın. Aksi takdirde, uygulama yüklenemez.

  • Uygulamadaki ana yöntemi ortadan kaldırın. Uygulama için bir çerçeve penceresi oluşturmayın. Uygulamanız tarayıcının içinde görüntülenecektir.

  • Herhangi bir başlatma kodunu çerçeve penceresi yapıcısından uygulamanın init yöntemine taşıyın. Uygulama nesnesini açıkça oluşturmanıza gerek yoktur. Tarayıcı bunu sizin için somutlaştırır ve init yöntemini çağırır.

  • SetSize çağrısını kaldırın; apletler için boyutlandırma, HTML dosyasındaki genişlik ve yükseklik parametreleriyle yapılır.

  • SetDefaultCloseOperation çağrısını kaldırın. Bir uygulama kapatılamaz; tarayıcı çıktığı zaman sona erer.

  • Uygulama setTitle'ı çağırırsa, yönteme yapılan çağrıyı ortadan kaldırın. Applet'lerin başlık çubukları olamaz. (Elbette, HTML başlık etiketini kullanarak web sayfasının kendisine başlık verebilirsiniz.)

  • SetVisible (true) 'yu çağırmayın. Uygulama otomatik olarak görüntülenir.

Olay işleme

Applet'ler Container sınıfından bir grup olay işleme yöntemini devralır. Container sınıfı, belirli olay türlerini işlemek için processKeyEvent ve processMouseEvent gibi birkaç yöntemi ve ardından processEvent adlı bir tümünü yakalama yöntemini tanımlar.

Bir olaya tepki vermek için, bir uygulamanın, uygun olaya özgü yöntemi geçersiz kılması gerekir.

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;

public class ExampleEventHandling extends Applet implements MouseListener {
   StringBuffer strBuffer;

   public void init() {
      addMouseListener(this);
      strBuffer = new StringBuffer();
      addItem("initializing the apple ");
   }

   public void start() {
      addItem("starting the applet ");
   }

   public void stop() {
      addItem("stopping the applet ");
   }

   public void destroy() {
      addItem("unloading the applet");
   }

   void addItem(String word) {
      System.out.println(word);
      strBuffer.append(word);
      repaint();
   }

   public void paint(Graphics g) {
      // Draw a Rectangle around the applet's display area.
      g.drawRect(0, 0, 
      getWidth() - 1,
      getHeight() - 1);

      // display the string inside the rectangle.
      g.drawString(strBuffer.toString(), 10, 20);
   }

   
   public void mouseEntered(MouseEvent event) {
   }
   public void mouseExited(MouseEvent event) {
   }
   public void mousePressed(MouseEvent event) {
   }
   public void mouseReleased(MouseEvent event) {
   }
   public void mouseClicked(MouseEvent event) {
      addItem("mouse clicked! ");
   }
}

Şimdi bu uygulamayı şu şekilde adlandıralım -

<html>
   <title>Event Handling</title>
   <hr>
   <applet code = "ExampleEventHandling.class" 
      width = "300" height = "300">
   </applet>
   <hr>
</html>

Başlangıçta, uygulama "uygulamayı başlatıyor. Uygulamayı başlatıyor." Dikdörtgenin içine tıkladığınızda "fare tıklandı" da görüntülenecektir.

Görüntüleri Görüntüleme

Bir uygulama, GIF, JPEG, BMP ve diğerleri formatındaki görüntüleri gösterebilir. Uygulama içinde bir görüntüyü görüntülemek için, java.awt.Graphics sınıfında bulunan drawImage () yöntemini kullanırsınız.

Aşağıda, resimleri göstermek için tüm adımları gösteren bir örnek verilmiştir -

import java.applet.*;
import java.awt.*;
import java.net.*;

public class ImageDemo extends Applet {
   private Image image;
   private AppletContext context;
   
   public void init() {
      context = this.getAppletContext();
      String imageURL = this.getParameter("image");
      if(imageURL == null) {
         imageURL = "java.jpg";
      }
      try {
         URL url = new URL(this.getDocumentBase(), imageURL);
         image = context.getImage(url);
      } catch (MalformedURLException e) {
         e.printStackTrace();
         // Display in browser status bar
         context.showStatus("Could not load image!");
      }
   }
   
   public void paint(Graphics g) {
      context.showStatus("Displaying image");
      g.drawImage(image, 0, 0, 200, 84, null);
      g.drawString("www.javalicense.com", 35, 100);
   }  
}

Şimdi bu uygulamayı şu şekilde adlandıralım -

<html>
   <title>The ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "300" height = "200">
      <param name = "image" value = "java.jpg">
   </applet>
   <hr>
</html>

Ses Çalma

Bir uygulama, java.applet paketinde AudioClip arayüzü tarafından temsil edilen bir ses dosyasını oynatabilir. AudioClip arayüzünün aşağıdakiler dahil üç yöntemi vardır:

  • public void play() - Ses klibini baştan bir kez çalar.

  • public void loop() - Ses klibinin sürekli olarak yeniden oynatılmasına neden olur.

  • public void stop() - Ses klibini oynatmayı durdurur.

Bir AudioClip nesnesi elde etmek için, Applet sınıfının getAudioClip () yöntemini çağırmanız gerekir. URL gerçek bir ses dosyasına çözümlense de çözümlenmesin getAudioClip () yöntemi hemen geri döner. Ses dosyası, ses klibini oynatma girişiminde bulunulana kadar indirilmez.

Aşağıda, bir ses çalmak için tüm adımları gösteren bir örnek verilmiştir -

import java.applet.*;
import java.awt.*;
import java.net.*;

public class AudioDemo extends Applet {
   private AudioClip clip;
   private AppletContext context;
   
   public void init() {
      context = this.getAppletContext();
      String audioURL = this.getParameter("audio");
      if(audioURL == null) {
         audioURL = "default.au";
      }
      try {
         URL url = new URL(this.getDocumentBase(), audioURL);
         clip = context.getAudioClip(url);
      } catch (MalformedURLException e) {
         e.printStackTrace();
         context.showStatus("Could not load audio file!");
      }
   }
   
   public void start() {
      if(clip != null) {
         clip.loop();
      }
   }
   
   public void stop() {
      if(clip != null) {
         clip.stop();
      }
   }
}

Şimdi bu uygulamayı şu şekilde adlandıralım -

<html>
   <title>The ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "0" height = "0">
      <param name = "audio" value = "test.wav">
   </applet>
   <hr>
</html>

Yukarıdaki örneği test etmek için PC'nizde test.wav'ı kullanabilirsiniz.