Java Tarihçesi ve Özellikleri

Bilgisayarlar bulunduğundan beri programcılar hep daha kolay kod yazmaya ve bu kodların daha çok yerde çalışmasını sağlamaya odaklandılar. Gün geldi program yazılması gereken daha çok medya ortaya çıktı. Cep telefonları, el bilgisayarları gibi. Öyle bir dil olmalıydıki bunların hepsine hitap etmeliydi. Çözüm ise çok uzun yıllardan beri COBOL dilinde kullanılan bir mantığın uyarlanmasından geldi. Orta düzey derlenmiş kodlarla kod güvenliği ve ilave bir yazılım tarafından yorumlanarak çalıştırma mantığı.

Düşünülen şey şuydu. Kodlar yazılacak. Bir derleyici yardımı ile kodlar derlenip hatalar giderilecek ve ara düzeyde Binary formatta bir çalıştırılabilir dosya oluşacak. Ancak bu dosya direkt execute edilebilir bir dosya olmayacak ve ilave bir program yardımıyla anında yorumlanarak çalıştırılacak.

Bunların çeşitli faydaları vardı.
1. Yazılımcılar kodlarını koruyabilecekti
2. İşlemcilerin çalışma mantığı ve bilgisayarların yapıları farklı olduğu için programın defalarca derlenmesi ve ayrı ayrı binary dosyaların oluşturulması gerekmeyecekti.
3. Herhangi bir işletim sistemi için geliştirilen Java çalıştırıcı olması Java uygulalamalarını çalıştırmak olacaktı.

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, adım adım işletilen (interpreted) bir dildir.

Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir platform dili olarak düşünülmüştü. Ancak platform bağımsızlığı özeliği ve sunduğu geniş kütüphane desteği sayesinde birden her yere yayılarak kitlesini genişletmiştir.

Java şu anda özellikle kurumsal alanda ve mobil cihazlarda son derece popülerdir. Özellikle J2SE 1.4 ve 5 sürümü ile masaüstü uygulamalarda da yaygınlaşmaya başlamıştır. Masaüstü uygulamalar için en büyük handikapı olan hız problemininde nispeten giderilmiş olması nedeniyle Java bu açıdanda güçlenmiştir.

Java’nin ilk sürümü olan Java 1.0 (1995) Java Platform 1 olarak adlandırıldı ve baştada belirttiğimiz gibi tasarlama amacı nedeniyle küçük boyutlu ve kısıtlı özelliklere sahipti. Daha sonra adeta “yahu biz ne bulmuşuz böyle” diyerek, platformun gücü farkedilerek, tasarımında büyük değişiklikler ve eklemeler yapıldı. Bu değişikliklerden dolayı geliştirilen orta çıkan yeni ürün mantık dışında ilk ortaya çıkan Javadan çok farklı bir şeydi. Bunu vurgulamak için Java Platform 2 adı verildi. Ama versiyon numarası 2 yapılmadı, 1.2 olarak devam etti.

2004 sonbaharında çıkan Java 5, sürümü ise 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 oldu. Java SE 6 ise (kod adı: Mustang) en son sürümdür.

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.

JRE ve JVM 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” JVM (sanal makine) sayesinde varolmuştur. JVM her ne kadar yazılım olsada aslında bir nevi hayali bir CPU gibi gibi çalışır. 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. Bir komut seti için yazılan kod diğerinde çalışmaz yada değişiklik gerekir.

