Proposal: Automatic Resource Management

Stephen Colebourne scolebourne at joda.org
Sat Mar 7 07:45:13 PST 2009


Xavi Miró wrote:
> But I would like to emphasize that the benefits of using this proposal 
> are huge without direct support for Locks. Josh has made very clear it 
> is not intended to be used with Locks.

I think this is understood, however the reality is that it will be. As 
soon as the ARM code is in the compiler, an open source project will 
appear with code to wrap other classes to make them work with the ARM block.

Of course that doesn't mean ARM is good or bad, just that we should be 
realistic about how widely used it will be.

There are other cases that I don't think ARM will handle perfectly (and 
BGGA/JCA do). For example, looping around the lines in a file, which 
might ideally look like:

for (String str : file.readLines()) {
   // process lines
}  <-- close file here

The closest ARM is this:

try (BufferedReader in = file.openBufferedReader()) {
   for (String str : in.lines()) {  <-- new method returning an Iterable
     // process lines
   }
}

Of course, that is still a lot better than today. And really, thats the 
point.


My personal take is that I would welcome ARM in Java 7, either 
interface-based or keyword-based. I think the benefits are sufficiently 
great that we shouldn't make developers to wait any longer.

I am of course fully aware of the reduction in value that BGGA/JCA style 
control invocation then faces as a language change (and hence the 
passion in the debate, notably from Neal).

However, with closures officially defined as 'out' I have to choose 
between solving real issues now (in the 80% case) or waiting another 3 
years+. I choose pragmatism - solve the 80% now with ARM, and reconsider 
BGGA/JCA later.

Stephen





More information about the coin-dev mailing list