ARM API Support

Neal Gafter neal at
Wed Jun 23 17:17:57 PDT 2010

Do you have any explanation for the Graphics and AWT teams' decisions
not to retrofit for ARM?

Several changes from project lambda (notably defender methods and
exception transparency) could be taken advantage of to provide a much
more flexible ARM construct (e.g., that supports the whole spectrum of
identified resource APIs).  This falls into the general category of
adapting the specifications based on unexpected interactions between
separately developed features.  How and when do you expect
investigation of this to be occur?


On Wed, Jun 23, 2010 at 5:08 PM, Joe Darcy <joe.darcy at> wrote:
> Greetings
> The initial API changes to support the Project Coin feature automatic
> resource management (ARM) blocks have been pushed into JDK 7 [1] and
> will appear in subsequent builds. The corresponding compiler changes to
> support the actual language feature remain in progress.
> The initial API work to support ARM was divided into two pieces,
> essential API support and retrofitting platform classes. The essential
> support includes:
> * A new interface java.lang.AutoCloseable which defines a single method
>  void close() throws Exception
> * A new enum constant in the language model:
>  javax.lang.model.element.ElementKind.RESOURCE_VARIABLE
> * Methods on java.lang.Throwable to add and retrieve information about
> suppressed exceptions, including printing out suppressed exceptions in
> stack traces.
> The retrofitting includes:
> * Having extend java.lang.AutoCloseable. (From a
> typing perspective, a subtype of AutoCloseable can be declared to throw
> fewer exceptions than the supertype. Therefore is is fine for the close
> method in AutoCloseable to throw Exception and the close method in
> Closeable to throw the more specific IOException. It would even be fine
> for the close method in a subtype of AutoCloseable to be declared to
> throw no exceptions at all.)
> * Adding a close method to java.nio.channels.FileLock and having
> FileLock implement AutoCloseable.
> * Adding Closeable as an interface implemented by
> Other platform classes may be retrofitted to implement AutoCloseable or
> Closable in future builds.
> Compared to the API support in earlier versions of the ARM proposal, the
> top-level interface to mark participation in ARM is in package java.lang
> rather than its own package and, after consultation with the JDBC and
> graphics teams, neither java.sql.* nor java.awt.Graphics were
> retrofitted for ARM.
> -Joe
> [1]

More information about the coin-dev mailing list