[infinispan-dev] Analysis of infinispan-6.0.2 dependency on JDK-Internal APIs
Rory O'Donnell Oracle, Dublin Ireland
rory.odonnell at oracle.com
Fri Oct 10 08:26:33 EDT 2014
Hi Dan,
Thank you for the feedback.
Rgds,Rory
On 10/10/2014 12:37, Dan Berindei wrote:
> Hi Rory
>
> Galder is on PTO for another week, so I'll try to answer instead.
>
> We only use sun.misc.Unsafe directly, in order to implement a
> variation of Doug Lea's ConcurrentHashMapV8 that accepts a custom
> Equivalence (implementation of equality/hashCode). I guess we'll have
> to switch to AtomicFieldUpdaters if we want it to work with JDK 9, and
> possibly move to the volatile extensions once they are implemented.
>
> The rest of the internal class usages seem to be from our dependencies
> on WildFly, JBoss Marshalling, LevelDB, Smooks, and JBoss
> MicroContainer. Smooks and JBoss MicroContainer likely won't see any
> updates for JDK 9, but they're only used in the demos so they're not
> critical. JBoss Marshalling is used in the core, however, so we'll
> need a release from them before we can run anything on JDK 9.
>
> Cheers
> Dan
>
>
> On Fri, Oct 10, 2014 at 1:01 PM, Rory O'Donnell Oracle, Dublin Ireland
> <rory.odonnell at oracle.com <mailto:rory.odonnell at oracle.com>> wrote:
>
> Hi Galder,
>
> Did you have time to review the report, any feedback ?
>
> Rgds,Rory
>
> On 24/09/2014 09:21, Rory O'Donnell Oracle, Dublin Ireland wrote:
>> Below is a text output of the report for infinispan-6.0.2.
>>
>> Rgds,Rory
>>
>> ------------------------------------------------------------------------
>>
>>
>> JDK Internal API Usage Report for infinispan-6.0.2.Final-all
>>
>> The OpenJDK Quality Outreach campaign has run a compatibility
>> report to identify usage of JDK-internal APIs. Usage of these
>> JDK-internal APIs could pose compatibility issues, as the Java
>> team explained in 1996
>> <http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html>.
>> We have created this report to help you identify which
>> JDK-internal APIs your project uses, what to use instead, and
>> where those changes should go. Making these changes will improve
>> your compatibility, and in some cases give better performance.
>>
>> Migrating away from the JDK-internal APIs now will give your team
>> adequate time for testing before the release of JDK 9. If you are
>> unable to migrate away from an internal API, please provide us
>> with an explanation below to help us understand it better. As a
>> reminder, supported APIs are determined by the OpenJDK's Java
>> Community Process and not by Oracle.
>>
>> This report was generated by jdeps
>> <http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html>
>> through static analysis of artifacts: it does not identify any
>> usage of those APIs through reflection or dynamic bytecode. You
>> may also run jdeps on your own
>> <https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool>
>> if you would prefer.
>>
>> Summary of the analysis of the jar files within
>> infinispan-6.0.2.Final-all:
>>
>> * Numer of jar files depending on JDK-internal APIs: 10
>> * Internal APIs that have known replacements: 0
>> * Internal APIs that have no supported replacements: 73
>>
>>
>> APIs that have known replacements
>> <https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool>:
>>
>> ID Replace Usage of With Inside
>>
>>
>> JDK-internal APIs without supported replacements:
>>
>> ID Internal APIs (do not use) Used by
>> 1 com.sun.org.apache.xml.internal.utils.PrefixResolver
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 2 com.sun.org.apache.xpath.internal.XPath
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 3 com.sun.org.apache.xpath.internal.XPathContext
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 4 com.sun.org.apache.xpath.internal.objects.XBoolean
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 5 com.sun.org.apache.xpath.internal.objects.XNodeSet
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 6 com.sun.org.apache.xpath.internal.objects.XNull
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 7 com.sun.org.apache.xpath.internal.objects.XNumber
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 8 com.sun.org.apache.xpath.internal.objects.XObject
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 9 com.sun.org.apache.xpath.internal.objects.XString
>>
>> * lib/freemarker-2.3.11.jar
>>
>> Explanation...
>> 10 org.w3c.dom.html.HTMLAnchorElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 11 org.w3c.dom.html.HTMLAppletElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 12 org.w3c.dom.html.HTMLAreaElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 13 org.w3c.dom.html.HTMLBRElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 14 org.w3c.dom.html.HTMLBaseElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 15 org.w3c.dom.html.HTMLBaseFontElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 16 org.w3c.dom.html.HTMLBodyElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 17 org.w3c.dom.html.HTMLButtonElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 18 org.w3c.dom.html.HTMLCollection
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 19 org.w3c.dom.html.HTMLDListElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 20 org.w3c.dom.html.HTMLDirectoryElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 21 org.w3c.dom.html.HTMLDivElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 22 org.w3c.dom.html.HTMLDocument
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 23 org.w3c.dom.html.HTMLElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 24 org.w3c.dom.html.HTMLFieldSetElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 25 org.w3c.dom.html.HTMLFontElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 26 org.w3c.dom.html.HTMLFormElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 27 org.w3c.dom.html.HTMLFrameElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 28 org.w3c.dom.html.HTMLFrameSetElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 29 org.w3c.dom.html.HTMLHRElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 30 org.w3c.dom.html.HTMLHeadElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 31 org.w3c.dom.html.HTMLHeadingElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 32 org.w3c.dom.html.HTMLHtmlElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 33 org.w3c.dom.html.HTMLIFrameElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 34 org.w3c.dom.html.HTMLImageElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 35 org.w3c.dom.html.HTMLInputElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 36 org.w3c.dom.html.HTMLIsIndexElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 37 org.w3c.dom.html.HTMLLIElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 38 org.w3c.dom.html.HTMLLabelElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 39 org.w3c.dom.html.HTMLLegendElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 40 org.w3c.dom.html.HTMLLinkElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 41 org.w3c.dom.html.HTMLMapElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 42 org.w3c.dom.html.HTMLMenuElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 43 org.w3c.dom.html.HTMLMetaElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 44 org.w3c.dom.html.HTMLModElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 45 org.w3c.dom.html.HTMLOListElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 46 org.w3c.dom.html.HTMLObjectElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 47 org.w3c.dom.html.HTMLOptGroupElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 48 org.w3c.dom.html.HTMLOptionElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 49 org.w3c.dom.html.HTMLParagraphElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 50 org.w3c.dom.html.HTMLParamElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 51 org.w3c.dom.html.HTMLPreElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 52 org.w3c.dom.html.HTMLQuoteElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 53 org.w3c.dom.html.HTMLScriptElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 54 org.w3c.dom.html.HTMLSelectElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 55 org.w3c.dom.html.HTMLStyleElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 56 org.w3c.dom.html.HTMLTableCaptionElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 57 org.w3c.dom.html.HTMLTableCellElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 58 org.w3c.dom.html.HTMLTableColElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 59 org.w3c.dom.html.HTMLTableElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 60 org.w3c.dom.html.HTMLTableRowElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 61 org.w3c.dom.html.HTMLTableSectionElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 62 org.w3c.dom.html.HTMLTextAreaElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 63 org.w3c.dom.html.HTMLTitleElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 64 org.w3c.dom.html.HTMLUListElement
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 65 org.w3c.dom.ranges.DocumentRange
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 66 org.w3c.dom.ranges.Range
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 67 org.w3c.dom.ranges.RangeException
>>
>> * lib/xercesImpl-2.9.1.jar
>>
>> Explanation...
>> 68 sun.misc.Signal
>>
>> * lib/aesh-0.33.7.jar
>>
>> Explanation...
>> 69 sun.misc.SignalHandler
>>
>> * lib/aesh-0.33.7.jar
>>
>> Explanation...
>> 70 sun.misc.Unsafe
>>
>> * lib/avro-1.7.5.jar
>> * lib/guava-12.0.jar
>> * lib/infinispan-commons-6.0.2.Final.jar
>> * lib/mvel2-2.0.12.jar
>> * lib/scala-library-2.10.2.jar
>>
>> Explanation...
>> 71 sun.nio.ch.FileChannelImpl
>>
>> * lib/leveldb-0.5.jar
>>
>> Explanation...
>> 72 sun.reflect.ReflectionFactory
>>
>> * lib/jboss-marshalling-1.4.4.Final.jar
>>
>> Explanation...
>> 73 sun.reflect.ReflectionFactory$GetReflectionFactoryAction
>>
>> * lib/jboss-marshalling-1.4.4.Final.jar
>>
>> Explanation...
>>
>>
>> Identify External Replacements
>>
>> You should use a separate third-party library that performs this
>> functionality.
>>
>> ID Internal API (grouped by package) Used By Identify External
>> Replacement
>>
>>
>> ------------------------------------------------------------------------
>>
>>
>> On 24/09/2014 08:55, Rory O'Donnell Oracle, Dublin Ireland wrote:
>>> Hi Galder,
>>>
>>> As part of the preparations for JDK 9, Oracle’s engineers have
>>> been analyzing open source projects like yours to understand
>>> usage. One area of concern involves identifying compatibility
>>> problems, such as reliance on JDK-internal APIs.
>>>
>>> Our engineers have already prepared guidance on migrating some
>>> of the more common usage patterns of JDK-internal APIs to
>>> supported public interfaces. The list is on the OpenJDK wiki
>>> [0], along with instructions on how to run the jdeps analysis
>>> tool yourself .
>>>
>>> As part of the ongoing development of JDK 9, I would like to
>>> encourage migration from JDK-internal APIs towards the supported
>>> Java APIs. I have prepared a report for your project rele ase
>>> infinispan-6.0.2 based on the jdeps output.
>>>
>>> The report is attached to this e-mail.
>>>
>>> For anything where your migration path is unclear, I would
>>> appreciate comments on the JDK-internal API usage patterns in
>>> the attached jdeps report - in particular comments elaborating
>>> on the rationale for them - either to me or on this mailing list.
>>>
>>> Finding suitable replacements for unsupported interfaces is not
>>> always straightforward, which is why I am reaching out to you
>>> early in the JDK 9 development cycle so you can give feedback
>>> about new APIs that may be needed to facilitate this exercise.
>>>
>>> Thank you in advance for any efforts and feedback helping us
>>> make JDK 9 better.
>>>
>>> Rgds,Rory
>>>
>>> [0]
>>> https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
>>>
>>>
>>>
>>> --
>>> Rgds,Rory O'Donnell
>>> Quality Engineering Manager
>>> Oracle EMEA , Dublin, Ireland
>>>
>>>
>>>
>>>
>>
>> --
>> Rgds,Rory O'Donnell
>> Quality Engineering Manager
>> Oracle EMEA , Dublin, Ireland
>>
>>
>>
>>
>
> --
> Rgds,Rory O'Donnell
> Quality Engineering Manager
> Oracle EMEA , Dublin, Ireland
>
>
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org <mailto:infinispan-dev at lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
>
--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/infinispan-dev/attachments/20141010/af8ed8aa/attachment-0001.html
More information about the infinispan-dev
mailing list