smart_ptr in java 1.7


Darn it but I’ve being doing a lot of Java recently and u know what, I’m no expert but it I think I could even a raise the rating on my C.V. at this stage. My first experience of Java was reading a book back in 2001 belonging to a student friend of mine, the book was lying about so picked it up and read it over the course of a week (yes I had an early addiction to technologies even though I was living in c++ land at the time). I ended up helping with one Final year project a java applet game suite if I remember correctly and in a JBuilder IDE.

Over the years I quickly forgot about my little affair with java and got deeper into c++ which I have to say I loved, around the same time I was having another affair (yes i was a slut) with Microsoft .net beta2. I can’t put my finger exactly on why c# won out for me, but I spent the next few years working on c++ and c#, Java was just something I always left to one side. I always though hey java will be easy, I’ve programmed in c#, same concepts, and moreover I knew c++, so well then c# or java are a walk in the part; while this I guess is partially true, but you’re not prepared you for the curve/slope/cliff you’ve got to climb to learn the IDE and the libraries needed these days.

I’m currently working for a data management company our products are written in java and .net. For the first two years I managed to live in the .net world but lately and mostly due to the success of some of our newer components I’ve been doing quite a lot of java, (a lot more than I ever expected). I’ve also started reading some good books on the subject and you know what I’m as likely to start a test application in Eclipse as I am in VS2010 these days (at least as far as the product components are concerned).

So what’s changed? Well for one the java language is evolving once again which is exciting; so to continue on my smart_ptr series of posts, we can now achieve resource cleanup with java 1.7 with the AutoClosable interface.

For .net people this will be very familiar to IDisposable and the using(var x = new IDisposableDerivedType())


   1:  File file = new File("input.txt");
   3:  InputStream is = null;
   5:  try {
   6:      is = new FileInputStream(file);
   8:      // do something with this input stream
   9:      // ...
  11:  }
  12:  catch (FileNotFoundException ex) {
  13:      System.err.println("Missing file " + file.getAbsolutePath());
  14:  }
  15:  finally {
  16:      if (is != null) {
  17:          is.close();
  18:      }
  19:  }
  21:  Java 7: Try with resources
  23:  File file = new File("input.txt");
  25:  try (InputStream is = new FileInputStream(file)) {
  26:      // do something with this input stream
  27:      // ...
  28:  }
  29:  catch (FileNotFoundException ex) {
  30:      System.err.println("Missing file " + file.getAbsolutePath());
  31:  }


We’re guaranteed that the

is.close(); gets called automatically for us. Have to say I'm a bit jealous that the c# team didn't think of the try() syntax over using.

Comments are closed