Tuesday, February 15, 2011

Java nasil calisir?

Bir java yazilimi su sekilde gelistirilir:

  1. Programci java kodunu yazar.
  2. Bu kod bir java derleyicisi ile derlenir. Sonucta bytekod adi verilen bir tur makine kodu ortaya cikar. Platform bagimsizligini saglayan sey bytecode'dir. Cunku bir kere bytecode olustuktan sonra yazilim tum isletim sistemlerinde calisabilir.
  3. Bu byte kod Java virtual Machine (Java Sanal Makinesi) tarafindan adim adim isletilir. Asagida java ve C++ kodunun gecirdigi asamalar gosterilmistir.

    Simdi bu adimlari iyice bir inceleyelim

    Java kodunun yazilmasi.

    java nesneye yonelik bir dil oldugundan tum yazilim siniflar ve nesneler uzerinden yurutulur. Siniflar uygulamadaki nesnelerin tanimlandigi kod parcalaridir. Java'da her bir sinif bir dosya icerisinde yer alir. Dosyalarin uzantilari .java seklindedir. Dosya adi ise icinde tanimlanan sinif ile aynidir. Ornegin, BenimSinif.java gibi.

    Derleme

    Derleyici kisaca herhangi bir editor ile yazilan java kaynak kodlarini (yani .java uzantili siniflarin yer aldigi dosyalari) java sanal makinesinin calistirabilecegi bir tur makine dili (assembler) olan Bytecode'a donusturur. Bu donusturulen bytekod ise (.class ) dosyalari icerisinde saklanir. Java kodunu derlemek icin bir java derleyicisine ve java kutuphanelerine ihtiyaciniz var. Su anda iki derleyici yaygin olarak kullanilamktadir. Bir tanesi Sun'in SDK'si ile birlikte gelen javac. digeri ise IBM'in acik kodlu derleyicisi jikes. Benim yaygin olarak kullandigim Jikes, cok hizli derlemesi ile unlu olsa da en son java yazilimlarini derlemek icin javac'ye ihtiyac duyulabilir. Ayrica linux altinda derleme yapmak icin gnu lisansi ile gelistirilen acik kodlu Gnuj kullanilabilir. Derleyici ve kutuphanelerin bulundugu (Java API) uygulamaya "J2SE SDK" adi verilmistir.

    Calistirma ve Java sanal makinesi.

    Sanal makine donanimdan bagimsiz yazilim gelistirme ihtiyacina cevap verme amaciyla gelistirilen bir teknolojidir. Java'nin temel felsefesi olan "bir kere yaz, her yerde calistir" sanal makine sayesinde varolmustur. Sanal makineyi bir yonden bir tur hayali bir mikroislemci gibi dusunebiliriz. Gercek tum mikroislemciler (Intel Pentium, AMD Athlon, Sun Sparc vs) belirli bir grup komutu islemek uzere tasarlanmistir. Bu komutlara islemcinin komut kumesi adi verilir. Ornegin x86 komut kumesi gibi. Tum yazilimlar calisabilmek icin once bu komut kumesine donusturulur, daha sonra islemci bu komutlari sira ile gercek islemci komutlarina donusturup isletir. Java Sanal makinesi de Bytekod komut kumesini tipki islemci gibi adim adim isletir. Java'nin interpreted bir dil olarak adlandirilmasinin nedeni budur. Bytekod ilkel islemlerin yaninda (ilkel islemler, mikroislemci seviyesi komutlardir, aritmetik islemler, bit islemleri, bellek ve yigin islemleri vs.) sanal makinenin uzerinde calistigi isletim sistemine yonelik islemler de barindirir. Bu sayede Java Virtual Machine yazici, seri port, grafik, dosya servisi, ag baglantisi gibi yazilim ve donanim servislerine erisim yapabilir.

    Java'nin dogrudan bytecode calistirmasi performansinin dusuk olabilecegi izlenimini verebilir. Ancak, JVM tasarimi gecen 10 yilda cok degismis ve gelistirilmistir. Su anda java'nin performansi cogu alanda C++'in performansina yakin bir seviyededir ve islemci hizi ve bellek miktarinin her gecen yil katlanarak artmasi ile performans konusu cogu uygulamada artik ikinci planda kalmistir. Asagida cesitli platformlar icin java'nin calismasi basit blok sema olarak gosterilmistir. Eger sozkonusu dil C++ olsayid uc ayri kod yada kodda uc ayri #ifdef vs tanimi, uc ayri obje dosyasi olusturulmasi gerekirdi ve cogu uygulamada C++ projesi sadece tek platforma destek verirdi (win32 gibi)
           

Bu konunun anlasilmasi icin bir uygulama yapalim

                                           public class Selam { 
                                                    public static void main(String args[]){
                                                                System.out.println("Selamlar !"); 
                                                      }
                                            }












 Bu yazi alintidir Asagidaki linkten daha detayli bilgi alabilirsiniz Hocamizin Eline saglik
http://www.uslanmam.com/java/15164-java-nedir-nasil-calisir.html 

 Bu yazidaki uygulama alintidir Asagidaki linkten daha detayli bilgi alabilirsiniz Altuğ Bilgin ALTINTAŞ  Hocamizin Eline saglik
http://www.kodcu.com/kitap/java-kitap
Java Programalama Diline Giriş.pdf

No comments:

Post a Comment