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 **** 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 **** 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:
…..
…..
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.
[Linkleri görebilmek için üye olun veya giriş yapın.]
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
bilginin, verilen 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 Shell, Visual 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.
__________________
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 **** 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 **** 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:
…..
…..
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.
[Linkleri görebilmek için üye olun veya giriş yapın.]
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
bilginin, verilen 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 Shell, Visual 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.
__________________