Java nedir, nasil calisir?
Bu yazida java'nin basitce ne oldugunu, nasil calistigini ve java ile
iliskili bazi kavramlari basitce ve bildigim kadari ile aciklamaya
calisacagim
On bilgi.
Java Sun microsystems muhendislerinden James Gosling tarafindan
gelistirilmeye baslanmis gercek nesneye yonelik, platform bagimsiz,
yuksek performansli, cok islevli, yuksek seviye, interpreted[adim adim
isletilen] bir dildir (son ozellik, yani adim adim isletilen konusuna
aciklik getirilecek).
Java ilk ciktiginda daha cok kucuk cihazlarda kullanilmak icin
tasarlanmis ortak bir platform dili olarak dusunulmus. Ancak bakmislar
ki platform bagimsizligi ozelligi C ve C++'tan cok daha ustun ve guvenli
bir yazilim gelistirme ve isletme ortami sunuyor, hemen her yerde
kullanilmaya baslanmis. Su anda ozellikle kurumsal alanda ve mobil
cihazlarda son derece populer olan java, ozellikle J2SE 1.4 ve gelecek
1.5 surumu ile masautunde de gucunu arttirmayi hedefliyor. Java'nin ilk
surumu olan Java 1.0 (1995) Java Platform 1 olarak adlandirildi ve
tasarlama amacina uygun olarak kucuk boyutlu ve kisitli ozelliklere
sahipti. Daha sonra platformun gucu gozlendi ve tasariminda buyuk
degisiklikler ve eklemeler yapildi. Bu buyuk degisikliklerden dolayi
gelistirilen yeni platforma Java Paltform 2 adi verildi ama versiyon
numarasi 2 yapilmadi, 1.2 olarak devam etti. Bu bahar cikacak Java 1.5,
gecen 1.2, 1.3 ve 1.4 surumlerinin ardindan en cok gelisme ve
degisikligi barindiran surum olacak. (java konusunda temel bilgi icin [Linkleri görebilmek için üye olun veya giriş yapın.] bakabilirsiniz)
Java nasil calisir?
Bir java yazilimi su sekilde gelistirilir:
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 yazida java'nin basitce ne oldugunu, nasil calistigini ve java ile
iliskili bazi kavramlari basitce ve bildigim kadari ile aciklamaya
calisacagim
On bilgi.
Java Sun microsystems muhendislerinden James Gosling tarafindan
gelistirilmeye baslanmis gercek nesneye yonelik, platform bagimsiz,
yuksek performansli, cok islevli, yuksek seviye, interpreted[adim adim
isletilen] bir dildir (son ozellik, yani adim adim isletilen konusuna
aciklik getirilecek).
Java ilk ciktiginda daha cok kucuk cihazlarda kullanilmak icin
tasarlanmis ortak bir platform dili olarak dusunulmus. Ancak bakmislar
ki platform bagimsizligi ozelligi C ve C++'tan cok daha ustun ve guvenli
bir yazilim gelistirme ve isletme ortami sunuyor, hemen her yerde
kullanilmaya baslanmis. Su anda ozellikle kurumsal alanda ve mobil
cihazlarda son derece populer olan java, ozellikle J2SE 1.4 ve gelecek
1.5 surumu ile masautunde de gucunu arttirmayi hedefliyor. Java'nin ilk
surumu olan Java 1.0 (1995) Java Platform 1 olarak adlandirildi ve
tasarlama amacina uygun olarak kucuk boyutlu ve kisitli ozelliklere
sahipti. Daha sonra platformun gucu gozlendi ve tasariminda buyuk
degisiklikler ve eklemeler yapildi. Bu buyuk degisikliklerden dolayi
gelistirilen yeni platforma Java Paltform 2 adi verildi ama versiyon
numarasi 2 yapilmadi, 1.2 olarak devam etti. Bu bahar cikacak Java 1.5,
gecen 1.2, 1.3 ve 1.4 surumlerinin ardindan en cok gelisme ve
degisikligi barindiran surum olacak. (java konusunda temel bilgi icin [Linkleri görebilmek için üye olun veya giriş yapın.] bakabilirsiniz)
Java nasil calisir?
Bir java yazilimi su sekilde gelistirilir:
- Programci java kodunu yazar.
- 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.
- Bu byte kod Java virtual Machine (Java
Sanal Makinesi) tarafindan adim adim isletilir. Asagida java ve C++
kodunun gecirdigi asamalar gosterilmistir.
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)