JAVA Programlama Dili {!}

Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.
gX2
03-01-2006, 09:13   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
10 mesaj
Kayıt Tarihi:Kayıt: Eki 2005

JAVA Programlama Dili
Genel Bakış

Java Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış gerçek nesneye yönelik, platformdan ba ımsız, yüksek performanslı, çok işlevli, yüksek seviye, interpreted[adım adım işletilen] bir dildir. Java ilk çıktı ında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir platform dili olarak düşünülmüş. Ancak bakmışlar ki platform ba ımsızlı ı özelli i C ve C++'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunuyor, hemen her yerde kullanılmaya başlanmış. Şu anda özellikle kurumsal alanda ve mobil cihazlarda son derece popüler olan Java özellikle J2SE 1.4 ve gelecek 1.5 sürümü ile masaüstünde de gücünü arttırmayı hedefliyor. Java'nin ilk sürümü olan Java 1.0 (1995) Java Platform 1 olarak adlandırıldı ve tasarlama amaçına uygun olarak küçük boyutlu ve kısıtlı özelliklere sahipti. Daha sonra platformun gücü gözlendi ve tasarımında büyük de işiklikler ve eklemeler yapıldı. Bu büyük de işikliklerden dolayı geliştirilen yeni platforma Java Paltform 2 adı verildi ama versiyon numarası 2 yapılmadı, 1.2 olarak devam etti. Bu bahar çıkacak Java 1.5, geçen 1.2, 1.3 ve 1.4 sürümlerinin ardından en çok gelişme ve de işikli i barındıran sürüm olacak. (Java konusunda temel bilgi için şuraya bakabilirsiniz) 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'dir. Çünkü bir kere bytecode oluştuktan sonra yazılım tüm işletim sistemlerinde çalışabilir. Bu byte kod Java virtüal Machine (Java Sanal Makinesı) tarafından adım adım işletilir. Aşa ıda java ve C++ kodunun geçirdi i aşamalar gösterilmiştir. Şimdi bu adımları iyice bir inceleyelim: 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ı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. Derleme Derleyici kısaca herhangi bir editör ile yazılan java kaynak kodlarını (yanı .java uzantılı sınıfların yer aldı ı dosyaları) java sanal makinesinin çalıştırabilece i bir tür makine dili (assembler) olan Bytecode'a dönüştürür. Bu dönüştürülen bytekod ise (.class ) dosyaları içerisinde saklanır. Java kodunu derlemek için bir java derleyicisine ve java kütüphanelerine ihtiyacınız var. Şu anda iki derleyici yaygın olarak kullanılamktadır. Bir tanesi Sun'in SDK'sı ile birlikte gelen javac. di eri ise IBM'in açık kodlu derleyicisi jikes. Benim yaygın olarak kullandı ım Jikes, çok hızlı derlemesi ile ünlü olsa da en son java yazılımlarını derlemek için javac'ye ihtiyaç duyulabilir. Ayrıca linux altında derleme yapmak için gnu lisansı ile geliştirilen açık kodlu Gnuj kullanılabilir. Derleyici ve kütüphanelerin bulundu u (Java API) uygulamaya "J2SE SDK" adı verilmiştir. Çalıştırma ve Java sanal makinesı Sanal makine donanımdan ba ımsız yazılım geliştirme ihtiyacına cevap verme amacıyla geliştirilen bir teknolojidir. 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 hayalı 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. Bytekod ilkel işlemlerin yanında (ilkel işlemler, mikroişlemci seviyesi komutlardır, aritmetik işlemler, bit işlemleri, bellek ve yı ın işlemleri vs.) sanal makinenin üzerinde çalıştı ı işletim sistemine yönelik işlemler de barındırır. Bu sayede Java Virtual Machine yazıcı, seri port, grafik, dosya servisı, a ba lantısı gibi yazılım ve donanım servislerine erişim yapabilir. Java'nin do rudan bytecode çalıştırması performansının düşük olabilece i izlenimini verebilir. Ancak, JVM tasarımı geçen 10 yılda çok de işmiş ve geliştirilmiştir. Şu anda java'nin performansı ço u alanda C++'in performansına yakın bir seviyededir ve işlemci hızı ve bellek miktarının her geçen yıl katlanarak artması ile performans konusu ço u uygulamada artık ikinci planda kalmıştır. Aşa ıda çeşitli platformlar için java'nin çalışması basit blok şema olarak gösterilmiştir. E er sözkonusu dil C++ olsayıd üç ayrı kod yada 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) Java ile ilgili bazı kavramlar Hot Spot teknolojisi Java sanal makinesi HotSpot adı verilen özel bir teknolojiyi içinde barındırır. HotSpot yani sıcak nokta , bir yazılımda sürekli olarak tekrarlanan ve üzerinden geçilen kod bölümlerine verilen bir isimdir. Java sanal makinesi bir kod çalışmaya başladıktan sonra sİklıkla kullanılan kod bloklarını gözler ve bir süre sonra bu bytecode bloklarının çalışılan sistemdeki gerçek işlemci komut karşılıklarını bir tür cep bellege yazar ve zaman ilerledikçe artık byte kod üzerinden de il do rudan sistemin öz komutlarını kullanarak yazılımın o bölümlerini işletmeye başlar. Bu şekilde ciddi performans avantajı sa lanmıştır. JIT Java ilk çıktı ında bytecode işletme hızı çok iyi de ildi. yerine göre sistemin öz yazılımlarından 5-10 kat yavaş çalışıyordu. Bu nedenle bazı yazılım geliştirme şirketleri JIT yanı "Just-in-time compile", "anında derleme" araçları üretmeye başladılar. Yapılan şey byte kodu sanal makinenin kurulu oldu u gerçek sistemin diline anında derleme yaparak dönüştürmesiydi. Bu sayede performansta ciddi artışlar sa landı. Ama 2000 yılından sonra HotSpot teknolojisinin gelişmesi ile JIT'in işlevi VM'içinde yer almaya başlamış, işlemci hızı ve bellek miktarının dramatik biçimde artması ile dış JIT yazılımları popülerli ini kaybetmiştir. Bugün halen bir kaç ürün pazarda bulunsa da genellikle bu yöndeki ihtiyaç yok olmuş gibi gözükmektedir. Java API Java API, yava yazılımlarında kullanılıan yazılım kütüphanelerine genel olarak verilen isimdir. Java API ile disk, grafik, ag, veri tabani, güvenlik gibi yüzlerce konuda kullanıcılara erişim imkanı sunulur. Java API J2SDK'nin bir parçasıdır. Çöp toplayıcı (Garbage Collector) Çöp toplayıcı java'nın en belirgin özelliklerinden birisidir. C++, C gibi dillerin en büyük handikaplarından birisi dinamik bellek yönetimidir. yazılımda işaretçi (pointer) kullanarak dinamik olarak bellek ayırdıktan sonra o bellek ile işiniz bitti inde mutlaka ayrılan belle i bellek yöneticiye özel metodlar yardımıyla (delete, destructor vs.) iade etmeniz gerekir. Yoksa bellek sizintisi (Memory Leak) oluşur ve bu bir süre sonra yazılımın ve işletim sisteminin beklenenden farklı davranmasına yol açar. Bugünün tüm büyük C ve C++ yazılımları az da olsa bellek sizintisi içerir (işletim sistemleri dahil). sızıntıların tespiti oldukça güçtür ve bulunması zor hatalara yol açar. Çöp toplayıcı sayesinde Java'da bir nesne oluşturulduktan sonra o nesne ile işiniz bitti inde hiç bir şey yapmanız gerekmez. Sanal makine akıllı bir biçimde kullanılmayan bellek bölümlerini belirli aralıklarla ya da adaptif metodlarla sisteme otomatik olarak temizler ve sisteme iade eder. Bu işleme çöp toplama, ya da "garbage collection" adı verilir. Çöp toplama sistemlerinin yapısı oldukça karmaşıktır ve geçen yıllar içinde büyük gelişmeler kaydedilmiştir. Çöp toplayıcının varlı ı java'da bellk sizintisi olmayaca ı anlamına gelmez, ama bellek sızıntıları daha ender olarak ve farklı şekillerde karşınıza çıkar ve genellikle tedavi edilmesi daha kolaydır. Sun'in çöp toplayıcısı hakkında detaylı bilgi için şuraya, IBM'ınki için şuraya bakabilirisniz Jar Jar, aslında bir tür sİkıştırma formatidir. Jar ile derlenen java kodları ile oluşan yzılımın paketlenip taşınması kolay bir hale getirilir. Jar dosyaları temelde bytekod blokları içerir. Jar dosyaları genellikle kütüphane oluşturmada ya da uygun biçimde hazırlanırsa işletim sisteminden do rudan çalıştırılabiliecek bir şekilde kullanılabilir (Executable jar, işletilebilir jar) jar dosyalarının içeri ini sİkisitrma yazılımları ya da java yazılım geliştirme araçları ile inceleyebilirsiniz. Java 1.5 ile yeni bir tür jar oluşturma metodu da kullanıma girecek. Pack200 adı verilen hiper-compression algoritması ile jar dosyaları 8 kata varan oranlarda daha az yer kaplayacak. Bunun özellikle uzak uygulamaların kullanımını ciddi biçimde kolaylaştırması bekleniyor. AWT ve Swing AWT, ilk java ile birlikte geliştirilen temel grafik arayuz oluşturma kütüphanesine verilen isimdir. Ancak Java 2 platformu ile birlikte AWT'nın yetersiz görülmüş ve çok daha geniş ve gelişmiş özelliklere sahip Swing kutuhanesi sisteme eklenmiştir. Özellikle çok platform destekleyen yazılımlarda kullanıcı arayüzü geliştirme aracı olarak swing halen önemini korumaktadır. Swing önceleri işletim sisteminin kullandı ı donanım grafik hızlandırma araçlarını kullanmadı ından yavaşlı ı ile eleştirilere hedef olmuştu. Özellikle Java 1.4 ile Swing, hem genel olarak sanal makinenin hızlanması ve kısmen donanım hızlandırmayı kullanması ile bu kötü şöhretinden sıyrılmaya başladı. Java 1.5 ile donanım? özellikle OpenGL kullanımı ve yeni arayuz gösterim şekli ile java'nin masaüstü uygulama geliştirmede popülerleşmesi bekleniyor. AWT halen swingin bir alt katmanında, temel 2 boyutlu grafik işlemlerinde kullanılmaya devam ediyor. SWT SWT swing'e bir alternatif olarak IBM tarafından geliştirilen bir gösterim sistemidir. Swing'den en büyük farkı çalıştı ı işletim sistminin grafik kütüphanesi ve komutlarını kullanmasıdır. Bu nedenle SWT uygulamaları Swing'e göre ço u yerde daha hızlı ve işletim sistemindeki di er uygulamaları andıran bir şekilde çalışmasını sa lar. Ancak yapı itibari ile SWT kullanımı Swing kadar efektif olamayabiliyor (özellikle olay mekanizması, tablo ve a aç yapılarındaki yavaşlı ı, ayrıca linux performansı ile SWT eleştirilmiştir). Swingin Java 1.5 ile performans açı ını kapataca ı iddia edilse de SWT'nin de artık java camiasında kabul görmüş bir sistem oldu u aşıkardır. SWT'nin dezavantajı ise java'nin bir parçası olmamasıdır. yanı SWT uygulamaları SWT kütüphanesi ile birlikte da ıtılmaktadır. En bilinen SWT uygulaması ünlü java yazılım geliştirme aracı Eclipse'tir. Bununla birlikte son yıllarda Swing ile profesyonel derecede arayuza sahip masaüstü yazılımları da ortaya çıkmıştır. Sonuçta herşey yazılımcının aracı ne kadar efektif kullandı ına bakıyor. Applet Applet, uzaktaki sistem üzerinden indirilip internet tarayıcı üzerinde çalıştırılabilien java uygulamalarına verilen isimdir. Java'nin son kullanıcılar tarafından tanınması applet sayesinde olmuştur dersek yanlış olmaz. Applet'ler sisteme zarar veremeyecek bir şekilde tasarlanmıştır ve bugün özellikle oyun sitelerinde halen yaygın olarak kullanılmaktadır. İçerisinde applet olan bir sayfayı açmaya çalıştı ınızda tarayıcınız otomatik olarak java sanal makinesini çalıştırıp ekranın applet'e ayrılan bölümünde uygulamanın çalışmasını sa lar. WebStart Webstart teknolojisi Windows ve Linux sistemlerinin baş belası olan uygulama kurulum, güncelleme ve silme dertlerine deva olmak üzere tasarlanmış bir sistemdir. Özellikle Java 1.5 ile daha yaygın kullanılmaya başlayaca ı tahmin edilen webstart teknolojisi kısaca yazılımların uzaktan yerel sisteme güvenli olarak kurulmasını ve korumalı bir alanda çalıştırılmasını sa lar. Appletlerin bir sonraki adımı olarak görülebilir. Bir webstart uygulamasını kurmak için internet üzerindeki özel bir ba lantıya tıklamak yeterli. Sistem otomatik olarak webstart sistemini çalıştırıp yazılımı java cep belle ine indirir. isterseniz masaüstüne kısayol koymasını da sa lar. Daha sonra sistem off-line ya da on-line olsa bile uygulama çalıştırılabilir, ve uzaktaki yazılım güncellendi inde otomatik olara -istenirse- yerel makinedeki yazılımın da güncelenmesi sa lanabilir. Kullanıcının özel olarak izin vermesi halinde uygulama yerel sisteme erişim hakkı kazanabilir. Aksi taktirde webstart uygulamaları sisteme yazma işlemi gerçekleştiremezler (yanı virüs ve zararlı yazılım tehlikesini son derece aza indirger.)

