কম্পিউটার টিউটোরিয়াল

জাভাতে ARM (Automatic Resource Management) কী?

একটি রিসোর্স হলো এমন একটি অবজেক্ট যা AutoCloseable ইন্টারফেস ইমপ্লিমেন্ট করে। যখনই আপনি আপনার প্রোগ্রামে একটি রিসোর্স ব্যবহার করেন, ব্যবহারের পর এটি বন্ধ করা প্রস্তাবিত।

প্রাথমিকভাবে, এই কাজ finally ব্লক ব্যবহার করে করা হতো।

উদাহরণ (পুরানো পদ্ধতি - finally ব্লক)

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.util.Scanner; 

public class FinalExample { 
    public static void main(String[] args) throws IOException { 
        File file = null; 
        FileInputStream inputStream = null; 
        try { 
            file = new File("D:\\source\\sample.txt"); 
            inputStream = new FileInputStream(file); 
            Scanner sc = new Scanner(inputStream); 
            while (sc.hasNextLine()) { 
                System.out.println(sc.nextLine()); 
            } 
        } catch (IOException ioe) { 
            ioe.printStackTrace(); 
        } finally { 
            inputStream.close(); 
        } 
    } 
}

আউটপুট

This is a sample file with sample text

ARM (Automatic Resource Management)

জাভাতে ARM মানে Automatic Resource Management, এটি জাভা ৭-এ ইভ্যান্ট করা হয়েছিল। এতে রিসোর্সগুলো try ব্লকে ডিক্লেয়ার করতে হয় এবং ব্লক শেষে সেগুলো অটোমেটিক্যালি বন্ধ হয়ে যায়। এটি try-with-resources ব্লকও বলা হয় এবং এই ব্লকে ডিক্লেয়ার করা অবজেক্টগুলো অবশ্যই রিসোর্স হতে হয় অর্থাৎ তারা AutoCloseable টাইপের হতে হবে।

try-with-resources স্টেটমেন্টের সিনট্যাক্স:

try (ClassName obj = new ClassName()) { 
    // code... 
}

JSE 7 থেকে try-with-resources স্টেটমেন্ট চালু হয়েছে। এতে আমরা try ব্লকে এক বা অধিক রিসোর্স ডিক্লেয়ার করি এবং ব্যবহার শেষে সেগুলো অটোমেটিক্যালি বন্ধ হয়ে যায় (try ব্লকের শেষে)।

try ব্লকে ডিক্লেয়ার করা রিসোর্সগুলো java.lang.AutoCloseable ক্লাস এক্সটেন্ড করা উচিত।

উদাহরণ (try-with-resources)

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.util.Scanner; 

public class FinalExample { 
    public static void main(String[] args) throws IOException { 
        try (FileInputStream inputStream = new FileInputStream(new File("D:\\source\\sample.txt"))) { 
            Scanner sc = new Scanner(inputStream); 
            while (sc.hasNextLine()) { 
                System.out.println(sc.nextLine()); 
            } 
        } catch (IOException ioe) { 
            ioe.printStackTrace(); 
        } 
    } 
}

আউটপুট

This is a sample file with sample text

মাল্টিপল রিসোর্স (জাভা ৭+)

আপনি try-with-resources-এ একাধিক রিসোর্স ডিক্লেয়ার করতে পারেন এবং সেগুলো একসাথে ব্লকের শেষে বন্ধ হয়ে যাবে।

উদাহরণ

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 

public class FileCopying { 
    public static void main(String[] args) { 
        try (FileInputStream inS = new FileInputStream(new File("E:\\Test\\sample.txt")); 
             FileOutputStream outS = new FileOutputStream(new File("E:\\Test\\duplicate.txt"))) { 
            byte[] buffer = new byte[1024]; 
            int length; 
            while ((length = inS.read(buffer)) > 0) { 
                outS.write(buffer, 0, length); 
            } 
            System.out.println("File copied successfully!!"); 
        } catch (IOException ioe) { 
            ioe.printStackTrace(); 
        } 
    } 
}

আউটপুট

File copied successfully!!

সারসংক্ষেপ: ARM (try-with-resources) রিসোর্স লিক রোধ করে, কোড ক্লিন করে, এবং এক্সেপশন হ্যান্ডলিং সহজ করে। সেমিকোলন (;) দিয়ে একাধিক রিসোর্স আলাদা করুন। রিসোর্সগুলো.reverse order-এ ক্লোজ হয়।

  1. জাভাতে StringIndexOutOfBoundsException কী?

  2. জাভাতে ArrayIndexOutOfBoundsException কী?

  3. জাভাতে ফাইনাল প্যারামিটার কী

  4. জাভা প্রোগ্রামিং কী