Java Nasıl Çalışır?
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 iceren 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ı inceleyelim::
Java Kodunun Yazılması [değiştir]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ıdir. 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* BenimSınıf.java gibi.
Çalıştırma ve Java sanal makinesi [değiştir]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 yillarinda isletim basarimi cogu uygulama icin kabul edilemeyecek kadar kotu 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 tasinabilir bir yapida olsa da bu ozellikleri Java ile kiyaslanamayacak kadar geri bir yapidadir. Eğer sözkonusu dil C++ olsaydi üç 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)
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 iceren 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ı inceleyelim::
Java Kodunun Yazılması [değiştir]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ıdir. 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* BenimSınıf.java gibi.
Çalıştırma ve Java sanal makinesi [değiştir]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 yillarinda isletim basarimi cogu uygulama icin kabul edilemeyecek kadar kotu 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 tasinabilir bir yapida olsa da bu ozellikleri Java ile kiyaslanamayacak kadar geri bir yapidadir. Eğer sözkonusu dil C++ olsaydi üç 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)