Java Sun Microsystems firması tarafından 1991 yılında geliştirilmiş nesneye yönelik bir programlama dilidir. Java temel veri tiplerini giriş çıkış fonksiyonlarını ve diğer fonksiyonları içeren sınıf kütüphanesine sahiptir. Bu programlama dili aynı zamanda internet protokollerinin çoğunu destekleyen fonksiyonlara da sahiptir. Java çok fazla komut içermemesine rağmen uygun komutları bünyesinde barındırdığı için güçlü bir dil olarak kabul edilmiştir. Java programlama dili geliştirilirken C ve C++ dillerini kendine baz almıştır.
Java ile yazılan bir programın çalıştırılabilmesi için iki aşamadan geçirilmesi gerekmektedir. Birinci aşama programın derlenmesi aşamasıdır. Programın Java derleyicisi ile derlenmesi sonucunda byte kod (Java binary kod) denilen makina koduna yakın fakat işlemciye özel olmayan kod oluşturulur. İkinci aşama ise programın byte kodunun bir byte kod yorumlayıcısından geçirilmesi aşamasıdır. Byte kod yorumlayıcısı programın çalışmasını sağlar. Java� nın bu özellii ona hem avantaj hem dezavantaj getirir. Derlendikten sonra işlemciye özel kod üretilmemesi sayesinde Java sistemden bağımsızdır üzerinde Java yorumlayıcısı bulunduran herhangi bir sistemde çalışır. Fakat bir Java yorumlayıcı programı yürüttüğü için işletim hızı da yavaşlar.
Java� da program yazabilmek için bir Java Geliştirme Kiti (JDK) gereklidir. Herhangi bir editörde (Unix için pine vi; DOS altında MSDOS Edit vb�) yazılıp *.java uzantılı kaydedilen Java programı dosyası JDK� de komut satırına javac dosya_ismi yazılıp derlenir. Bu işlem sonucunda dosya_ismi .class dosyası oluşur. (Byte kod dosyası) JDK� den java yorumlayıcısı çağırılarak programın çalıştırılması istenirse komut satırına java dosya_ismi yazılır.
Java dili ile yazılan programları Java uygulamaları ve Java appletleri olmak üzere iki ana grupta toplayabiliriz. Java uygulaması herhangi bir probleme çözüm getirmek amacıyla Java dili ile yazılmış bir programdır. Örneğin; ekrana �Ben Java öğreniyorum!� çıktısını veren bir program yazalım:
Class JavaOgreniyorum {
public static void main(String args[]){
System.out.printIn(�Ben Java öğreniyorum!�);
}
}
Bu programı bir editörde yazıp genelde sınıfa verdiğimiz isi dosya ismine de verip kodu JavaOgreniyorum.java olarak kaydederiz. Daha sonra yukarıda açıklandığı gibi JDK� de derlemek için komut satırına javac JavaOgreniyorum yazıp JavaOgreniyorum.class dosyasının oluşmasını sağlarız. Programın çalışması için de java JavaOgreniyorum komut satırını yazarız.
Java appleti ise Java desteğine sahip bir listeleyicide (browserda) görüntülenen Web sayfaları içerisinden çalıştırılabilen programlardır. Bir Java appleti imajlara benzer fakat dinamik ve interaktif olmasıyla farklılaşır. Bir Web sayfasına java appleti bağlamak için önce Java dili ile program yazılıp derlenir. Sonra HTML ile hazırlanmış Web sayfasında bu dosya referans olarak gösterilir. HTML dosyası ile applet dosyasının aynı dizinde olması tavsiye edilir. (bir HTML dosyası ile o sayfada kullanılan imaj dosyası gibi) Web sayfası yüklendiğinde Web listeleyicisinde (browserında) gömülü olan Java yorumlayıcısı sayfadaki appletleri çalıştırmaya başlar. Appletlerin Web sayfasında çalışması için kullanılan listeleyicinin Java desteğine sahip olması gerekmektedir. Bu amaçla geliştirilen ilk listeleyici (browser) HotJava olup (HotJava Java dili ile yazılmıştır.) daha sonra diğer Web listeleyecilerinin de Java� yı destekleyen yeni sürümleri çıkartılmıştır. (Örneğin Netscape 2.0 gibi)
Şimdi deminkine benzer bir Java appleti yazmayı ve bunu bir Web sayfasına bağlamayı deneyelim:
import java.awt.Graphics;
public class JavaOgreniyorumApplet extends java.applet.Applet{
public void paint (Graphics g){
g.drawstring(�Ben Java öğreniyorum!� 5 25);
}
}
Burada import komutu da applet� in JDK içindeki sınıflara erişimini sağlar.
Bu applet dosyası da deminki Java programına benzer biçimde bir editörde yazıldıktan sonra ait olduğu sınıf ismi dosya ismi olarak verilip JavaOgreniyorumApplet.java şeklinde kaydedilir. JDK� de javac JavaOgreniyorumApplet komut satırı yazılıp programın derlenmesi sağlanır. Daha sonra oluşturulan byte kodun çalışması için java JavaOgreniyorumApplet komut satırı yazılır.
1.5.2. CGI (Common Gateway Interface)
CGI� ın ne olduğunu anlatmaya geçmeden önce bazı kavramların açıklanması gerekmektedir. Buna Web Server ve Client ile başlamak yerinde olur. Web Server� lar (HTTPd Server) Web sayfalarını üzerinde bulunduran makinalardır. Bu makinalar genelde kendi üzerlerinde bulunan Web sayfalarına erişmek için 80 numaralı portu kullanırlar. Client ise Web Server� lar üzerindeki Web sayfalarına erişmek isteyen makinalardır. Client herhangi bir porttan Web Server ile iletişim kurabilir. Stdin standard input� un kısaltılmışıdır ve server açısından client� ın server� a gönderdiği veriler anlamına gelir. Stdout standard output� un kısaltılmışıdır ve server� ın client� ın gönderdiği verileri işlemesi sonucunda client� a gönderdiği sonuç bilgisi anlamına gelir.
Yukarıdaki açıklamalardan da anlaşıldığı gibi HTTP protokolü server� dan client� a ve client� tan server� a veri aktarımını destekler. Client� ın server� a veri gönderebilmesi formlar aracılığıyla olur. Form client� ın server� a veri ulaştırmasını sağlamak amacıyla HTML dili kullanarak yazılmış Web sayfalarıdır. Kullanıcının (client) form aracılığıyla server� a gönderdiği bilgiyi işleyecek server tarafında çalışan bir programa ihtiyaç vardır. Bu programa gateway programı denir. CGI (Common Gateway Interface) client� ın gönderdiği input verileri alıp gateway programına veren (gateway programının çalışmasını sağlayan) ve programın çıktısını tekrar client� a ileten kısaca server ve server tarafındaki gateway programları arasında iletişimi sağlayan bir arayüz protokoldür.
Bir Web Client programının (Web browser) HTTP server� ına veri göndermesini sağlamak için hazırlanan formlar HTML diliyle aşağıdaki gibi başlar:
<FORM ACTION=�URL� METHOD=get | post>
�
�
</FORM>
Action seçeneğinde belirtilen URL formun doldurulduktan sonra hangi Web server� daki hangi program tarafından işleneceği bilgisini ifade eder. Method seçeneği ise formun Web server� ına hangi methodla ulaştırılacağını belirtir. Yukarıdan da anlaşılacağı gibi formdaki bilgiler iki methodla ulaştırılabilir. Get metodu kullanılırsa veri çevresel değişkenler aracılığı ile Web Server� a ulaştırılır. Bu metodla bütün form bir query_string değişkeninin içine konur action kısmında belirtilen adres ve programın sonuna eklenir ve tek bir URL olarak gönderilir.
http://bla.bla.edu./stuff/program?query_string
Veri büyüklüğü sınırlandırılmıştır. Bu yöntem kullanıldığı zaman actionda belirtilen URL önce decode edilmelidir çünkü form doldurulup submit edildiğinde browser bütün bilgiyi URLencode eder. Decode işlemi bir CGI script (gateway programı) ile yapılabilir. Yukarıda submit edilen URL incelendiğinde soru işaretine kadar olan kısmın formun action kısmında yer alan adres ve program olduğu görülür. Soru işaretinden sonraki kısım ise gönderilen verilerin yer aldığı değişkendir.
Post metodu kullanıldığında ise CGI veriyi stdin olarak alır ve bütün çevresel değişkenlere gerekli atamaları yapar. Veri üzerinde herhangi bir büyüklük sınırlaması yoktur.
Verinin gateway programı tarafından işlendikten sonra client� a geri gönderilmesine gelince; çıktılar MIME çıktıları redirection ve nonparsed Headings olmak üzere üç şekilde gönderilebilir. Sadece MIME çıktılara genel olarak bakalım: Çıktının MIME type gönderilmesi herhangi bir Web sayfası ses veya video dosyası ya da sade text olması demektir. Gateway programı standard output� un MIME tipini belirten başlık mesajlarını koymak ve altına bir de boş satır bırakmak zorundadır. Örneğin;
Content-type: MIME type (text/html)
Data�
Data�
Bir gateway� in kullanım amaçları çok çeşitli olabilir. Bir örnek vermek gerekirse; bir Web server üzerindeki bir veri tabanı üzerinde bir bilgininverilen bir keyword aracılığıyla araştırılması bir gateway programıyla halledilebilir. Bir gateway programı herhangi bir programlama diinde yazılabilir. Fakat bir gateway yazmak için en çok tercih edilen programlama dilleri şunlardır: C C++ Fortran Perl TCL herhangi bir Unix ShellVisual Basic AppleScript. Script diliyle yazılmış programların kendileri server� a konur diğer dillerde yazılmış programların ise derlenmiş hali server� a konur. Derlenmiş hali server� a konan programların source kodları da bilgi amacıyla genelde konur.
CGI real time çalıştırılır yani client ne zaman çalıştırmak isterse CGI bu isteği alır verileri çevresel değişkenlere aktararak gateway� e gönderir ve gateway� i çalıştırmaya başlar ve çıktı programın çalışması bitince CGI tarafından alınıp client� a gönderilir.
Gateway� lerin server� a konması için iki yol izlenebilir: Bunlardan birincisi herkes kendi dizini altına programını koyar ve bir de hangi uzantılı dosyaların server tarafından cgi olarak kullanılacağının server� a bildirilmesi için bir .htaccess dosyası hazırlar. Fakat bu yöntem pek tercih edilmez çünkü güvenli gateway programı yazmak kolay bir iş değildir. Gateway� ler real time çalıştırıldığından kötü niyetli kişiler gateway� I server� I zor durumda bırakacak şekilde kullanabilirler. Bunu engellemek için gatewayler server üzerinde ayrı bir dizin altında tutulurlar. (cgi-bin dizini) Gateway programları bu dizine sadece Webmaster� ların bilgisi ve izni dahilinde konulabilir.
[ Alıntıdır ]