Öncelikle başlıklar halinde Java 6 ile birlikte gelen yeni özellikleri görelim(Parantez içerisindeki JSR ifadeleri "Java Specification Request" anlamına geliyor ve ilgili özelliğin tanımlandığı belirtim dosya numarasını gösteriyor):
- Pluggable Annotation Processing API (JSR 269)
- Common Annotations (JSR 250)
- Java API for XML Based Web Services - 2.0 (JSR 224)
- JAXB 2.0 (JSR 222)
- Web Services Metadata (JSR 181)
- Streaming API for XML (JSR 173)
- XML Digital Signature (JSR 105)
- Java Class File Specification Update (JSR 202)
- Java Compiler API (JSR 199)
- JDBC 4.0 (JSR 221)
- Scripting in the Java Platform (JSR 223)
Web Servisleri:Web servis istemcileri geliştirmek için kullanımı kolay bir uygulama geliştirme arayüzü sunulmaktadır. (Bkz)
Betik Kullanımı:Java kodunuz içerisinde betik kodu kullanıp ikisini bir arada kullanabiliyorsunuz (Bkz). Bir çok betik dilini ekleyerek genişletebiliyorsunuz (Bkz). Bu bayağı tartışılan bir konuydu. Çoğu insan çok kolay işleri bir betik dili ile yaparak Java'ya eklemeyi önemli olarak görüyor.
JDBC 4.0: Güncel JDBC uygulama geliştirme arayüzü bu sürümle birlikte dağıtılıyor (Bkz). Daha önce bu günlükte bahsettiğim Java DB birlikte dağıtılarak gömülü veritabanı kullanımı destekleniyor (Bkz).
Yeni Masaüstü Özellikleri: Swingworker, JTable sıralama, GroupLayout ve daha fazla yeni özellik bu sürümde eklenmiştir (Bkz).
İzleme ve Yönetim: Tüm izleme ve yönetim araçları (Bkz) gereksinim durumunda eklenecek hale getirildi. Ve yeni bir araç olan jhat eklendi.
Derleyici Erişimi: Program içerisinden javac derleyicisini kontrol edebiliyorsunuz.
Eklenebilir ("pluggable") açıklayıcı bilgiler ("annotation"):Kendi açıklayıcı bilgilerinizi tanımlayarak uygulamanız içerisinde kullanıp işleyebiliyorsunuz.
Masaüstü Konuşlandırma: Swing artık daha güzel görünüp, daha hızlı çalışıyor. Çalışma zamanı ve uygulama kurulumu yenilendi.
Güvenlik: PKI, Java GSS, Kerberos ve LDAP gibi servislerle bütünleştirme desteği geldi.
Başarım ve Kalite: İstemci ve sunucuda iki basamağa kadar başarım artışı sağlandı.
Yukarıdaki özellikler genel olarak Java 6 ile gelen yenilikleri içeriyor. Özelde ne yenilikler var, onları da kod örnekleriyle bir günlük yazısından faydalanarak Türkçeleştiriyorum.
I/O'daki değişiklikler
Şifreleri ekranda göstermeden okuma: Java SE 6 ile terminalden ekranda görünmeden (özellikle şifre okumak için çok iyi) girdi alabilme özelliği sağlanmış durumda. Bunu
java.io.Console
ile yapabiliyorsunuz: import java.io.Console;Belirtilmesi gereken bir kaç özellik:
...
char[] password = System.console().readPassword("password: ");
// sifreyi kullan
...
// sifreyi temizle
java.util.Arrays.fill(password, '\0');
System.console()
standart giriş veya standart çıkış terminal değilse null döndürür.readPassword()
bir dizi döndürür, böylece yukarıda gösterildiği şekilde null haline getirebilirsiniz.readPassword()
terminalin karakter kümesini kullanır. BuCharset.defaultCharset()
olmayabilir.
new File("A:\\tmp.txt").exists();Şeklinde bir kod çalıştığı zaman herhangi bir mesaj çıkmadan eğer A sürücüsünde disket yoksa exists() false döndürüyor.
Disk alanının bulunması: java.io.File içerisinde eklenen aşağıdaki metodlar disk alanı ile ilgili bilgiye erişmenizi sağlıyor:
Dikkat edilmesi gereken nokta bu metodların döndürdüğü değerler, yaklaşık değerlerdir. Arka plandaki işleri dikkate almamaktadırlar.
Konuyla ilgili bir kaç not:
- getUsableSpace() sadece Microsoft Windows için quota'ları hesaba alıyor.
- Her metod sonucu long olarak döndürüyor. Dönüş değeri erişim haklarıyla ilgili bir bilgi taşımıyor. Alana yazma izni olmayabilir.
- 0 dönmesi disk bölümünün olmadığı veya alan olmadığı anlamına gelir.
İşlemlerin başarılı olması durumunda metodlar true döndürür.
Microsoft Windows aygıtları artık dosya olarak görülmüyor: CON, NUL ve LPT gibi Windows aygıtları File.isFile() sorgusunda artık false döndürüyor.
File.toURL kullanımdan kaldırılıyor: Dosya isminden doğrudan URL oluşturmak saçma URL'lerin ortaya çıkmasına neden olabiliyor. Bu nedenle toURL metodu yerine
URL u = File.toURI(dosyaAdi).toURL()şeklinde bir kullanım yapılması gerekiyor.
Microsoft Windows için uzun yol ismi: Windows için artık 260 karakterlik (bu platformun sınırı) dosya yolu ismi kullanılabiliyor.
Diğer Dosya Sistemi Değişiklikleri:
- File.length() pagefile.sys gibi özel dosyalar için 0 döndürüyor. (Bkz)
- File.createNewFile() varolan bir dizin için yanlışlıkla IOException atarken artık false döndürüyor. (Bkz)
- File.listFiles() bağlanmış nfs dizinleri için artık doğru sonuçlar döndürüyor. (Bkz)
- File.deleteOnExit() yapılan dosyalar kapanma esnasında doğru çalışması için listeye atılarak çıkarken tek tek siliniyor. (Bkz)
- java.util.HashMap başarımı arttırıldı
- java.util.Arrays sınıfına dizinleri ve alt dizinleri kopyalamak için iki yeni metod eklendi. (copyOf, copyOfRange)
- Yeni kolleksiyon arabirimleri eklendi. (NavigableMap, NavigableSet, ConcurrentNavigableMap) İlişkili TreeMap, TreeSet gerçekleştirimleri yeni hale uyarlandı ve yeni eşzamanlı sınıflar (ConcurrentSkipListMap, ConcurrentSkipListSet) eklendi.
- İki bitişli kuyruklar için yeni arabirimler (Deque, BlockingDeque) eklendi. LinkedList Deque arabirimini gerçekleştirmek üzere güncellendi. Deque'nin verimli bir gerçekleştirimi olan ArrayDeque eklendi. Eşzamanlı gerçekleştirim olarak LinkedBlockingDeque gerçekleştirildi.
- Açılan jar dosyasındaki dosyaların zaman bilgisi olarak açılma zamanı yerine diğer araçlardaki gibi dosyaların zamanı kullanılmaya başlandı.
- Açık zip dosyalarının sayısındaki 2036 üst sınırı kaldırıldı. Artık platformun destekleyebildiği sayıda zip dosyası açık olabiliyor.
- Bir zip dosyasındaki girdi (dosya) sayısı sınırı dosyadaki girdi sayısı sahasının 2 byte olması yüzünden 64k oluyordu. Bu yüzden bu saha gözardı edilerek bu sınır kaldırıldı.
- Microsoft Windows için uzun isimlendirme zip dosyaları için de gerçekleştirildi.
Kaynaklar ve Ayrıntılı Bilgiler için Bağlantılar:
Java SE 6
What's New in Java SE 6.0
Java SE 6 Key Features
Java SE 6: Top Ten
Introduction to Java 6.0 New Features, Part I
Hiç yorum yok:
Yorum Gönder