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

Java Platform'u

Java Platform'u

Java sadece bir programlama dili değildir. Aynı zamanda bir yazılım platformudur. Java Platform'u işletim sistemi üzerinde çalışan, uygulamalara çok çeşitli servisler veren, bunu her işletim sistemi için standart bir biçimde başarabilen bir platformdur. Java Programlama Dili ise bu platform üzerinde yazılım geliştirmek için kullanılan programlama dilidir. O yüzden Java'yı öğrenmek sadece Java dilini öğrenmek demek değildir. Java platformu üzerinde çalışan farklı bir dil de üretilebilir. Ancak Java dilinin iyi bir programlama dili olması nedeniyle böyle bir ihtiyaç doğmamışır.

Java platformunun yapısı, daha önce benzer bir platform olmaması nedeniyle, özellikle başka dillerle çalışmış insanlara karmaşık gelebilir. Ancak Java, diğer dillerdeki, özellikle de C/C++ dilindeki "çözümsüz" veya "çözümü zor" konulara pratik çözümler üretmiştir. O yüzden başka dillerle profesyonel programlama yapmış olan insanlar sık karşılaştıkları bir çok sorunun Java'da çok kolay çözülmüş olduğunu görebilmektedirler. Bu bölümde bir Java programının çalışma biçimini, öncellikle diğer dillerde yazılmış programların çalışma biçimlerini gözden geçirerek inceleyeceğiz.

Derleme (Compilation) ve Yorumlama (Interpretation)

Programalama dili, insanla makine (bilgisayar) arasında iletişim kurmak için kullanılan dildir. Başka bir deyişle programcı bilgisayara, özellikle de işlemciye istediklerini yaptırmak için bir dil kullanır. Bu dil konuşma diline yakın bir dil olmalıdır ki insanlar rahatça kullanabilsin. Bilgisayar işlemcisinin dili ise sadece sayılardan oluşur. Bilgisayarlar sayısal (dijital) aygıtlardır. İşlemciler sadece belli sayılarla ifade edilen makine kodlarından anlar. Bu kodlardan oluşan dile 'makine dili' denir, üretilen koda da 'makine kodu' (machine code) denir. Bilgisayarın ilk dönemlerinde insanlar programlarını sayı kodları kullanarak yazıyorlardı. Bu kodlar her işlemci türü için değişik olduğundan, yazılan programlar sadece belli bir işlemci ile çalışabiliyordu. Hatta bir işlemci sürümü için yazılan kod bir önceki sürümde çalışmayabiliyordu. Bu yüzden 'programlama dili' kavramı ortaya çıkmıştır. Bu yapıda, programcı bilgisayarın yapması gerekenleri ona, konuşma diline yakın bir dille söyler. Bu dilde yazılanlar makine diline çevrilir. Böylece programcılar, hem işlemciminin kendine komut kümesini öğrenmek zorunda kalmazlar; hem de yazdıkları programlar birden fazla işlemciyle çalışabilir.

Programalama diliyle düz metin şekinde olan programa 'kaynak kodu' (source code) denir. Makine dilinde olan koda da "ikili kod" (binary code) denir. Programlama dilinden makine diline çevirme işi iki şekilde yapılabilir. Biri 'anında', ikincisi 'önceden'. Anında çevirmek, programa dilindeki ifadeleri bir yandan okuyup bir yandan makine diline çevirmek demektir. Buna 'yorumlama' (interpretation) denir. Önceden çevirme ise, programlama dilindeki ifadelerin çalıştırılmadan önce makine diline çevrilmesi, sonra da çalıştırılması anlamına gelir. Buna da 'derleme' (compilation) denir. Derleme'nin faydası daha hızlı olmasıdır. Çünkü makine diline çevirme sadece ve sadece bir kere yapılmaktadır. Yorumlama da ise her çalıştırmada çevirme işlemi yapıldığından daha yavaştır. Derlemenin zararı da, programdaki her değişiklikte önce derlemeyi sonra çalıştırmayı gerekli kılmasıdır. Sık değişiklik yapılan durumlarda bu, programcı için ciddi bir sorundur. Oysa yorumlama anında olduğu için, değişiklik de anında etkili olmaktadır. Perl, Basic gibi diller yorumlamalı, C ve Pascal gibi diller de derlemeli dildir.

JVM - Java Virtual Machine (Java Sanal Makinesi)

Java'daki durum biraz daha karışıktır. Java hem 'derlemeli' bir dildir, hem de 'yorumlamalı'. Java programlama diliyle yazılmış kaynak kodu, sanal bir işlemcinin anlayabileceği makine koduna çevrilir. Bu kod gerçek bir makine olmadığından ona makine kodu denmez. Ama programala dili gibi konuşma dilinde de olmadığından kaynak kodu da değildir. Bu ara dille yazılmış koda 'bayt kod' (bytecode) denir. Çünkü makine kodu gibi baytlardan oluşur. Yani kaynak kodu bayt koduna 'derlenir'. Sanal işlemci bu bayt kodlarının makine koduna programın çalışması esnasında çevirir. Her işletim sistemi ve işlemci için ayrı bir sanal makine vardır. Java kaynak kodları Java derleyicisi tarafından bayt koda çevrilir. Üretilen bu kod bütün işlemciler için aynıdır. Her işletim sistemi ve işlemciye göre sanal makine, bu bayt kodu ilgili işlemcinin makine diline anında çevirir yani yorumlar. Bu sanal makineye Java Sanal Makinesi - Java Virtual Machine (JVM) denir.

Şimdi teorik olarak anlattığımız sürecin, uygulamadaki bileşenlerini inceleyelim. Java platformunun programlama dili 'Java' dır. Bu dilde yazılmış kaynak kodları '.java' uzantılı dosyalarda saklanır. "javac" adlı bir derleyici ile ikili koda çevrilir. İkili kod'lar '.class' uzantılı dosyalarda saklanır. Bu dosyalar 'java.exe' adlı yorumlayıcı tarafından çalıştırılır. Java kaynak kodu herhangi bir metin düzenleyici ile yazılabilir. Java'nın derleyicisi ücretsiz olarak dağıtılmaktadır. Java'nın yorumlayıcısı (JVM)'de plug-in olarak yüklenebilmektedir. Bu plug-in de ücretsizdir. Ayrıca bilinen bütün tarayıcılar'ın bir JVM'i bulunmaktadır.

Bir JVM içerinde çalışan Java application'u C ile yazılmış native kodu çağırabilir. Bu durumda performans'tan kazanılmakla birlikte platform bağımsızlığı kaybedilmiş olur. O yüzden bu, sadece çok hız gerektiren az sayıda işlem için kullanılabilir. Java'nın hızı giderek arttığından buna zamanla daha az ihtiyaç duyulmaktadır. Bir .exe programı da Java programlarının içerisinden çalıştırılabilir. Ancak bu durumda çalışan proses tamamen JVM'in dışında, aşağıdaki işletim sisteminin kontrolünde bulunur. Application'la veri alışverişi bulunmayan programları dışarıdan çağırmak için kullanılabilir.

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