ÜYE GİRİŞİ  
Kullanıcı adı :
Parola :
 
  Üye Ol!  
 
 
ANASAYFA HABERLER ASP ASP.NET PHP C/C++ C# JAVA ARAMA İLETİŞİM

ASP.NET
  Expression Web ile Site Yapimi
  Web Server Control Yazmak - 2
  Web Server Control Yazmak - 1
  Sql Cache Dependency
  Web Kontrollerini Etkin Kullanmak
  Xslt Kullanımı
  Bir Web Sayfasının Anatomisi
  Client Script Callback
  Login Kontrollerinin Kullanımı

ASP
  ASP Nesneleri
  29 Soruda ASP
  Matematiksel Uygulamalar
  Select Case Yapısı 2
  Fonksiyon(Function) Kullanımı
  IF-ELSE...
  GET Yöntemi ile İşlemler
  Asp de Tarih ve Saat fonksiyonları
  While-wend döngüsü

C Sharp (C#)
  C#'da klasör işlemleri
  C# ile diziyi tersine çevirme
  Çok Kullanılan Kontroller-1
  C# ile Kronometre Uygulaması
  Overloaded Metotların Gücü
  C# ile XMLQuery Örneği
  Rastgele Kod Üretimi
  Kontroller ile Çalışma
  Düzenli İfadeler Nedir?

DUYURULAR

F# Microsoft dil teknolojisinin en yeni üyesi.Common Lisp-Slime-Emacs tarzında etkileşimli,kıvrak,sonuçların anında görülebildiği ve yüksek performanslı bir betik dil olarak özetleyebiliriz bu yeni dili. devamı >>


Türk Telekom'dan yapılan yazılı açıklamada, Telekomünikasyon Kurumu'nun onayladığı yeni tariflerin, internet servis sağlayıcı şirketlerin maliyetlerini önemli oranlarda düşüreceği aktarıldı. devamı >>


7 Yıl Sonra Applet | Asundinay.Com
JAVA İçin Eklenmiş Makale
 Makale Adı  :  7 Yıl Sonra Applet
 Yayın Tarihi :  22.08.2007 17:55:21 Ekleyen :  Kazım Aydın Okunma : 171

Yıllar önce ben üniversitede öğrenciyken (sanırım 1996 veya 1997 yılıydı) değerli bir sınıf arkadaşımı ziyarete gitmiştim. Kendisi bilgisayar teknolojilerine son derece ilgili birisiydi ve bu anlamda ortak pek çok yönümüz vardı. O yıllarda ikimizde, özellikle görsel programlamaya yönelik yazılım geliştirme ortamlarına ilgi duyuyorduk. O günkü ziyaretimde, dostumun elinde o güne kadar gördüğüm en kalın kitap duruyordu. Sanırım o zamanlar gözüme çok büyük gözükmüştü. öyleki o güne dek hiç 900 sayfalık bir bilgisayar kitabı görmemiştim. Oysaki şimdi o 900 sayfalık kitapları arar oldum. En son çalıştığım bilgisayar kitabı 1500 sayfaya yakın olunca, insan ister istemez özlüyor.

Neyse sözün kısası, arkadaşımın elinde tuttuğu kitap, ingilizce bir bilgisayar kitabıydı ve Java diye bir şeyden bahsediyordu. Oha falan oldum yani der gibi arkadaşımın gözlerine baktım. çünkü ilk aklıma gelen StarWars serisindeki Java olmuştu. Hemen ne demek istediğimi anladı ve anlatmaya başladı. Java’nın yeni bir programlama dili olduğunu, C++’ın syntax’ına çok benzer yer yer aynı yazımları kullandığını ancak işin içinde platform bağımsızlığın yer aldığını söyledi. O zamanlar bende pek çok kişi gibi platform bağımsız kısmına geldiğinde, hafif bir tebessümle hadi canım demiştim. çok geçmeden bana kitabın ilk kaynak uygulamsından geliştirdiği kodu gösterdi. Burada komik bir çizgi karakter (kırmızı burunlu) bir internet explorer penceresinde bir oraya bir oraya taklalar atıyordu. Bu nedir diye sorduğumda bana bunun bir Applet olduğunu ve browser’ın üzerinde dinamik olarak yerel makinede çalıştığını söyledi. O zamanlar elbetteki browser üzerinde çalışan dinamik uygulamalara hiç aşina değildim.

Java dilini öğrenmeye başladığımda, günün birinde bu değerli arkadaşımı hatırlayacağımı ve kulaklarını çınlatacağımı biliyordum. Artık o zamanlar söyledikleri şimdi kulağıma daha teknik olarak geliyor. Eeee ne demişler "geç olsunda güç olmasın". İşe appletlerin ne olduğunu kavramak ile başlamam gerekiyordu. Daha sonraki kahve molalarımda ise appletleri kullanıcı ile dinamik olarak etkileşime sokmaya çalışacaktım. Ama önce teknik bilgi ve basit kodlara ihtiyacım vardı. Tabiki appletin basit bir tanımından sonra.

Bir applet, istemci uygulamada yada başka bir deyişle yerel makinede, Java Virtual Machine’e sahip herhangibir tarayıcıda (browser) derlenerek çalıştırılan dinamik bir java programcığından başka bir şey değildir. Applet’leri normal java programları yazar gibi java dosyaları olarak yazar ve javac aracı ile class olarak byte-code’a çeviririz. Tek fark, bu program parçalarının, tarayıcıdan talep edilmeleri halinde, tarayıcının sahip olduğu JVM sayesinde derlenerek bu tarayıcının yer aldığı yerel makinede dinamik olarak çalışacak olmalarıdır. Dolayısıyla normal java byte kodları gibi, bu kodlarda çalıştırıldıklarında derlenirler. Ancak çalışma sistemleri, içerdikleri olay yapıları konsol veya görsel arabirime sahip java uygulamalarından biraz daha farklıdır. Herşeyden önce, tarayıcıda çalıştıkları için, belirli bir alan içerisinde çizilebilirler yada kullanılabilirler. Bununla birlikte dinamik çalışmaya müsait oldukları için aşağıdaki olayları gerçekleştirmelerine, yerel makinelerin güvenliği açısından izin verilmez.

Applet’lere özgü Kısıtlamalar
Yerel makineden (çalıştıkları makine) dosya kopyalayamazlar.
Dosya silemezler.
Dosya açamazlar veya oluşturamazlar.
İndirildikleri sunucudan başka bir sunucu ile herhangibir ağ bağlantısı kuramazlar.
İndirildikleri bilgisyarda başka programları çalıştıramazlar.
Dosya sistemine erişemezler veya okuyamazlar.

Applet’lerin çalışması ile ilgili olarak en dikkat çekici nokta, çağırıldıkları sunucudan istemci bilgisayarın tarayıcısına indirilmeleridir. Nitekim, bu işlemin gerçekleştirilmesi için, applet’e ait class dosyasının bir şekilde html kodu içerisine gömülmesi gerekecektir. Bunun nasıl yapıldığını görmek için öncelikle bir applet geliştirmek gerektiği kanısındayım. Ne kadar basit olursa olsun en azından nasıl çalıştığını görmem gerekiyor. Kaynaklarımı inceledikten sonra, aşağıdaki gibi bir örnek java dosyasını oluşturdum.

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

public class IlkApplet extends Applet
{
    public void Paint(Graphics g)
    {
            g.drawString("Yihuuu",50,50);
   }
}

Burada oluşturduğum java dosyasını javac ile derlediğimde herhangibir sorun ile karşılaşmadım. Peki ama kodum ne yapıyordu? Herşeyden önce ilk dikkatimi çeken, kullanılmak üzere eklediğim awt ve applet paketleriydi. Awt paketini ileride detaylı incelemeyi düşünüyordum zaten. Ancak yinede ön bilgiye ihtiyacım vardı. Awt paketi içerisinde, java ile kullanabileceğimiz görsel arayüzlere ait nesneler için bir çok sınıf bulunuyordu. Applet’lerde sonuç itibariyle, tarayıcı penceresinde çalışacaklarından, kullanıcılar ile görsel iletişim sağlamamıza yarayacak buton,textbox gibi nesneler içerebilirdi. İşte bu amaçla awt paketi vardı. Gerçi kullandığımız bir nesne yok gibi gözükebilir ancak, Graphics sınıfı awt paketi içerisinde yer alan ve appletin çalıştığı alan içerisine bir şeyler çizmek için (örnekte olduğu gibi yazı yazmak için mesela) kullanılan bir sınıftır.

Diğer önemli bir kavramda, sınıfın Applet sınıfından türetilmiş olmasıydı. Bu, yazılan java sınıfının bir applet olarak değerlendirileceğini belirtmekteydi. Dolayısıyla applet sınıfından bir takım özellikleri kalıtımsal olarak alacağımız kesindi. Gelelim, Paint metoduna. İşte işin en can alıcı noktası burasıydı. Bu metod, tarayıcı pencersinde, appletin çalıştığı alana birşeyler çizmek için kullanılıyordu. Daha doğrusu applet, sınırları ile birlikte tarayıcı penceresinde çizilmeye başladığında çalışıyordu. Artık, değerli dostumun tarihi java kitabındaki kırmızı burunlu kahramanın nasıl taklalar attığını daha iyi anlamaya başlamıştım. O zamanlar çizgi filim gibi gelmişti. Ancak şimdi gerçeğin ta kendisi karşımdaydı. Peki şimdi ne olacak? Bir şekilde yazdığım appleti test etmem gerekiyor. İlk aklıma gelen ancak denemek istemediğim şeyi deneyerek işe başladım. Şöyleki,

Resmin büyük hali için tıklayın

Böyle birşeyin başıma geleceği kesindi diyebilirim. Elbetteki appletin çalışma sistemine bakıldığında farklı şekilde uygulanmaları gerekirdi. Her şeyden önce, bu applet bir tarayıcıya indirilecek ve oradaki JVM tarafından derlenecekti. Bunu test etmenin iki yolu vardı. Birincisi bir applet tagı ile bu sınıfı bir html sayfasına koymak yada Applet Viewer aracını kullanmaktı. İlk önce applet tagını aşağıdaki gibi denedim. Bunun için applet sınıfım ile aynı klasörde olan bir html sayfası hazırladım.

<html>

<head>
<meta http-equiv="Content-Language" content="tr">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>

<body>
<APPLET CODE="IlkApplet.class" WIDTH="500" HEIGHT="200">
</APPLET>
</body>

</html>

Applet tagı içinde en önemli kısım CODE anahtar kelimesinin olduğu kısım idi. Burada, belirtilen 500 piksel genişlik ve 200 piksel yüksekliğindeki alanda hangi applet sınıfının çalıştırılacağını belirtiyorduk. Şimdi oluşturduğum bu html sayfasını tarayıcıda açtım. Ancak hiç beklemediğim aşağıdaki sonucu elde ettim.

500 piksel’e 200 piksellik bir alan açılmıştı. Ancak yazmak istediğim yazıyı görememiştim. Bunun tek nedeni olabilirdi. JVM, ya sınıf dosyasını derlememişti yada appet sınıfını tarayıcı penceresine indirememiştim. Tabi bir diğer ihtimalde tarayıcının özelliklede Microsoft Internet Explorer olduğu için, JVM desteğinin kaldırılmış olabileceğiydi. Aklıma ilk gelen en güncel java plug-in indirmek oldu. Ancak daha öncesinde en azından yazdığım appletin doğru olup olmadığından emin olmalıydım. Neyseki, java’nın appletviewer aracı yardımıma yetişti. Komut satırında aşağıdaki satır ile appletimin çalışmasının sonucunu gördüm. Applet Viewer programı, yazılmış olan appletlerin tarayıcı penceresine ihtiyaç duyulmadan çalıştırılabilmelerini sağlıyordu.

Resmin büyük hali için tıklayın

Evet appletim çalışmıştı. Applet viewer bir applet’i test etmek için ideal bir yoldu. Ama kafam halen daha internet explorer tarayıcısında neden çalışmadığındaydı. Hemen internete girdim ve java plug-in için en güncel sürümü aradım.

http://java.sun.com/products/plugin/reference/codesamples/index.html

Bu adreste örnek java appletleri vardı. En son sürüme ait olanlardan bir tanesini çalıştırmak istediğimde, JVM için gerekli sürümü yüklemek isteyip istemediğimi sordu. Tabiki bunu istiyordum. Hemen yükledim. Hemen derken yüklemek biraz zaman aldı tabiki ama sonuça herşey yoluna girdi. Bu işlemin sonucunda html sayfamı tarayıcıdan tekrar çalıştırdığımda aşağıdaki sonucu elde ettim.

Appletim html sayfasından da çalışmıştı. Harika. Bu appletin ardından daha gelişmiş bir applet yazmam gerektiğini düşünüyordum ki karşıma appletlerin çalıştırıldığında gerçekleşen olayların bir listesi geliverdi. Bir applet çalıştırıldığında aslında aşağıdaki olaylar gerçekleştiriliyordu.

Görüldüğü gibi bir appletin çalışması sırasında işleyen 4 temel olay var. Bu metodlardan ilki init metodu, applet tarayıcı bilgisayara indirildiğinde çalıştırılmaktadır. Start metodundaki kod satırları ise applet çalışmaya başladığında tetiklenir. Stop metodunda yer alan kodlar, appletin bulunduğu sayfadan başka bir sayfaya atlandığında dolayısıyla applet kapatıldığında çalıştırılır. Destroy metodundaki kodlar ise, tarayıcı penceresi kapatıldığı sırada çalıştırılır. Elbette birde paint metodumuz var. Bu metod ile, appletin içerisinde tarayıcı penceresinde belirlenen alanlarda birşeyler çizdirmek için kullanacağımız kodlar yer alır. Diğer yandan, kullanıcı ile etkişim halinde olan appletlerde, kullanıcının tepkisine göre applet üzerinde yapılacak yeni çizimler repaint isimli metodlar içerisinde gerçekleştirilir.

Şimdi bana bu metodların bir appletin çalışması sırasında nerelerde devreye girdiğini gösterecek bir örnek gerekliydi. Hemde appleti biraz daha geliştirmiş olurdum. Bu amaçla kaynaklarımdan edindiğim bilgiler ışığında aşağıdaki gibi bir java applet sınıfı oluşturdum.

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

public class IlkApplet extends Applet
{
    public void init()
    {
        setBackground(Color.yellow);
        System.out.println("Applet yuklendi...");
    }

    public void paint(Graphics g)
    {
        g.drawString("paint",50,50);
    }

    public void start()
    {
        System.out.println("Applet calistirildi...");
    }
    public void stop()
    {
        System.out.println("Applet sonlandirildi...");
    }
}

Bu applet sınıfını derleyip appletviewer ile çalıştırdığımda ilk olarak aşağıdaki görüntüyü elde ettim.

Resmin büyük hali için tıklayın

Görüldüğü gibi ilk önce init metodu devreye girdi. Ardından applet’in start metodunda yer alan kodlar çalıştırıldı ve sonrasında ise paint metodundaki kodlar devreye girdi. çalışan bu applet’i Appet Viewer’ın Applet menüsünden stop komutu ile durdurduğumda ise aşağıdaki ekran görüntüsünü elde ettim.

Resmin büyük hali için tıklayın

Bu kez applet’in stop metodundaki kodlar devreye girmişti ve applet’in çalışmasıda sona ermişti. Applet’lerin çalışma sistemini anladıktan, yaşam süresi boyunca çalıştıracağı metodları ve gerçekleşen olayları inceledikten ve bir buçuk satırlık applet kodu yazdıktan sonra, daha işe yarar bir örnek görmek istiyordum. Hatta yazmak istiyordum. Ancak işe yaramasa bile beni etkilyebilecek bir örnek bulmanın daha iyi olacağı kanısına vardım. Bu amaçla Sun’ın sitesinden örnek appletlere baktım.

http://java.sun.com/products/plugin/1.5.0/demos/plugin/applets/MoleculeViewer/example2.html

Bu adreste yer alan applet’i güzelce bir inceledim. Applet’te yapılması gereken, mouse’a basılı tutup şekli herhangibir yöne doğru sürüklemeye çalışmaktı. Açıkçası bu applet’e bakınca ve şu an java dilinde bulunduğum yeri düşününce kendi kendime şöyle dedim. "çOOOOK çALIŞMAM LAZIMMM. çOOOOKK!!!". Neyseki önümüzdeki hafta boyunca, java appletlerinde awt sınıfına ait GUI nesnelerini kullanarak kullanıcılar ile nasıl dinamik etkileşime geçileceğini öğrenmeye çalışacağım. Artık dinlenmenin tam zamanı. Kahvemde bitmiş zaten.


 

 

 


Kaynak : csharpnedir.com


 

Java İçin Eklenmiş Tüm Makaleler
Java İçin En Son Eklenen 5 Makale
 Makale Adı  :  Java ile Histogram Eşitleme
 Yayın Tarihi :  22.08.2007 23:24:42 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  JAVA İçinde Thread Kullanımı
 Yayın Tarihi :  22.08.2007 23:23:47 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Serialization İşlemleri 2
 Yayın Tarihi :  22.08.2007 23:23:08 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Serialization İşlemleri
 Yayın Tarihi :  22.08.2007 23:20:48 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  İlk Bakışta JSP
 Yayın Tarihi :  22.08.2007 23:19:53 Ekleyen :  Kazım Aydın Makaleyi Oku  

C/C++
  C ögreniyorum -8-
  C ögreniyorum -7-
  C ögreniyorum -6-
  C ögreniyorum -5-
  C ögreniyorum -4-
  C ögreniyorum -3-
  C ögreniyorum -2-
  C ögreniyorum -1-
  İlk C++ Programımız

JAVA
  Java ile Histogram Eşitleme
  JAVA İçinde Thread Kullanımı
  Serialization İşlemleri 2
  Serialization İşlemleri
  İlk Bakışta JSP
  Servletler ile Web Sayfaları
  Java ile Grafik Çizim
  Java, MySql Bağlantısı
  JBuilder ile Database

PHP
  php dersleri -1-
  php/access ile silme işlemi
  php ile access'e bağlanma - 2
  php ile access'e bağlanma - 1
  Döngü ve Diziler - BÖLÜM 5
  Döngü ve Diziler - BÖLÜM 4
  Döngü ve Diziler - BÖLÜM 3
  Döngü ve Diziler - BÖLÜM 2
  Döngü ve Diziler - BÖLÜM 1

İSTATİSTİKLER
  Toplam ziyaret :  24742
  Toplam üye sayısı :  1081
  Asp makale sayısı :  20
  Asp.Net makale sayısı :  54
  Php makale sayısı :  26
  C/C++ makale sayısı :  51
  C# makale sayısı :  29
  Java makale sayısı :  33
  Toplam makale saıysı :  213
Copyright asundinay® 2007 Her Hakki Saklidir
Tasarim & Programlama asundinay®