Java 7 ye Eklenmesi Beklenen Yenilikler

Bilindiği gibi 2010 yılının sonbaharında, Java platformunun kod adı Dolphin olan yeni sürümü Java 7 yayınlanacak.

Java 7′nin gelişi ile beraber, pekçok geliştirici, edindiği tecrübeler ve modern programlamanın getirdiği özellikler doğrultusunda, birçok dil ve platform yeniliğinin Java’nın bu yeni sürümüne eklenmesi için öneride bulunuyor.

Yapılan tüm bu yenilik önerilerinin, Java 7 ye eklenmesi beklenmiyor elbet ama bir takım yeniliklerin Java 7 ile Java programlama diline ve Java platformuna eklenmesi artık kesin gibi.

Bu yazıda, Java 7 ye eklenmesi beklenen birtakım özellikleri ele alacağım.

Java 7 (Dolphin) Yenilikleri

NIO 2

Bilindiği gibi Java 7 nin geliştirilmesi ile paralel, Java’ya daha önce adapte edilen NIO (New I/O) paketi de geliştiriliyor. NIO2 kod adı ile geliştirilen yeni NIO paketi sayesinde, Java’nın I/O becerisi çok daha gelişmiş bir yapıya dönüştürülecek.

Bu paketi baştan sona ele almak bu yazının konusu değil. Ancak NIO2 hakkında en çarpıcı özelliklerden biri, artık dosya sistemi üzerinde bulunan değişiklikleri anında Java uygulamalarımızda ele alabileceğiz. WatchService ve WatchKey sınıfları incelemeye değer.

Koleksiyonlardan Veri Elde Etme

Daha önce, koleksiyonlardan veri elde etmek için koleksiyon sınıflarının sunduğu methodlar aracılığı ile verilere ulaşabiliyorduk. Ancak Java 7 ile array tarzı bir yaklaşım koleksiyonlara (collection) eklenmiş.

Güncel Yöntem

myList.get(0);
myMap.get("foo");

Yeni Yöntem

myList[0];
myMap["foo"];

Sayılarda Altçizgi (_) Kullanımı

Artık sayılarda ( _ ) kullanarak, çeşitli amaçlar için sayıları formatlayabiliyoruz. Örnek :

int telNumber = 245_34_65;
long creditNumber = 1234_5678_9012_4456L;
//derleme zamanında _ ele alınmıyor
int result = (1_2 + 23_8) / 5_0; // sonuç 5

Binary Literals

Artık Java 7 ile, binary (ikili) sayıları doğal dil desteği sayesinde basitçe tanımlayabiliyoruz. Eskiden kapsayıcı (wrapper) sınıfların sağladığı methodlar yardımı ile bu işi yaparken, artık doğrudan “0b” ile binary sayı oluşturabiliyoruz.

Güncel Yöntem

Integer.parseInt("101010", 2);

Yeni Yöntem

int binary =  0b101010;

Geliştirilmiş Tip Çıkarımı ( Type Inference)

Özellikle Java’da bulunan generic tiplerin oluşturulmasında ortaya çıkan kod karmaşası, kodun daha sonra okunabilirliğini büyük ölçüde azaltıyordu. Java 7 ile tip çıkarım özelliği (type inference) daha da geliştirilerek, bu karmaşanın önüne geçilmiş. Derleme işlemleri artık daha akıllı.

Güncel Yöntem

List<Integer> list = new ArrayList<Integer>();
//daha karmaşığı
List<Map<String, List<Double>>> myList = new  ArrayList<Map<String, List<Double>>>();

Yeni Yöntem

List<String> list = new ArrayList<>(); // <> yeterli
List<Map<String, List<Double>>> myList = new  ArrayList<>(); // <> yeterli

Switch Komutunda String Desteği

Bilindiği gibi Java’da switch komutu ile sadece int tipindeki değerleri kullanabiliyoruz. Enum desteğinin Java’ya getirilmesi ile bu sınır bir nevi aşılsa da, neden doğrudan Stringler ile çalışamıyoruz ki? İşte artık Java 7 ile bu eksiklik de gideriliyor.

Ancak burda dikkat edilmesi gereken, switch içerisinde method çağrıları ve non-final değişkenlerin kullanımı kısıtlanmıştır.

private void testStringSwitch(final String key)
{
    final String value = "test";
    String value2 = "test2"
    switch (key) {
        case value:
            break;
        case "foo":
            break;
        case value2: // Non-final değişkenler yasak !
            break;
        case getStringValue(): // Method çağrıları yasak!
            break;
    }
}

Çoklu Catch Kolaylığı

Java Exception mekanizması ile, try bloğu içerisinde meydana gelen çeşitli exceptionları, catch blokları ile yönetebiliyoruz. Ancak çok fazla tüde exception oluşma olasılığı var ise, her exceptionı ayrı catch bloklarında yakalamak bazen can sıkıcı olabiliyor. İşte Java 7 ile, bu tür farklı exceptionları tek bir catch bloğu altında yönetebiliyoruz.

Güncel Yöntem

try {
// file parser işlemi yapan kod
} catch (IOException ex) {
// IOException yöneten catch bloğu
} catch (ParseException ex) {
// ParseException yöneten kod bloğu
} catch (ClassNotFoundException ex) {
// ClassNotFound exception yöneten kod bloğu
}

Yeni Yöntem

try {
// file parser işlemi yapan kod
} catch (IOException ex | ParseException ex | ClassNotFoundException ex) {
// exceptionları yönet
}

Closures (Lambda Calculus)

Birçok Java geliştiricisinin merakla beklediği, yapılan yenilikler içerisinde en fazla istenen yenilik. Fonksiyonel programlama dillerinde bulunan lambda calculus özelliği, artık Java programlama dili ile de kullanılabilecek.

Yeni Saat ve Tarih API (Time and Date API)

Java 7 ye eklenmesi beklenen bir diğer önemli gelişme de, yeni tarih ve saat kütüphanesi. Bu API ile hedeflenen amaç, Date ve Calendar sınıfları geliştirilerek, pekçok işlemin bu 2 sınıf üzerinden yapılabilmesi sağlamaktır.

Referanslar

JDK 7

http://tech.puredanger.com/java7/

Raja Kannappan

Çeşitli kaynaklardan edindiğim bilgiler doğrultusunda, Java 7 ye eklenmesi kesin gözüyle bakılan yenilikler bunlar. Bu özelliklerin yanında daha pekçok yenilik, Java 7 ye eklenmesi için öneri olarak sunuluyor.

Bunların veya yukarıdaki özelliklerin kaçı Java 7 ye eklenir, bunu şuan kestirmek zor. Ancak Java 7, modern dil özellikleri, geliştirilmiş JVM ve çöp toplama sistemi ile çok daha sağlam ve tutarlı bir Java platformu olarak evrileceği kesin.

Eğer sizin de eklemek istediğiniz ya da düzenlemek istediğiniz özellikler var ise, yorum bırakabilirsiniz.


Başka ilgili yazı şu an için mevcut değil.

Yorum bırakmak için buraya, Sitenizden trackback vermek için buraya tıklayabilirsiniz.

One Response to “Java 7 ye Eklenmesi Beklenen Yenilikler”

  1. Selman diyor ki:

    Güzel yazı olmuş, sağolasın dostum

Leave a Reply