14 Aralık 2017 Perşembe

Java Otomatik Kaynak Yönetimi (try-with-resources)

Java 7 nin getidiği yeniliklerden biri de kaynakları otomatik yönetmek için “try-with-resources” dür. Yazılımlarda kaynaklar kullanıldıktan sonra kapatılmalıdır. Örneğin bir dosya, veritabanı bağlantısı için JDBC ya da soket. Java 7 den önce otomatik kaynak yönetimi yoktu ve kaynakları bizim yönetmemiz gerekiyordu.

Java 7’den önce örnek pseudo kod;
try{
      //open resources like File, Database connection, Sockets etc
} catch (FileNotFoundException e) {
      // Exception handling like FileNotFoundException, IOException etc
}finally{
      // close resources
}
Java 7 ile birlikte try kullanımı;
try(// open resources here){
    // use resources
} catch (FileNotFoundException e) {
      // exception handling
}
// resources are closed as soon as try-catch block is executed.
Şimdi basit bir uygulamayla aynı kodu Java 7 öncesi ve sonrası için yazalım. Bu uygulamada dosyayı okuyup ekrana yazalım.

Java 6 Kaynak Yönetimi Örnek
package com.test.util;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Java6ResourceManagement {

      public static void main(String[] args) {
             BufferedReader br = null;
             try {
                    br = new BufferedReader(new FileReader("C:\\test.txt"));
                    System.out.println(br.readLine());
             } catch (IOException e) {
                    e.printStackTrace();
             } finally {
                    try {
                           if (br != null)
                                 br.close();
                    } catch (IOException ex) {
                           ex.printStackTrace();
                    }
             }
      }
}
Java 7 Try With Resources Örneği
package com.test.util;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Java7ResourceManagement {

      public static void main(String[] args) {
             try (BufferedReader br = new BufferedReader(new FileReader(
                           "C:\\test.txt"))) {
                    System.out.println(br.readLine());
             } catch (IOException e) {
                    e.printStackTrace();
             }
      }
}

Java try with resources faydaları

1. Okunabilir kod ve kolay yazım
2. Otomatik kaynak yönetimi
3. Kodun satır sayısının azalması
4. Kaynakları kapatmak için finally bloğuna gerek olmaması
5. Birden fazla kaynağı da try-with-resources
Deyimiyle noktalı virgül(;) ile ayırarak otomatik yönetebiliriz. Örnek kod;
try (BufferedReader br = new BufferedReader(new FileReader(
                           "C:\\test.txt"));
                           java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(FileSystems.getDefault().getPath("C:\\test.txt"), Charset.defaultCharset())) {
                    System.out.println(br.readLine());
             } catch (IOException e) {
                    e.printStackTrace();
             }

KAYNAKÇA

https://www.journaldev.com/592/java-try-with-resources