Hi John,

I haven't full thought through it (Jochen is more up-to-date than me
on indy, mh and friends than I am), but in Groovy, we have various
areas where we do various conversions and coercions, like maps
([run:{...}] as Runnable) and closures coercions ({->} as Runnable) to
SAM types, or things like our method pointers that could be turned
into other types (this.&myMethod as Runnable), or our Swing event
handles logic using closures again for various Swing event interfaces.
So I think there could be a few areas where a project like Groovy
could benefit from MethodHandles.asInstance.

Guillaume

On Tue, Mar 29, 2011 at 00:37, John Rose <john.r.r...@oracle.com> wrote:
> You may have noticed that the JSR 292 API includes a conversion operator 
> (called MethodHandles.asInstance) to allow a method handles to interoperate 
> with single-method interfaces, such as Runnable.  This is a small but (maybe) 
> useful subset of the SAM conversion which is being defined by Project Lambda.
>
> The Public Review document even mentions "SAM" types, although we are 
> removing that terminology, since it is out of scope for JDK 7.  There is a 
> proposal to remove asInstance from the API altogether, leaving users to solve 
> interoperability by whatever combination of hand-written adapter classes and 
> bytecode spinning.
>
> Here's my question:  Who plans to use asInstance in JDK 7?  What would it 
> cost you if we were to omit it from JDK 7, and you had to wait for the full 
> SAM-integrated version in JDK 8?
>
> Thanks,
> -- John
>
> P.S.  Brief background:  Many function-like types defined in existing (pre-7) 
> Java systems are defined as single-method interfaces.  Runnable is the 
> canonical, aboriginal example.  There are other ways to do function-like 
> types, too, such as abstract classes and multiple-entry interfaces (a 
> Function that takes one entry point per arity, for example.)  But the most 
> common pattern is a single-method interface.  In order to encourage people to 
> use method handles, we would like them to feel free to use them in new code, 
> even if this requires "wiring them up" to older APIs that feature 
> function-like types.  The simplest thing (not the only thing) we can do to 
> help with this is to provide a proposed MethodHandles.asInstance API.  We 
> expect that people with more complex needs will have to spin bytecodes to 
> wire up method handles to more complex types.  We (the 292 EG) hope to 
> provide a more comprehensive interoperation between method handles and 
> interfaces in JDK 8, as previously d!
>  iscussed.  A final point:  SAM types are not going to be the same as 
> single-method interfaces for a host of reasons currently being thrashed out 
> by the Lambda EG.  The JSR 292 EG is not going to get into language 
> interactions, but instead is going to always take a JVM-centric view, 
> defining APIs in terms of JVM-level metadata and operations; this is the 
> sanest way to provide multi-language support.
>
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev@openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>



-- 
Guillaume Laforge
Groovy Project Manager
Head of Groovy Development at SpringSource
http://www.springsource.com/g2one
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to