Bir Java yazılımı şu şekilde geliştirilir::

Programcı Java kodunu yazar.
Bu kod bir Java derleyicisi ile derlenir. Sonuçta bytekod adı verilen bir tür makine kodu ortaya çıkar. Platform bağımsızlığını sağlayan şey bytecode'dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde çalışabilir.
Bu byte kod Java Virtual Machine (Java Sanal Makinesi) tarafından adım adım işletilir.
Bu adımları yakından inceleyecek olursak:


Java Kodunun Yazılması

Java nesneye yönelik bir dil olduğundan tüm yazılım sınıflar ve nesneler üzerinden yürütülür. Sınıflar uygulamadaki nesnelerin tanımlandığı kod parçalarıdır. Java'da her bir sınıf bir dosya içerisinde yer alır. Dosyaların uzantıları .java şeklindedir. Dosya adı ise içinde tanımlanan sınıf ile aynıdır. Örneğin, BenimSinif.java gibi.


Çalıştırma ve Java sanal makinesi


Sanal makine donanımdan bağımsız yazılım geliştirme ihtiyacına cevap verme amacıyla geliştirilen bir teknolojdir. Java'nın temel felsefesi olan "bir kere yaz, her yerde çalıştır" sanal makine sayesinde varolmuştur. Sanal makineyi bir yönden bir tür hayali bir mikroişlemci gibi düşünebiliriz. Gerçek tüm mikroişlemciler (Intel Pentium, AMD Athlon, Sun Sparc vs) belirli bir grup komutu işlemek üzere tasarlanmıştır. Bu komutlara işlemcinin komut kümesi adı verilir. Örneğin x86 komut kümesi gibi. Tüm yazılımlar çalışabilmek için önce bu komut kümesine dönüştürülür, daha sonra işlemci bu komutları sıra ile gerçek işlemci komutlarına dönüştürüp işletir. Java Sanal makinesi de Bytekod komut kümesini tıpkı işlemci gibi adım adım işletir. Java'nin interpreted bir dil olarak adlandırılmasının nedeni budur.

Java'nın doğrudan bytecode çalıştırması performansının düşük olabileceği izlenimini verebilir. Gercekten Java'nin ilk yıllarında işletim başarımı çoğu uygulama için kabul edilemeyecek kadar kötü idi. Ancak, JVM tasarımı geçen 10 yılda çok değişmiş ve geliştirilmiştir. Şu anda Java'nın performansının çoğu alanda C++'ın performansına eş bir seviyede oldugu iddia edilmektedir. Her ne kadar C- C++ dilleri de taşınabilir bir yapıda olsa da bu özellikleri Java ile kıyaslanamayacak kadar geri bir yapıdadır. Eğer sözkonusu dil C++ olsaydı üç ayrı kod ya da kodda üç ayrı #ifdef vs tanımı, üç ayrı obje dosyası oluşturulması gerekirdi ve çoğu uygulamada C++ projesi sadece tek platforma destek verirdi (win32 gibi)

Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.