1. Basit & Küçük
Java programlama dilinin öğrenilmesinin kolay olduğunu iddia eden Sun’daki geliştiricilere, yeni programlamaya başlayanların inanması biraz güç olacaktır.
Programlamayı bilen kişiler için (özelliklede C++) çok daha kolaydır. Çünkü Java C++ ’a çok benzer.
C++ ’da karmaşık olan bazı şeyler atılmış, basit olanlar eklenmiş
Küçük : Java çok küçük işlemcilerde bile çalışabilir. Temel ihtiyacı ( İşlemci, standart sınfılar ve "Thread"-desteği ) 215 KB dır. (Sun ’ın iddiası )
2. Nesneye yönelimli & Dağınık
Nesneye yönelimli mi ? O da ne? Nesne yönelimli (Object Oriented) , insanların kavramada çok zorluk çektikleri bir kavram. Ama bu, iyi özelliklerinden dolayı, yazılım geliştirmede kabul görmesini engelleyemiyor.
Adından da anlaşıldığı gibi, nesneye yönelimli programlamada insan nesne geliştirmeye konsantre oluyor. Nesne, verilerden ( değişkenler ) ve bu verileri değiştirmeye yarayan fonksiyonlardan ( Method ) oluşuyor. Nesneye yönelimli programlamada, sonradan kullanılabilecek genel nesneler (Object) oluşturulması idealdir (Sınıflar). Profesyonel programlamada, devamlı büyüyen havuzda bulunan nesnelere ulaşılarak, bu nesneler tekrar kullanılabilir (Sınıf kütüphaneleri). Standart sınıf kütüphaneleri (Giriş/Çıkış, Grafik vb.) oluşturulmuştur. Bunlar programların içine katılırlar.
Uzaktaki bir sistemde bulunan nesnelere Java programları Internet üzerinden kolayca ulaşabilirler.Sun firmasının vizyonu : Programların tamamının lokal bilgisayarda bulunmaması, gerekli parçacıklarına ihtiyaç halinde internet üzerinden erişilmesi. Sun firmasının bu vizyonunun gerçek olup olmayacağını göreceğiz...
3. Yorumlayıcılı & Hızlı
Java programları direkt işlemci tarafından yorumlanmaz. Özel bir program tarafından yorumlanırlar (Yorumlayıcı = Interpreter ).
Bunun avantaj ve dezavantajları vardır : Programı geliştirirken bazı adımlardan kurtulursunuz. Örneğin bazı program parçacıklarına bağlantı kurmaktan (Link). Dezavantajı ise tüm desteklemelere rağmen, programın çalışmasının yavaş oluşu.
Sun firması bir ara katman oluşturdu. Java bir önyorumlayıcı tarafından byte koduna (bytecode) çevrilir. Çok büyük avantaj olan, bazı küçük değiştirmelerde derleyemeye gerek kalmaması, bununla yok oluyor.
Fakat bu "bytecode" makina diline çok yakındır. Bundan dolayıdır ki çok hızlı bir kod oluşturulmuş oluyor. Bu arada "Just-in-Time" Compiler lar "bytecode" u gerçek makina koduna çeviriyorlar. Böylece hız 10 kat (hatta daha fazla) artıyor.
Sun firmasının geliştireceği özel "Java işlemcileri" kapıda. Bunlar Java programları direkt çalıştıracaklar.
4. Sağlam & Güvenilir
Derleyici (Compiler) ve yorumlayıcı (Interpreter) kombinasyonun başka bir yönden avantajları var. Ön derleyici tip (ve buna benzer) hataları kontrol ederken, yorumlayıcı hataları yakalar ve gereğini yapar. En kötü ihtimalle, derlenmiş bir program çöker.
Yorumlayıcı, yabancı verilere ulaşılmasını engeller. C++ ’taki bu özellik kaldırmış.
Gerçekten Java güvenli bir programlama dili ( Hiç bir şey %100 güvenli değildir. Günümüzde kredi kartı üçkağıtçılığı yapılmasına rağmen halen insanlar hal kredi kartlarını internet üzerinden kullanıyorlar. Niye Java %100 güvenilir olsun ki ....)
5. Platform bağımsız & Taşınabilir
Burada program geliştiricilerinin bir rüyası gerçekleşiyor:Herkes farklı işlemcilerde ve işletim sistemlerindeki problemi bilir. Birisinde çalışır diğerinde çalışmaz ve bu geliştiricilerin kabusudur ( Düşünün ki 10 tane video sistemi var ). Derleyici burada devreye girer ve programı "bytecode" çevirir. Bu kod tamamen platform bağımsızdır ve tüm işlemcilerde çalışır ( İnşAllah )
Bir Java programı, hiçbir değişiklik yapılmadan, desteklenen tüm sistemlerde çalışır.
Ayrıca C++ ’da bazı belirsizlik arz eden tanımlar temizlenmiş. Bu tanımlar değişik sistem ve derleyicilerde, değişik biçimlerde kabul ediliyorlardı. Örneğin C++ ’da hiçbir zaman bir tamsayının (integer) kaç byte olduğu bilinemiyordu. Java’da bir tamsayı herzaman (Hangi sistemde olursa olsun ) 4 Byte dır.
6. Multithread & Dinamik
Modern bir programda bir çok işlem aynı zamanda olur. Bu özelliğe "multithread" deniyor (Buna uygun bir türkçe kelime bulamadım). Java bu tür programlar geliştirenlere, özel fonksiyonlar sunuyor ki, geliştiriciler programın asıl amacına konsantre olsunlar.
Bazı düzenlemelerden dolayı Java, C++ ’dan daha dinamiktir. Sınıflar (Class) ve Nesneler (Object) arasındaki ilişkiler katı bir kural ile bağlı değildirler. İleriki safhalarda değiştirilmesi çok basittir. ( Bu da yorumlayıcı sayesindedir)