Thursday 8 August 2013

Top Most ARM- Automatic resource management in Java7 an example tutorial

ARM automatic resource management is  another attractive features of Java 7 and project coin. As name itself implies that now JVM is going to be handling all the external resource and make programmer free to bother about resource management.  If my java programmers use any external resources like file, printer or any devices to close after my program execution complete. Normally we close the resources which we have open in beginning of our program or we decide that if program finish normally how to manage the resource or if our program finish abnormally how to close the resource.

ARM- Automatic resource management in Java

automatic resource management (ARM) in java jdk7Earlier this things or resource management are achieved by try {} catch {} finally block we need to declare resource variable outside of try block and in catch or finally we use this variables for achieving normal execution of program. This JDK7 tutorial is in continuation of my earlier tutorial How to code with multi-cache exception in JDK7 and How to use String in Switch case on JDK7

Example of resource management in java before JDK7

Here is an example of how we used to do handle resource management before automatic resource management (ARM) feature was made available.

FileInputStream stockQuoteReader= null;
      FileOutputStream stockQuoteWriter = null;
      try {

        stockQuoteReader = new FileInputStream("StockQuotes.txt");
        stockQuoteWriter = new FileOutputStream("StockQuotes.txt");
        int var;
        while (var = stockQuoteReader.read()) != -1)
          stockQuoteWriter.write(var);
      } finally {
        if (stockQuoteReader!= null)
          stockQuoteReader.close();
        if (stockQuoteWriter!= null)
          stockQuoteWriter.close();
      }

But with java 1.7 we manage this thing very easily by try with resource block where inside try we mange this external resources.


Signature of Automatic Resource Management (ARM)

Signature is try(resource1;resource2){}after final resource ;semicolon is not allowed and the resource should be like var=expression type and bydefault all the resources are final  type.

What has been added in API for Automatic Resource Management

java.lang.AutoCloseable, interface has been added in API which contains single method close() throws Exception    this interface is a parent of java.io.closeable interface so all the input and output devices inherit this property.


Example of Automatic Resource Management (ARM) in JDK7

Here is example of automatic resource management with JDK 1.7 source base. Please make sure you run this with java source 1.7 otherwise you will get compilation error.


try (
FileInputStream stockQuoteReader = new FileInputStream("StockQuotes.txt");
FileOutputStream stockQuoteWriter = new FileOutputStream("StockQuotes.txt")
) {
      int var;
      while((var= stockQuoteReader.read()) != -1 )
            stockQuoteWriter.write();
  }


In this code inside try we have declare two file stream one is input file we are reading from one file and writing to another file. After the whole process both streams will be closed automatically either the code has been executed normally or not that means stockQuoteReader.close() and stockQuoteWriter.close() called automatically which is the best part of ARM.
If we compare this with earlier example   then if any exception occur during input file closing i.e. stockQuoteReader.close() , stockQuoteWriter.close() will never get executed so our code terminated abnormally.


Some important points which needs to be keep in mind when use ARM

§          Whatever resource we are using should be subtypes of AutoCloseable other wise will get compile time error.

§          The resources which we are using are closed in reverse order means stockQuoteWriter.close() will be called first then stockQuoteReader.close().
That’s all on new automatic resource management (ARM) feature on JDK7, some how it address the cluttering of code due to checked exception handling and code duplication on several exception cache block.


Related tutorials in Java

LinkWithin

Related Posts Plugin for WordPress, Blogger...

Labels

Core Java programming core java interview question Core Java Faq's Servlets coding database jsp-servlet spring Java linux unix interview questions java investment bank Web Services Interview investment bank mysql Senior java developer interviews best practices java collection tutorial RMI SQL Eclipse FIX protocol tutorial tibco J2EE groovy java questions SCJP grails java 5 tutorial jdbc beginner error and exception Design Patterns Java Programming Tutorials fundamentals general object oriented programming xml Java Programs Hibernate Examples Flex JAMon Java xml tutorial logging Jsp Struts 2.0 Sybase and SQL Server debugging java interviews performance FIX Protocol interview questions JUnit testing WebSphere date and time tutorial experienced java IO tutorial java concurrency thread Ejb Freshers Papers IT Management Java Exapmle Java Script SQL and database tutorial examples Scwcd ant tutorials concurrency example and tutorial future state homework java changes java threading tricky Agile Business of IT Development JSTL Java JSON tutorial Java multithreading Tutorials PM Scrum data structure and algorithm java puzzles java tips testing tips windows 8 5 way to create Singleton Object Architect Interview Questions and Answers Architecture Architecure Bluetooth server as swing application that searches bluetooth device in 10 meter circle and show all devices. You can send file to any bluetooth device. C Programming CIO Callable Statement in Java Circular dependency of Objects in Java Comparable Example in Collection Custom annotation in Java Developer Interview Divide and rule example in java Drupal Example of Singleton Pattern FIX protocol ForkJoin Example in Java 7 Get data from dynamic table with Java Script Git HTML and JavaScript Health Hello World TCP Client Server Networking Program Hibernate Basics Hibernate Interview Question Answer J2EE Interview Question And Answers J2ME GUI Program JEE Interview QA JMS interview question Java J2EE Hibernate Spring Struts Interview Question Java System Property Java Threads Manager Portlets Provident Fund Read data from any file in same location and give the required result. Reading Properties File in Java Redpoint Rest WebService Client Rest Webservice Test SAL join with ven diagram SCP UNIX COMMAND SSL Singleton Pattern in Java Spring Bean Initialization methods and their order Spring Interview Questions Struts Struts 2.0 Basics Struts 2.0 Design Pattern Submit Html Form With Java Script On The Fly Unix executable For Java Program XOM DOM SAX XP books computers core java; core java; object oriented programming data structure; java investment bank; design pattern dtd duplicate rows in table get browser name with jquery grails podcast inner class java beginners tutorial java cache java networking tutorial java spring java util; java collections; java questions java.java1.5 linked list mailto function with all browser oracle database oracle duplicate rows orm schema social spring mvc questions struts transaction tricks tweet windows xslt