JVM’ 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 ilk bakışta performan açısından sorundur. (Gerçekten de Java’nın ilk yıllarında performan cidden çok kötü idi Ancak, JVM tasarımı yıllar geçtikçe çok değişmiş ve geliştirilmiştir. Şu anda performans masaüstü uygulmarına oldukça yaklaştırılmıştır.

Aslında C ve C++ dilleri de taşınabilir bir yapıdadır. Ancak bunların bu gücü Java ile kıyaslanmayacak derecede zayıftır. EMek ve çaba gerektirir.

JAVA platrfomuna ait bazı kavramlar

JRE

Java programlarını çalıştırmak için her makineye yklenmesi gereken ve değişik işletim sistemleri ayrı ayrı yazılıp derlenen bir yazılımdır. Tuhaf ama Java nın hızı rakip olarak ortaya çıktığı C dilinin hızına bağlıdır. JRE ne kadar iyi ve hızlı ise Java programları da o kadar hızlı çalışır.

Çöp toplayıcı (Garbage Collector)

Çöp toplama teknolojisi aslında Java ortaya çıkmadan da vardı ancak Java ile adını duyurmuş ve yaygın olarak kullanılmaya başlanmış bir kavramdır. Peki nedir ne işe yarar derseniz. Programın geride bıraktığı hafıza parçaçıklarını takip ederek dinamik hafıza yönetimi sağlar.

C++, C gibi dillerin en büyük handikaplarından birisi dinamik bellek yönetimidir. Bir programcı yazılımda işaretçi (pointer) kullanarak dinamik olarak bellek ayırdıktan sonra o bellek ile işi bittiğinde mutlaka ayrılan belleği bellek yöneticiye özel metodlar yardımıyla (delete, destructor vs.) boşaltıp ide etmelidir. Ancak işin kötü tarafı bunun yazılımcıya bırakılmış olmasıdır. Sonuçta yazılımcıda insandır ve bunu unutabilir. Unutursa bellek sızıntısı (Memory Leak, MLK) oluşur ve bu bir süre sonra yazılımın ve işletim sisteminin beklenenden farklı davranmasına yol açabilir. Sızıntıların tespiti oldukça güçtür ve bulunması zor hatalara yol açar. Bu nedenle bugünün tüm büyük C ve C++ yazılımları az da olsa bellek sızıntısı içerir (işletim sistemleri dahil).

Çö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 uyarlamalı metodlarla 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 bellek sızıntısı 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.

JIT

Java programlarının daha hızlı çalışması için geliştirilmiş bir anlık derleme sistemidir. Java ilk çıktığında bytecode normal yazılımlarından 5-10 kat yavaş çalışıyordu. Bu JIT yani “Just-in-time compile”, araçları üretmeye başladılar. Yapılan şey byte kodu normal sistem programları diline anında çevirmesiydi. Bu sayede performansta ciddi artışlar sağlandı. Ama 2000 yılından sonra bu işlem zaten JVM tarafından yapıldığı için JIT yazılımların işlevi kalmamıştır.

Java API

Java API, Java yazılımlarında kullanılan yazılım kütüphanelerine genel olarak verilen isimdir. Java API ile disk, grafik, ağ, veri tabanı, güvenlik gibi yüzlerce konuda kullanıcılara erişim imkanı sunulur. Java API J2SDK’nın bir parçasıdır.

Jar

Jar, aslında bir tür sıkıştırma formatıdır. Jar ile derlenen java kodları ile oluşan yazı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ıkışıtırma yazılımları ya da java yazılım geliştirme araçları ile inceleyebilirsiniz. Java 1.5 ile Pack200 adı verilen hiper-compression algoritması kullanılmakta ve jar dosyaları daha küçük boyutlara indirilebilmektedir.

AWT ve Swing

AWT, ilk java ile birlikte geliştirilen temel grafik arayüz oluşturma kütüphanesine verilen isimdir. AWT isletim sisteminin doğal grafik yapılarına erişimi sağlar. Ancak Java 2 platformu ile birlikte AWT yetersiz bulunmuş ve çok daha geniş ve gelişmiş özelliklere sahip Swing kütühnesi sisteme eklenmiştir. Özellikle çoklu 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. Ancak Java Java 1.4 sürümünden itibaren hem sanal makine de yapılan iyileştirmeler hemde donanıma özgü hızlandırma yöntemlerinin de kullanılmaya başlanması ile oldukça hızlanmıştır. Java 5 ve 6 ile donanım, özellikle OpenGL-DirectX kullanımı ve yeni arayüz gösterim şekli masaüstü uygulamalarda Java daha yayınlaşacaktır. AWT ise halen Swing’in bir alt katmanında, temel 2 boyutlu grafik işlemlerinde kullanılmaya devam ediyor.

SWT

SWT IBM tarafından sunulan Swing’e alternatif 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 sayede SWT uygulamaları Swing’e göre çoğu yerde daha hızlı ve işletim sistemindeki diğer uygulamaları andıran biz hızla çalışmaktadır. Swing geliştiricileri her ne kadar performans açığını kapatacaklarını iddia etselerde SWT artık kabul görmüş bir sistem olmuştur. SWT’nin dezavantajı ise Java’nın bir parçası olmamasıdır. Böyle olunca SWT uygulamaları ile birlikte SWT’ nin kendisinde dağıtılması gerekir. Bu sürüm çakışmalarına sebep olabilir. SWT ayrıca Windows dışı sistemlerde henüz yeterince olgunlaşamamıştır. En bilinen SWT uygulamalari ünlü Java yazılım geliştirme aracı Eclipse ve Bittorrent uygulamasi Azureus’tur.

Hot Spot Teknolojisi

JVM içinde barındırılan teknolojilerden birisidir. HotSpot yani sıcak nokta, bir yazılımda sürekli olarak tekrarlanan ve üzerinden geçilen kod bölümlerine verilen bir isimdir. Komutların makine tarafından daha hızlı işlenebilmesi için optimize edilmesi esasına dayanır. Günümüzde bir çok derleyici bunu zaten yapmaktadır. Ancak JVM bunu byte kod için yapmaktadır. Mod kavramı ile kafa karıştırmadan basitçe özetleyelim; hot spot temel olarak JVM’ nin zamanla kodu tartıp, tekrar eden ksımların daha iyi çalışması için optimize etmesi demektir.

Applet

Java’nın en büyük atılımlarından birisi Applet’ler olmuştur. Fikir şu esasa dayanır. Java kodlarını web ortamında çalıştırabilmek. Browserlara byte kod çalıştırma destei eklenir ve bu ortamda çalıştırılmak için yazılan yazılımlara da applet adı verilir. Mucizevi olan şudur. normalde web yazılımları sunucu tarafında işletilip kullanıcıya HTML yani düzyası cevap gönderilir. Oysa Apllet kullanıcı tarafına inip orada çalışmaktadır. Kısaca normal web programcılığında çok zor olan birçok şey Java ile mümkün olmuştur. 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 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. istenirse masaüstüne kısayol koymasını da sağlar. Daha sonra sistem cevrim-ici (on-line) ya da cevrim-disi (off-line) olarak calistirilabilir çalıştırılabilir, ve uzaktaki yazılım güncellendiğinde otomatik olarak -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.)

730 - (Toplam) 3 - (Bugün)

Bu yazı Java, Programlama kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word