groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Wagenleitner <john.wagenleit...@gmail.com>
Subject Re: trySetAccessible for Java 9
Date Wed, 05 Jul 2017 18:44:13 GMT
The 2.4 branch still supports Java 6+ and believe that 2.5+ is where Java 7
starts as a baseline.  The VMPlugin mechanism may be one approach to
consider, having it provide a setAccessible(AccessibleObject) method where
the Java7 or higher plugins can invoke the MethodHandle if available or
fall back to the regular setAccessible call.

On Wed, Jul 5, 2017 at 10:10 AM, Cédric Champeau <cchampeau@apache.org>
wrote:

> Thanks Uwe, patches/PRs are very welcome :) I did miss your suggestion,
> sorry I wasn't able to follow everything on this list lately.
>
> The risk I saw was that the MethodHandle class wasn't always available,
> but for 2.4+, it's not a problem!
>
>
> 2017-07-05 19:07 GMT+02:00 Uwe Schindler <uschindler@apache.org>:
>
>> Hi,
>>
>>
>>
>> I made this suggestion about a month ago! In Lucene/Elasticsearch we do
>> everything with MethodHandles that requires new Java 9 APIs (currently
>> Elasticsearch’s Painless Script engine is the first one that uses indy
>> string concats!). In general I would not use an if/then/else construct at
>> all. Just try to get a MethodHandle to trySetAccessible(), if this fails
>> get a MethodHandle to a local/private method with same signature.
>>
>>
>>
>> Finally you may need to adapt the MethodHandle to the right types and
>> then call it _*always*_ with correct casting to make javac use correct
>> types. Be sure to make the MethodHandle a static final constant somewhere!
>> This removed the need for a if/then/else on every call.
>>
>>
>>
>> I may provide a patch, if you like. I’d just need some directions where
>> to look at. Should be a 10 liner.
>>
>>
>>
>> Uwe
>>
>>
>>
>> -----
>>
>> Uwe Schindler
>>
>> uschindler@apache.org
>>
>> ASF Member, Apache Lucene PMC / Committer
>>
>> Bremen, Germany
>>
>> http://lucene.apache.org/
>>
>>
>>
>> *From:* Cédric Champeau [mailto:cchampeau@apache.org]
>> *Sent:* Wednesday, July 5, 2017 6:55 PM
>> *To:* Russel Winder <russel@winder.org.uk>
>> *Cc:* dev@groovy.apache.org
>> *Subject:* Re: trySetAccessible for Java 9
>>
>>
>>
>> Actually I'm realizing that the `MethodHandle` API came with Java 7. So
>> we _can_ compile against it. So I guess an option is to have the method
>> handle redirect to `trySetAccessible` if the detected runtime is Java 9,
>> and a backport method if < 9.
>>
>>
>>
>>
>>
>>
>>
>> 2017-07-05 18:41 GMT+02:00 Russel Winder <russel@winder.org.uk>:
>>
>> On Wed, 2017-07-05 at 18:28 +0200, Cédric Champeau wrote:
>> >
>> […]
>> > Any suggestion?
>>
>> How about leave Groovy 2.x as a "can only build on JDK8", and put all
>> effort
>> for a JDK9 build on Groovy 3.x which, as I understand it requires JDK8 as
>> a
>> runtime. This would seem to minimise hassle and maximise forward-looking
>> benefit. Unless I am missing something.
>>
>> --
>> Russel.
>> ============================================================
>> =================
>> Dr Russel Winder     t:+44 20 7585 2200   voip:sip:
>> russel.winder@ekiga.net
>> 41 Buckmaster Road   m:+44 7770 465 077   xmpp:russel@winder.org.uk
>> London SW11 1EN, UK  w: www.russel.org.uk skype:russel_winder
>>
>>
>>
>
>

Mime
View raw message