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