Java Diagramı (() Java hangi dilde yazıldı? Javanın çekirdek kısmı yani sanal makinenin C++ ve belki bazı yerlerde do rudan assembler kullanılarak yazıldı ını sanıyorum. Bu hükmü java bu sayfalarındaki örnek kodlara bakarak verdim. Java kütüphanelerinin büyük kısmı ise java ile yazılmıştır. Java Her yerde kullanılabilir mi? Hayır, java? özellikle donanım sürücüsü geliştirme, işletim sistemi seviyesi yazılımlar, bazı özel grafik yazılımları, yüksek hızlı 3 boyutlu grafikli oyunlarda kullanmak için uygun de ildir. Java 1.5 ve sonraki sürümlerde öpenGL deste i ile 3 boyutlu oyun uygulamalarında daha fazla kullanılması umuluyor. Neden Java? Bu soruya şu nedenleri gösterebilirim: En önemlisi platform ba ımsız; her hangi bir yerde yazdı ım yazılımı tek satır bile de iştirmeden tüm işletim sistemlerinde ve donanımlarda çalıştırabiliyorsunuz. Bu özelli i .Net'ten ustun. Güvenli kod yazımı. Pointer kullanımı, bellek sızıntıları, #ifdef satırları, karmaşık derleme sistemleri, işletim sistemi hatta derleyici ba ımlı kütüphanelerden u raşmış birisi olarak java'yi günümüzdeki haliyle C, C++'a tercih ederim. Nesneye yönelik: Bir kere alıştıktan ve kavradıktan sonra bir daha terkedemeyece iniz nesneye yönelik yazılım geliştirmenin güzel bir gerçeklemesidir. Bu nedenle kriptik anlaşılmaz script dilleri, hem ondan hem bundan diyen C++ gibi hibrit dilleri ve C gibi alt seviye bir işkence aletine karşı java'yi tercih ediyorum Performansı script dillerinden iyidir. Basitlik: az komut sayısı ve konulara ço unlukla aynı yönden yazılması ile ö renilmesi C++ ve C#'a göre kolay oldu undan tercih ediyorum. Seçenek: Birden fazla sanal makine, SDK ve uygulama sunucu geliştirici sayesinde tek geliştiriciye ba ımlı de ilim. Java'nin geliştirilmesi her ne kadar Sun'in denetiminde yapılsa da JCP adı verilen bir organizasyon ile di er şirketler de java'nin geliştirilmesine do udan katkıda bulunmaktadır. Ayrıca java'yi karmaşık bulanlar daha kolay anlaşılabilir BeanShell, Jython, Rubby, Groovy gibi JVM üzerinde çalışabilecek script dillerini kullanabilir. Geliştirme ortamları: Java ile yazılım geliştirebilece iniz ticari ya da bedava ve açık son derece güçlü ve çok sayıda yazılım geliştirme ortamları mevcut; üstelik tüm platformlarda. Olgunluk: Java geçen on yılda havanda iyice dövülerek olgun bir hale geldi. Şu andaçeşitli java sürümleri bankalar, askeri sistemler hatta uzay araçlarında kullanılmaya uygun olarak görülmektedir. Kurumsal alandaki uygulamaların büyük ço unda JAva tercih edilmektedir. .Net'in bu aşamaya gelmesi için daha kırk fırın ekmek yemesi gerekir ve genellikle ciddi bir yatırımcının zaman kaybına tahammülü yoktur. Açık kod: java ile gerçekleştirilen açık kodlu proje ve framework sayısı on binlerle ifade ediliyor; hemen her ticari uygulamanın bir açık kodlu karşılı ını bulmanız mümkün. Destek: Java şu anda IBM, Oracle, Sun, Bea gibi dev şirketler tarafından desteklenmektedir. Bu şirketler .Net yoluna gideceklerine dair bir işaret vermemişlerdir. O nedenle java'nin gelece ini aydınlık olarak görülüyor. İyi derecede java ve yazılım geliştirme bilenlerin iyi ve ciddi bir iş bulma şansı diger dillerden daha yüksektir.

* www.PowerDarbe.Com *