Piyasaya farklı işletim sistemlerinin ve çok sayıda farklı donanımın çıkması, bilgisayar ağlarının gelişmesi, bir ağa bağlı makinelerin farklı işletim sistemleri altında çalışan farklı marka ve model bilgisayarlardan oluşuyor olması problemi büyüttü. Problemin çözümü, platformdan bağımsız çalışabilecek bir dilin yaratılmasını gerektiriyordu. Bu iş, Sun firmasının geliştirdiği Java dili ile çözüldü. Gerçi Sun firması, ortaya çıkan bu büyük problemi çözmek için değil, daha basit bir amaçla yola çıktı. Elektrikli ev aletlerinin kolay kullanılmasını sağlayacak bir dil geliştirmek istiyordu. Kısa zamanda, bu işin ancak ortak bir platformda yapılabileceğini anladı. Sun’ın programcısı James Gosling, 1995 yılında her platformda çalışan Java dilini oluşturdu.
Javanın Doğuşu
Belirli bir işletim sistemi altında çalışan belirli tür bir makinede derlenen bir kaynak program, ancak o işletim sistemi altında çalışan o tür makinelerde koşturulabiliyordu. İşletim sistemi ve/veya makine türü değişince; yani platform değişince, program orada koşamıyordu; yeni platforma uygun bir derleyici ile yeniden derlenmesi gerekiyordu. Buna, kısaca platform bağımlılık diyoruz. Platform bağımlılıktan kastettiğimiz şey, bir kaynak programın belirli bir işletim sistemi altında çalışan belirli bir derleyici ile derlendiği ve ancak belirli bilgisayar türlerinde koşturulabildiği gerçeğidir. Örneğin, Windows işletim sistemi altında çalışan bir PC de derlenen bir bilgisayar programını Macintosh ya da Linux işletim sistemi altında çalışan bir makinede koşturmak mümkün değildir.
Piyasaya farklı işletim sistemlerinin ve çok sayıda farklı donanımın çıkması, bilgisayar ağlarının gelişmesi, bir ağa bağlı makinelerin farklı işletim sistemleri altında çalışan farklı marka ve model bilgisayarlardan oluşuyor olması problemi büyüttü.
Problemin çözümü, platformdan bağımsız çalışabilecek bir dilin yaratılmasını gerektiriyordu. Bu iş, Sun firmasının geliştirdiği Java dili ile çözüldü. Gerçi Sun firması, ortaya çıkan bu büyük problemi çözmek için değil, daha basit bir amaçla yola çıktı. Elektrikli ev aletlerinin kolay kullanılmasını sağlayacak bir dil geliştirmek istiyordu. Kısa zamanda, bu işin ancak ortak bir platformda yapılabileceğini anladı. Sun’ın programcısı James Gosling, 1995 yılında her platformda çalışan Java dilini oluşturdu.
Java oldukça basit, nesneye yönelik programlamaya dayalı, güvenli, dinamik ve yüksek performansa sahip bir programlama dilidir. Java’yı yazanlar C++ programlama dilini kendilerine model olarak seçmişler , gerekli görmedikleri özellikleri kaldırarak yeni özellikler ile Java’yı daha güçlü hale getirmişlerdir. C++ nesnel programlamaya dayalı son derece güçlü bir programlama dilidir. Ancak kimi zaman C++ ‘ın bu özellikleri problemler çıkarabilir. Yazılım geliştirme sırasında çıkan problemlerin zaman çok fazla zaman kaybına yol açması nedeniyle Java’da mantıksal hatalara yol açabilecek bir çok özellik daha iyi duruma getirilmiş, diğer programcıların da kodu daha kolay anlamaları için çalışmalar yapılmıştır. Bu çalışmalar yazılımın maliyetini düşürmede son derece önemli rol oynarlar ve bu yönüyle Java C ve C++ dillerinden ayrılır.
Java’nın Nesnel Programlama Yönü
Java nesneye yönelik programlamaya destek verir. Nesneye yönelik programlamada herşey bir nesnedir.Bir nesne veriler ve bu veriler üzerinde işlemler uygulayabilecek metodlardan oluşur. Bu metodlar nesne içerisinde korunabilir veya verileri koruyabilir. Nesneye yönelik programlamada kalıtımsallık da son derece önemli bir yer tutar. Kalıtımsallık sayesinde işinize yarayan başka bir metodun özelliklerini yeni yarattığınız metoda atayabilir ve üzerinde değişiklik yaparak hem baştan sona tekrar yazmak zorunda kalmaz hemde zamandan kazanabilirsiniz. Kalıtımın bir başka yararı ise anlaşılabilir olmasıdır. Nesnelerinizi sınıflarına göre düzenli bir şekilde ayırdığınızda , dökümantasyonu ve ilerki çalışmaların daha kolay yürümesini sağlarsınız.
Bir çok programlama dilinde, kaynak kod önce derlenir ve daha sonra çalıştırılır. Java derlenmesi ve çalıştırılması bakımından biraz farklıdır.
Derleme sırasında java kaynak kodu, bytecode’lara çevrilir. Platformdan (işletim sisteminden) bağımsız olarak bytecode’lar, java interpreter’i tarafından bilgisayarda java platformu üzerinde çalıştırılırlar. Derleme sadece bir kez gerçekleştirilir , ancak java programı her çalıştırıldığında java interpreter’i her seferinde devreye girer.
Java bytecode’larını Java Virtual Machine’in (Java VM) anlayabileceği kodlar olarak düşünebilirsiniz. Java VM her işletim sisteminde bulunur ve bytecode’ları anlayarak sistem üzerinde oluşturduğu Java platformu sayesinde java programının ya da java applet’ının çalışmasını sağlar. Bu sayede hangi işletim sisteminde yazılmış ve derlenmiş olursa olsun, java programınızı başka işletim sistemleri üzerinde de çalıştırabilirsiniz.
Örneğin, Unix’de derleyerek oluşturduğunuz ,bytecode dosyasını , Windows’da ya da Macintosh bir bilgisayarda çalıştırabilirsiniz. Bu nedenle java bytecode’ları “bir kere yaz, her yerde çalıştır” sloganı ile de anılırlar. Bunun anlamı, sisteminizde Java VM yüklü olduğu sürece, java programlama dili ile yazılmış aynı program Windows işletim sisteminde de,Linux’da ya da Mac’da çalışabilir.
Java Platformu
Bir programın çalıştığı donanım ya da yazılım ortamına platform denir. Windows , Linux, Solaris, MacOS gibi populer kullanılan platformlardan bahsettik. Bir çok platform da işletim sistemi ve donanımın birleşmesi ile oluşturulur. Java platformu, donanım tabanlı platformların üzerinde çalışan ve sadece yazılım platfomu olması yönüyle diğer platformlardan ayrılır.
Java platformunun iki birimi vardır.
· Java Virtual Machine (Java VM)
· Java Application Programing Interface (Java API)
Java VM java platformunun tabanını oluşturur ve çeşitli donanım tabanlı platformlar üzerine oturtulmuştur.
Java API ise , son derece yararlı özelliklere sahip hazır yapılmış yazılım parçalarından oluşur. Grafik ara birimi (GUI) bunlardan birisidir. Java API iki grupta toplanır. Birinci grupta ilgili classların kütüphane dosyaları,paketler, ikinci grupta ise ara birimler yer alır. Native code, derlendikten sonraki koddur. Derlenen kod belirli bir platformda çalışır. Platformdan bağımsız olmasıyla Java’nın biraz yavaş olabileceği düşünülebilir. Bununla birlikte, akıllı derleyeciler, iyi ayarlanmış interpreterlar, ve just-in-time bytecode derleyeciler performansı biraz daha arttırarak native koddan elde edilen başarıya yakın bir değer yakalayabilir.
JAVA İLE NELER YAPABİLİR ?
Java web’e yeni bir akıcılık getirmiştir. Java programcıları çeşitli medya formatlarını ve veri protokollerini her java uyumlu browserda görünebilir hale getirmişlerdir. Düz html ve multimedya içeren sayfalara, çalıştırışabilir ve işlem yapılabilir içerik eklenmesine olanak sağlanmıştır.
Java programları applet olarak ya da uygulama olarak yazılırlar. Appletları java uyumlu browserlarda görebilirsiniz. Animasyonlar ve interaktif uygulamalar ile internette gezinirken muhtemelen karşılaşmışsınızdır. Ancak java programlama dili sadece akıllı ve eğlenceli appletlar yazmak için değil, aynı zamanda güçlü bir yazılım platformudur. Çeşitli API’leri kullanarak birçok program yazabilirsiniz.
Appletlarından farklı olarak, uygulamalar direk olarak Java platformu üzerinde çalışan programlardır. Server olarak bilinen özel bir çeşit uygulama, network üzerinde hem hizmet verir , hem de diğer client’ları destekler. Örneğin, Web Serverları, Proxy Serverları, Mail Serverları.... Diğer bir özel programda Java Web Serverlarında çalışan, cgi scriptleri gibi interaktif olarak web uygulamaları yaratmaya yarayan servlet’tır.
JavaBeans de Java platformuna bileşen teknolojisini sunar. JavaBeans API ile tekrar kullanılabilen, platformdan bağımsız olarak çalışabilen bileşenler yaratmak mümkündür. Bu bileşenleri applet, uygulama ya da karışık bileşenler olarak birleştirmekde desteklenmektedir.JavaBean componentleri Beans olarak bilinir.