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
http://tech.puredanger.com/java7/
Ç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.
RSS Feed
25 Mayıs 2010
fatih
Konu
Etiketler: 
Güzel yazı olmuş, sağolasın dostum