Java 7, Project Coin ile birkaç yeni özellik kazandı. Bu özellikler geliştiricileri memnun edecek ve oldukça kullanışlı özelliklerdir. Switch ifadelerinde String kullanımı, çoklu yakalama (Multi Catch), Nümerik değerler için alt çizgi, otomatik kaynak yönetimi, yeni dosya sistemi API’si, dinamik olarak yazılan diller için destek gibi birçok özellik Java’ya kazandırıldı. Tüm yeni özellikleri öğrenmek için tıklayınız.
Bu özelliklere örneklerle tek tek bakalım.
Diamond operatörü
1 |
Map<<em>String</em>, <em>List</em>> myMap = new TreeMap<<em>String</em>, <em>List</em>> (); |
Bu deklarasyonla ilgili pek de hoş olmayan şey, sağ taraf biraz fazlalık olsa da, türleri her iki tarafta da belirtmemiz gerektiğidir. Derleyici, sol taraftaki belirtimlere bakarak türleri çıkartabilir mi? Java 7’yi kullanmadığınız sürece değil. Java 7′ de örnekleme için tüm türleri belirtmeniz gerekmez. Bunun yerine diamond operatörünü (<>) kullanmanız yeterli olacaktır.
Java 7
1 |
Map<String, List> myMap = new TreeMap <> (); |
Switch ifadelerinde String kullanımı
Önceden if-else ile kontrol edilen String ifadeleri artık switch ifadeleri ile de kontrol ediliyor oldu.
Önceden
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public void testStringInSwitch(String param){ final String JAVA5 = "Java 5"; final String JAVA6 = "Java 6"; final String JAVA7 = "Java 7"; if (param.equals(JAVA5)) { System.out.println(JAVA5); } else if (param.equals(JAVA6)){ System.out.println(JAVA6); } else if (param.equals(JAVA7)){ System.out.println(JAVA7); } } |
Java 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public void testStringInSwitch(String param){ final String JAVA5 = "Java 5"; final String JAVA6 = "Java 6"; final String JAVA7 = "Java 7"; switch (param){ case JAVA5: System.out.println(JAVA5); break; case JAVA6: System.out.println(JAVA6); break; case JAVA7: System.out.println(JAVA7); break; } } |
Otomatik Kaynak Yönetimi (Automatic resource management)
Connections (Bağlantılar), Files (Dosyalar), Input/OutStreams (Giriş / Çıkışlar), vb. kaynaklar, geliştirici tarafından standart kod yazarak manuel olarak kapatılmalıdır. Genellikle ilgili kaynakları kapatmak için finally bloğu kullanırız. Bir kaynak oluşturma, onu kullanma ve son olarak kapatmak için aşağıdaki gibi kod yazmamız gerekiyor
1 2 3 4 5 6 7 8 9 10 11 |
public void testTryWithResourcesStatement() throws FileNotFoundException, IOException { FileInputStream in = null; try { in = new FileInputStream("java7.txt"); System.out.println(in.read()); } finally { if (in != null) { in.close(); } } } |
Java 7, kaynakları otomatik olarak yönetmek için başka bir harika özellik sunmuştur. Tek yapmamız gereken, try blogu içerisinde kaynakları kullanmak.
1 2 3 4 5 |
public void testTryWithResourcesStatement() throws FileNotFoundException, IOException { try (FileInputStream in = new FileInputStream("java7.txt")) { System.out.println(in.read()); } } |
Kontroller try bloğu bulunduğunda otomatik olarak kapatıldıkça, akışları manuel olarak geçersiz kılmaya veya kapatmaya gerek yoktur. java.lang.AutoCloseable interface’ini uygulayan herhangi bir kaynak, otomatik kaynak yönetimi için aday olabilir. AutoCloseable, java.io.Closeable arabiriminin üst öğesidir ve denetim, try bloğundan çıktığında JVM tarafından çağrılan close() yöntemine sahiptir.
Nümerik değerler için alt çizgi
Nümerik değerleri her zaman gözünüzle kontrol etmişsinizdir. 10, 100 gibi değerler olduğunda illaki zor gelmiyordur ama 1000000, 10000000 gibi değerler olduğunda sıfırları saymaya başlıyorsunuzdur. Java 7, yerleri tanımlamak için alt çizgiler getirdi.
1 2 3 4 5 6 7 8 9 |
public void testUnderscoresNumericLiterals() { int oneMillion_ = 1_000_000; int oneMillion = 1000000; if (oneMillion_ == oneMillion){ System.out.println(true); } else{ System.out.println(false); } } |
Çoklu Yakalama (Multi Catch)
İstisna işlemlerinde(Exceptions) tarafında birkaç iyileştirme yapıldı. İstisnalar hakkında bilgi sahibi olmak için daha önce yazdığım yazıyı buradan okuyabilirsiniz. Java 7, tek bir catch bloğu kullanarak birden çok istisnayı yakalamak için çoklu yakalama özelliğini tanıttı. Çoklu istisnalar, ‘|’ operatörünü kullanarak bir catch bloğunda yakalanır. Çoklu yakalama kullanırken dikkat edilmesi gereken husus aynı hiyerarşiden istisnaların olmaması gerekir.
Önceden
1 2 3 4 5 6 7 8 9 10 11 |
public void testMultiCatch(){ try{ methodThatThrowsThreeExceptions(); } catch(ExceptionOne e) { // Handle exception one } catch(ExceptionTwo e) { // Handle exception two } catch(ExceptionThree e) { // Handle exception three } } |
Java 7
1 2 3 4 5 6 7 |
public void testMultiCatch(){ try{ methodThatThrowsThreeExceptions(); } catch(ExceptionOne | ExceptionTwo | ExceptionThree e) { // Handle all exception } } |
Yeni Dosya Sistemi API (NIO 2.0)
Java IO’daki problemleri çözme niyeti ile, Java 7, revize edilmiş API’yi tanıttı. NIO 2.0 birçok geliştirmeyle öne çıktı. Ayrıca, geliştiricinin işlerini kolaylaştırmak için yeni sınıflar da tanıtıldı. Yeni java.nio.file paketi, Path, Paths, FileSystem, FileSystems ve bunun gibi sınıflar ve interfacelerden oluşur. Path sınıfı, Java.io.File sınıfına eşdeğerdir fakat daha fazla özellik içerir.
1 2 3 4 5 6 7 8 9 10 11 12 |
public void pathInfo() { Path path= Paths.get("c:/koray/demo"); System.out.println("Number of Nodes:"+ path.getNameCount()); System.out.println("File Name:"+ path.getFileName()); System.out.println("File Root:"+ path.getRoot()); System.out.println("File Parent:"+ path.getParent()); } |
1 yorum yapıldı “Java SE 7 Geliştirmeleri”