Discussion:
Analysis of apache-jmeter-2.11 dependency on JDK-Internal APIs
sebb
2014-09-28 01:52:28 UTC
Permalink
We received this message on the JMeter developer list, however the findings
apply to external projects such as yours.
So I am forwarding the details to you.

If you have any feedback, please address it directly to Oracle (addresses
in e-mail header)

Thanks!

---------- Forwarded message ----------
From: Rory O'Donnell Oracle, Dublin Ireland <***@oracle.com>
Date: 24 September 2014 11:29
Subject: Re: Analysis of apache-jmeter-2.11 dependency on JDK-Internal APIs
To: ***@jmeter.apache.org
Cc: Dalibor Topic <***@oracle.com>, Balchandra Vaidya <
***@oracle.com>


Let me know if the report below is legible ?

JDK Internal API Usage Report for apache-jmeter-2.11

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 apache-jmeter-2.11:

- Numer of jar files depending on JDK-internal APIs: 7
- Internal APIs that have known replacements: 6
- Internal APIs that have no supported replacements: 63

APIs that have known replacements
<https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool>:
ID Replace Usage of With Inside 1 org.w3c.dom.xpath.XPathEvaluator Use
javax.xml.xpath @since 1.5

- lib/xalan-2.7.1.jar

2 org.w3c.dom.xpath.XPathException Use javax.xml.xpath @since 1.5

- lib/xalan-2.7.1.jar

3 org.w3c.dom.xpath.XPathExpression Use javax.xml.xpath @since 1.5

- lib/xalan-2.7.1.jar

4 org.w3c.dom.xpath.XPathNSResolver Use javax.xml.xpath @since 1.5

- lib/xalan-2.7.1.jar

5 org.w3c.dom.xpath.XPathNamespace Use javax.xml.xpath @since 1.5

- lib/xalan-2.7.1.jar

6 org.w3c.dom.xpath.XPathResult Use javax.xml.xpath @since 1.5

- lib/xalan-2.7.1.jar

JDK-internal APIs without supported replacements: ID Internal APIs (do
not use) Used by 1 java.awt.peer.ComponentPeer

- lib/bsh-2.0b5.jar

Explanation... 2 java.awt.peer.TextComponentPeer

- lib/bsh-2.0b5.jar

Explanation... 3 org.w3c.dom.html.HTMLAnchorElement

- lib/xercesImpl-2.9.1.jar

Explanation... 4 org.w3c.dom.html.HTMLAppletElement

- lib/xercesImpl-2.9.1.jar

Explanation... 5 org.w3c.dom.html.HTMLAreaElement

- lib/xercesImpl-2.9.1.jar

Explanation... 6 org.w3c.dom.html.HTMLBRElement

- lib/xercesImpl-2.9.1.jar

Explanation... 7 org.w3c.dom.html.HTMLBaseElement

- lib/xercesImpl-2.9.1.jar

Explanation... 8 org.w3c.dom.html.HTMLBaseFontElement

- lib/xercesImpl-2.9.1.jar

Explanation... 9 org.w3c.dom.html.HTMLBodyElement

- lib/xercesImpl-2.9.1.jar

Explanation... 10 org.w3c.dom.html.HTMLButtonElement

- lib/xercesImpl-2.9.1.jar

Explanation... 11 org.w3c.dom.html.HTMLCollection

- lib/xercesImpl-2.9.1.jar

Explanation... 12 org.w3c.dom.html.HTMLDListElement

- lib/xercesImpl-2.9.1.jar

Explanation... 13 org.w3c.dom.html.HTMLDirectoryElement

- lib/xercesImpl-2.9.1.jar

Explanation... 14 org.w3c.dom.html.HTMLDivElement

- lib/xercesImpl-2.9.1.jar

Explanation... 15 org.w3c.dom.html.HTMLDocument

- lib/xercesImpl-2.9.1.jar

Explanation... 16 org.w3c.dom.html.HTMLElement

- lib/xercesImpl-2.9.1.jar

Explanation... 17 org.w3c.dom.html.HTMLFieldSetElement

- lib/xercesImpl-2.9.1.jar

Explanation... 18 org.w3c.dom.html.HTMLFontElement

- lib/xercesImpl-2.9.1.jar

Explanation... 19 org.w3c.dom.html.HTMLFormElement

- lib/xercesImpl-2.9.1.jar

Explanation... 20 org.w3c.dom.html.HTMLFrameElement

- lib/xercesImpl-2.9.1.jar

Explanation... 21 org.w3c.dom.html.HTMLFrameSetElement

- lib/xercesImpl-2.9.1.jar

Explanation... 22 org.w3c.dom.html.HTMLHRElement

- lib/xercesImpl-2.9.1.jar

Explanation... 23 org.w3c.dom.html.HTMLHeadElement

- lib/xercesImpl-2.9.1.jar

Explanation... 24 org.w3c.dom.html.HTMLHeadingElement

- lib/xercesImpl-2.9.1.jar

Explanation... 25 org.w3c.dom.html.HTMLHtmlElement

- lib/xercesImpl-2.9.1.jar

Explanation... 26 org.w3c.dom.html.HTMLIFrameElement

- lib/xercesImpl-2.9.1.jar

Explanation... 27 org.w3c.dom.html.HTMLImageElement

- lib/xercesImpl-2.9.1.jar

Explanation... 28 org.w3c.dom.html.HTMLInputElement

- lib/xercesImpl-2.9.1.jar

Explanation... 29 org.w3c.dom.html.HTMLIsIndexElement

- lib/xercesImpl-2.9.1.jar

Explanation... 30 org.w3c.dom.html.HTMLLIElement

- lib/xercesImpl-2.9.1.jar

Explanation... 31 org.w3c.dom.html.HTMLLabelElement

- lib/xercesImpl-2.9.1.jar

Explanation... 32 org.w3c.dom.html.HTMLLegendElement

- lib/xercesImpl-2.9.1.jar

Explanation... 33 org.w3c.dom.html.HTMLLinkElement

- lib/xercesImpl-2.9.1.jar

Explanation... 34 org.w3c.dom.html.HTMLMapElement

- lib/xercesImpl-2.9.1.jar

Explanation... 35 org.w3c.dom.html.HTMLMenuElement

- lib/xercesImpl-2.9.1.jar

Explanation... 36 org.w3c.dom.html.HTMLMetaElement

- lib/xercesImpl-2.9.1.jar

Explanation... 37 org.w3c.dom.html.HTMLModElement

- lib/xercesImpl-2.9.1.jar

Explanation... 38 org.w3c.dom.html.HTMLOListElement

- lib/xercesImpl-2.9.1.jar

Explanation... 39 org.w3c.dom.html.HTMLObjectElement

- lib/xercesImpl-2.9.1.jar

Explanation... 40 org.w3c.dom.html.HTMLOptGroupElement

- lib/xercesImpl-2.9.1.jar

Explanation... 41 org.w3c.dom.html.HTMLOptionElement

- lib/xercesImpl-2.9.1.jar

Explanation... 42 org.w3c.dom.html.HTMLParagraphElement

- lib/xercesImpl-2.9.1.jar

Explanation... 43 org.w3c.dom.html.HTMLParamElement

- lib/xercesImpl-2.9.1.jar

Explanation... 44 org.w3c.dom.html.HTMLPreElement

- lib/xercesImpl-2.9.1.jar

Explanation... 45 org.w3c.dom.html.HTMLQuoteElement

- lib/xercesImpl-2.9.1.jar

Explanation... 46 org.w3c.dom.html.HTMLScriptElement

- lib/xercesImpl-2.9.1.jar

Explanation... 47 org.w3c.dom.html.HTMLSelectElement

- lib/xercesImpl-2.9.1.jar

Explanation... 48 org.w3c.dom.html.HTMLStyleElement

- lib/xercesImpl-2.9.1.jar

Explanation... 49 org.w3c.dom.html.HTMLTableCaptionElement

- lib/xercesImpl-2.9.1.jar

Explanation... 50 org.w3c.dom.html.HTMLTableCellElement

- lib/xercesImpl-2.9.1.jar

Explanation... 51 org.w3c.dom.html.HTMLTableColElement

- lib/xercesImpl-2.9.1.jar

Explanation... 52 org.w3c.dom.html.HTMLTableElement

- lib/xercesImpl-2.9.1.jar

Explanation... 53 org.w3c.dom.html.HTMLTableRowElement

- lib/xercesImpl-2.9.1.jar

Explanation... 54 org.w3c.dom.html.HTMLTableSectionElement

- lib/xercesImpl-2.9.1.jar

Explanation... 55 org.w3c.dom.html.HTMLTextAreaElement

- lib/xercesImpl-2.9.1.jar

Explanation... 56 org.w3c.dom.html.HTMLTitleElement

- lib/xercesImpl-2.9.1.jar

Explanation... 57 org.w3c.dom.html.HTMLUListElement

- lib/xercesImpl-2.9.1.jar

Explanation... 58 org.w3c.dom.ranges.DocumentRange

- lib/xercesImpl-2.9.1.jar

Explanation... 59 org.w3c.dom.ranges.Range

- lib/xercesImpl-2.9.1.jar

Explanation... 60 org.w3c.dom.ranges.RangeException

- lib/xercesImpl-2.9.1.jar

Explanation... 61 sun.misc.Unsafe

- lib/jodd-core-3.4.10.jar
- lib/xstream-1.4.4.jar

Explanation... 62 sun.net.www.protocol.http.HttpURLConnection

- lib/soap-2.3.1.jar

Explanation... 63 sun.reflect.ReflectionFactory

- lib/xstream-1.4.4.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 11:27, sebb wrote:

On 24 September 2014 09:14, Rory O'Donnell Oracle, Dublin
Ireland<***@oracle.com> <***@oracle.com> wrote:

Hi Philippe,

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 release apache-jmeter-2.11 based on the
jdeps output.

The report is attached to this e-mail.

We did not get the report - the mailing list drops attachments.

If you can upload the report somewhere public and post the URL, that
would be great.
Alternatively, please create a Bugzilla issue [1] and attach the report there.
Thanks.

[1] http://jmeter.apache.org/issues.html

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
Michael Glavassevich
2014-09-30 18:53:31 UTC
Permalink
That's a backwards way of looking at it. Xerces and Xalan aren't using JDK
internal APIs. The JDK included these APIs from Xerces and Xalan.

Michael Glavassevich
XML Technologies and WAS Development
IBM Toronto Lab
Post by sebb
We received this message on the JMeter developer list, however the
findings apply to external projects such as yours.
So I am forwarding the details to you.
If you have any feedback, please address it directly to Oracle
(addresses in e-mail header)
Thanks!
---------- Forwarded message ----------
Date: 24 September 2014 11:29
Subject: Re: Analysis of apache-jmeter-2.11 dependency on JDK-Internal
APIs
Post by sebb
Let me know if the report below is legible ?
JDK Internal API Usage Report for apache-jmeter-2.11
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
. 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 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
if you would prefer.
Numer of jar files depending on JDK-internal APIs: 7
Internal APIs that have known replacements: 6
Internal APIs that have no supported replacements: 63
ID
Replace Usage of
With
Inside
1
org.w3c.dom.xpath.XPathEvaluator
lib/xalan-2.7.1.jar
2
org.w3c.dom.xpath.XPathException
lib/xalan-2.7.1.jar
3
org.w3c.dom.xpath.XPathExpression
lib/xalan-2.7.1.jar
4
org.w3c.dom.xpath.XPathNSResolver
lib/xalan-2.7.1.jar
5
org.w3c.dom.xpath.XPathNamespace
lib/xalan-2.7.1.jar
6
org.w3c.dom.xpath.XPathResult
lib/xalan-2.7.1.jar
ID
Internal APIs (do not use)
Used by
java.awt.peer.ComponentPeer
lib/bsh-2.0b5.jar
1
Explanation...
java.awt.peer.TextComponentPeer
lib/bsh-2.0b5.jar
2
Explanation...
org.w3c.dom.html.HTMLAnchorElement
lib/xercesImpl-2.9.1.jar
3
Explanation...
org.w3c.dom.html.HTMLAppletElement
lib/xercesImpl-2.9.1.jar
4
Explanation...
org.w3c.dom.html.HTMLAreaElement
lib/xercesImpl-2.9.1.jar
5
Explanation...
org.w3c.dom.html.HTMLBRElement
lib/xercesImpl-2.9.1.jar
6
Explanation...
org.w3c.dom.html.HTMLBaseElement
lib/xercesImpl-2.9.1.jar
7
Explanation...
org.w3c.dom.html.HTMLBaseFontElement
lib/xercesImpl-2.9.1.jar
8
Explanation...
org.w3c.dom.html.HTMLBodyElement
lib/xercesImpl-2.9.1.jar
9
Explanation...
org.w3c.dom.html.HTMLButtonElement
lib/xercesImpl-2.9.1.jar
10
Explanation...
org.w3c.dom.html.HTMLCollection
lib/xercesImpl-2.9.1.jar
11
Explanation...
org.w3c.dom.html.HTMLDListElement
lib/xercesImpl-2.9.1.jar
12
Explanation...
org.w3c.dom.html.HTMLDirectoryElement
lib/xercesImpl-2.9.1.jar
13
Explanation...
org.w3c.dom.html.HTMLDivElement
lib/xercesImpl-2.9.1.jar
14
Explanation...
org.w3c.dom.html.HTMLDocument
lib/xercesImpl-2.9.1.jar
15
Explanation...
org.w3c.dom.html.HTMLElement
lib/xercesImpl-2.9.1.jar
16
Explanation...
org.w3c.dom.html.HTMLFieldSetElement
lib/xercesImpl-2.9.1.jar
17
Explanation...
org.w3c.dom.html.HTMLFontElement
lib/xercesImpl-2.9.1.jar
18
Explanation...
org.w3c.dom.html.HTMLFormElement
lib/xercesImpl-2.9.1.jar
19
Explanation...
org.w3c.dom.html.HTMLFrameElement
lib/xercesImpl-2.9.1.jar
20
Explanation...
org.w3c.dom.html.HTMLFrameSetElement
lib/xercesImpl-2.9.1.jar
21
Explanation...
org.w3c.dom.html.HTMLHRElement
lib/xercesImpl-2.9.1.jar
22
Explanation...
org.w3c.dom.html.HTMLHeadElement
lib/xercesImpl-2.9.1.jar
23
Explanation...
org.w3c.dom.html.HTMLHeadingElement
lib/xercesImpl-2.9.1.jar
24
Explanation...
org.w3c.dom.html.HTMLHtmlElement
lib/xercesImpl-2.9.1.jar
25
Explanation...
org.w3c.dom.html.HTMLIFrameElement
lib/xercesImpl-2.9.1.jar
26
Explanation...
org.w3c.dom.html.HTMLImageElement
lib/xercesImpl-2.9.1.jar
27
Explanation...
org.w3c.dom.html.HTMLInputElement
lib/xercesImpl-2.9.1.jar
28
Explanation...
org.w3c.dom.html.HTMLIsIndexElement
lib/xercesImpl-2.9.1.jar
29
Explanation...
org.w3c.dom.html.HTMLLIElement
lib/xercesImpl-2.9.1.jar
30
Explanation...
org.w3c.dom.html.HTMLLabelElement
lib/xercesImpl-2.9.1.jar
31
Explanation...
org.w3c.dom.html.HTMLLegendElement
lib/xercesImpl-2.9.1.jar
32
Explanation...
org.w3c.dom.html.HTMLLinkElement
lib/xercesImpl-2.9.1.jar
33
Explanation...
org.w3c.dom.html.HTMLMapElement
lib/xercesImpl-2.9.1.jar
34
Explanation...
org.w3c.dom.html.HTMLMenuElement
lib/xercesImpl-2.9.1.jar
35
Explanation...
org.w3c.dom.html.HTMLMetaElement
lib/xercesImpl-2.9.1.jar
36
Explanation...
org.w3c.dom.html.HTMLModElement
lib/xercesImpl-2.9.1.jar
37
Explanation...
org.w3c.dom.html.HTMLOListElement
lib/xercesImpl-2.9.1.jar
38
Explanation...
org.w3c.dom.html.HTMLObjectElement
lib/xercesImpl-2.9.1.jar
39
Explanation...
org.w3c.dom.html.HTMLOptGroupElement
lib/xercesImpl-2.9.1.jar
40
Explanation...
org.w3c.dom.html.HTMLOptionElement
lib/xercesImpl-2.9.1.jar
41
Explanation...
org.w3c.dom.html.HTMLParagraphElement
lib/xercesImpl-2.9.1.jar
42
Explanation...
org.w3c.dom.html.HTMLParamElement
lib/xercesImpl-2.9.1.jar
43
Explanation...
org.w3c.dom.html.HTMLPreElement
lib/xercesImpl-2.9.1.jar
44
Explanation...
org.w3c.dom.html.HTMLQuoteElement
lib/xercesImpl-2.9.1.jar
45
Explanation...
org.w3c.dom.html.HTMLScriptElement
lib/xercesImpl-2.9.1.jar
46
Explanation...
org.w3c.dom.html.HTMLSelectElement
lib/xercesImpl-2.9.1.jar
47
Explanation...
org.w3c.dom.html.HTMLStyleElement
lib/xercesImpl-2.9.1.jar
48
Explanation...
org.w3c.dom.html.HTMLTableCaptionElement
lib/xercesImpl-2.9.1.jar
49
Explanation...
org.w3c.dom.html.HTMLTableCellElement
lib/xercesImpl-2.9.1.jar
50
Explanation...
org.w3c.dom.html.HTMLTableColElement
lib/xercesImpl-2.9.1.jar
51
Explanation...
org.w3c.dom.html.HTMLTableElement
lib/xercesImpl-2.9.1.jar
52
Explanation...
org.w3c.dom.html.HTMLTableRowElement
lib/xercesImpl-2.9.1.jar
53
Explanation...
org.w3c.dom.html.HTMLTableSectionElement
lib/xercesImpl-2.9.1.jar
54
Explanation...
org.w3c.dom.html.HTMLTextAreaElement
lib/xercesImpl-2.9.1.jar
55
Explanation...
org.w3c.dom.html.HTMLTitleElement
lib/xercesImpl-2.9.1.jar
56
Explanation...
org.w3c.dom.html.HTMLUListElement
lib/xercesImpl-2.9.1.jar
57
Explanation...
org.w3c.dom.ranges.DocumentRange
lib/xercesImpl-2.9.1.jar
58
Explanation...
org.w3c.dom.ranges.Range
lib/xercesImpl-2.9.1.jar
59
Explanation...
org.w3c.dom.ranges.RangeException
lib/xercesImpl-2.9.1.jar
60
Explanation...
sun.misc.Unsafe
lib/jodd-core-3.4.10.jar
lib/xstream-1.4.4.jar
61
Explanation...
sun.net.www.protocol.http.HttpURLConnection
lib/soap-2.3.1.jar
62
Explanation...
sun.reflect.ReflectionFactory
lib/xstream-1.4.4.jar
63
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 September 2014 09:14, Rory O'Donnell Oracle, Dublin Ireland
Hi Philippe,
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
Post by sebb
concern involves identifying compatibility problems, such as reliance on
JDK-internal APIs.
Our engineers have already prepared guidance on migrating some of the
more
Post by sebb
common usage patterns of JDK-internal APIs to supported public
interfaces.
Post by sebb
The list is on the OpenJDK wiki [0], along with instructions on how to
run
Post by sebb
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 release apache-jmeter-2.11 based on
the
Post by sebb
jdeps output.
The report is attached to this e-mail.
We did not get the report - the mailing list drops attachments.
If you can upload the report somewhere public and post the URL, that
would be great.
Alternatively, please create a Bugzilla issue [1] and attach the report
there.
Post by sebb
Thanks.
[1] http://jmeter.apache.org/issues.html
For anything where your migration path is unclear, I would appreciate
comments on the JDK-internal API usage patterns in the attached jdeps
report
Post by sebb
- in particular comments elaborating on the rationale for them - either
to
Post by sebb
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
Post by sebb
development cycle so you can give feedback about new APIs that may be
needed
Post by sebb
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
Post by sebb
--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland
--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland
Т���������������������������������������������������������������������ХF�V�7V'67&�&R�R���âFWb�V�7V'67&�&T����6�R��&pФf�"FF�F����6����G2�R���
Michael Glavassevich
2014-09-30 18:53:31 UTC
Permalink
That's a backwards way of looking at it. Xerces and Xalan aren't using JDK
internal APIs. The JDK included these APIs from Xerces and Xalan.

Michael Glavassevich
XML Technologies and WAS Development
IBM Toronto Lab
Post by sebb
We received this message on the JMeter developer list, however the
findings apply to external projects such as yours.
So I am forwarding the details to you.
If you have any feedback, please address it directly to Oracle
(addresses in e-mail header)
Thanks!
---------- Forwarded message ----------
Date: 24 September 2014 11:29
Subject: Re: Analysis of apache-jmeter-2.11 dependency on JDK-Internal
APIs
Post by sebb
Let me know if the report below is legible ?
JDK Internal API Usage Report for apache-jmeter-2.11
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
. 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 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
if you would prefer.
Numer of jar files depending on JDK-internal APIs: 7
Internal APIs that have known replacements: 6
Internal APIs that have no supported replacements: 63
ID
Replace Usage of
With
Inside
1
org.w3c.dom.xpath.XPathEvaluator
lib/xalan-2.7.1.jar
2
org.w3c.dom.xpath.XPathException
lib/xalan-2.7.1.jar
3
org.w3c.dom.xpath.XPathExpression
lib/xalan-2.7.1.jar
4
org.w3c.dom.xpath.XPathNSResolver
lib/xalan-2.7.1.jar
5
org.w3c.dom.xpath.XPathNamespace
lib/xalan-2.7.1.jar
6
org.w3c.dom.xpath.XPathResult
lib/xalan-2.7.1.jar
ID
Internal APIs (do not use)
Used by
java.awt.peer.ComponentPeer
lib/bsh-2.0b5.jar
1
Explanation...
java.awt.peer.TextComponentPeer
lib/bsh-2.0b5.jar
2
Explanation...
org.w3c.dom.html.HTMLAnchorElement
lib/xercesImpl-2.9.1.jar
3
Explanation...
org.w3c.dom.html.HTMLAppletElement
lib/xercesImpl-2.9.1.jar
4
Explanation...
org.w3c.dom.html.HTMLAreaElement
lib/xercesImpl-2.9.1.jar
5
Explanation...
org.w3c.dom.html.HTMLBRElement
lib/xercesImpl-2.9.1.jar
6
Explanation...
org.w3c.dom.html.HTMLBaseElement
lib/xercesImpl-2.9.1.jar
7
Explanation...
org.w3c.dom.html.HTMLBaseFontElement
lib/xercesImpl-2.9.1.jar
8
Explanation...
org.w3c.dom.html.HTMLBodyElement
lib/xercesImpl-2.9.1.jar
9
Explanation...
org.w3c.dom.html.HTMLButtonElement
lib/xercesImpl-2.9.1.jar
10
Explanation...
org.w3c.dom.html.HTMLCollection
lib/xercesImpl-2.9.1.jar
11
Explanation...
org.w3c.dom.html.HTMLDListElement
lib/xercesImpl-2.9.1.jar
12
Explanation...
org.w3c.dom.html.HTMLDirectoryElement
lib/xercesImpl-2.9.1.jar
13
Explanation...
org.w3c.dom.html.HTMLDivElement
lib/xercesImpl-2.9.1.jar
14
Explanation...
org.w3c.dom.html.HTMLDocument
lib/xercesImpl-2.9.1.jar
15
Explanation...
org.w3c.dom.html.HTMLElement
lib/xercesImpl-2.9.1.jar
16
Explanation...
org.w3c.dom.html.HTMLFieldSetElement
lib/xercesImpl-2.9.1.jar
17
Explanation...
org.w3c.dom.html.HTMLFontElement
lib/xercesImpl-2.9.1.jar
18
Explanation...
org.w3c.dom.html.HTMLFormElement
lib/xercesImpl-2.9.1.jar
19
Explanation...
org.w3c.dom.html.HTMLFrameElement
lib/xercesImpl-2.9.1.jar
20
Explanation...
org.w3c.dom.html.HTMLFrameSetElement
lib/xercesImpl-2.9.1.jar
21
Explanation...
org.w3c.dom.html.HTMLHRElement
lib/xercesImpl-2.9.1.jar
22
Explanation...
org.w3c.dom.html.HTMLHeadElement
lib/xercesImpl-2.9.1.jar
23
Explanation...
org.w3c.dom.html.HTMLHeadingElement
lib/xercesImpl-2.9.1.jar
24
Explanation...
org.w3c.dom.html.HTMLHtmlElement
lib/xercesImpl-2.9.1.jar
25
Explanation...
org.w3c.dom.html.HTMLIFrameElement
lib/xercesImpl-2.9.1.jar
26
Explanation...
org.w3c.dom.html.HTMLImageElement
lib/xercesImpl-2.9.1.jar
27
Explanation...
org.w3c.dom.html.HTMLInputElement
lib/xercesImpl-2.9.1.jar
28
Explanation...
org.w3c.dom.html.HTMLIsIndexElement
lib/xercesImpl-2.9.1.jar
29
Explanation...
org.w3c.dom.html.HTMLLIElement
lib/xercesImpl-2.9.1.jar
30
Explanation...
org.w3c.dom.html.HTMLLabelElement
lib/xercesImpl-2.9.1.jar
31
Explanation...
org.w3c.dom.html.HTMLLegendElement
lib/xercesImpl-2.9.1.jar
32
Explanation...
org.w3c.dom.html.HTMLLinkElement
lib/xercesImpl-2.9.1.jar
33
Explanation...
org.w3c.dom.html.HTMLMapElement
lib/xercesImpl-2.9.1.jar
34
Explanation...
org.w3c.dom.html.HTMLMenuElement
lib/xercesImpl-2.9.1.jar
35
Explanation...
org.w3c.dom.html.HTMLMetaElement
lib/xercesImpl-2.9.1.jar
36
Explanation...
org.w3c.dom.html.HTMLModElement
lib/xercesImpl-2.9.1.jar
37
Explanation...
org.w3c.dom.html.HTMLOListElement
lib/xercesImpl-2.9.1.jar
38
Explanation...
org.w3c.dom.html.HTMLObjectElement
lib/xercesImpl-2.9.1.jar
39
Explanation...
org.w3c.dom.html.HTMLOptGroupElement
lib/xercesImpl-2.9.1.jar
40
Explanation...
org.w3c.dom.html.HTMLOptionElement
lib/xercesImpl-2.9.1.jar
41
Explanation...
org.w3c.dom.html.HTMLParagraphElement
lib/xercesImpl-2.9.1.jar
42
Explanation...
org.w3c.dom.html.HTMLParamElement
lib/xercesImpl-2.9.1.jar
43
Explanation...
org.w3c.dom.html.HTMLPreElement
lib/xercesImpl-2.9.1.jar
44
Explanation...
org.w3c.dom.html.HTMLQuoteElement
lib/xercesImpl-2.9.1.jar
45
Explanation...
org.w3c.dom.html.HTMLScriptElement
lib/xercesImpl-2.9.1.jar
46
Explanation...
org.w3c.dom.html.HTMLSelectElement
lib/xercesImpl-2.9.1.jar
47
Explanation...
org.w3c.dom.html.HTMLStyleElement
lib/xercesImpl-2.9.1.jar
48
Explanation...
org.w3c.dom.html.HTMLTableCaptionElement
lib/xercesImpl-2.9.1.jar
49
Explanation...
org.w3c.dom.html.HTMLTableCellElement
lib/xercesImpl-2.9.1.jar
50
Explanation...
org.w3c.dom.html.HTMLTableColElement
lib/xercesImpl-2.9.1.jar
51
Explanation...
org.w3c.dom.html.HTMLTableElement
lib/xercesImpl-2.9.1.jar
52
Explanation...
org.w3c.dom.html.HTMLTableRowElement
lib/xercesImpl-2.9.1.jar
53
Explanation...
org.w3c.dom.html.HTMLTableSectionElement
lib/xercesImpl-2.9.1.jar
54
Explanation...
org.w3c.dom.html.HTMLTextAreaElement
lib/xercesImpl-2.9.1.jar
55
Explanation...
org.w3c.dom.html.HTMLTitleElement
lib/xercesImpl-2.9.1.jar
56
Explanation...
org.w3c.dom.html.HTMLUListElement
lib/xercesImpl-2.9.1.jar
57
Explanation...
org.w3c.dom.ranges.DocumentRange
lib/xercesImpl-2.9.1.jar
58
Explanation...
org.w3c.dom.ranges.Range
lib/xercesImpl-2.9.1.jar
59
Explanation...
org.w3c.dom.ranges.RangeException
lib/xercesImpl-2.9.1.jar
60
Explanation...
sun.misc.Unsafe
lib/jodd-core-3.4.10.jar
lib/xstream-1.4.4.jar
61
Explanation...
sun.net.www.protocol.http.HttpURLConnection
lib/soap-2.3.1.jar
62
Explanation...
sun.reflect.ReflectionFactory
lib/xstream-1.4.4.jar
63
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 September 2014 09:14, Rory O'Donnell Oracle, Dublin Ireland
Hi Philippe,
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
Post by sebb
concern involves identifying compatibility problems, such as reliance on
JDK-internal APIs.
Our engineers have already prepared guidance on migrating some of the
more
Post by sebb
common usage patterns of JDK-internal APIs to supported public
interfaces.
Post by sebb
The list is on the OpenJDK wiki [0], along with instructions on how to
run
Post by sebb
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 release apache-jmeter-2.11 based on
the
Post by sebb
jdeps output.
The report is attached to this e-mail.
We did not get the report - the mailing list drops attachments.
If you can upload the report somewhere public and post the URL, that
would be great.
Alternatively, please create a Bugzilla issue [1] and attach the report
there.
Post by sebb
Thanks.
[1] http://jmeter.apache.org/issues.html
For anything where your migration path is unclear, I would appreciate
comments on the JDK-internal API usage patterns in the attached jdeps
report
Post by sebb
- in particular comments elaborating on the rationale for them - either
to
Post by sebb
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
Post by sebb
development cycle so you can give feedback about new APIs that may be
needed
Post by sebb
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
Post by sebb
--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland
--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland
Т���������������������������������������������������������������������ХF�V�7V'67&�&R�R���âFWb�V�7V'67&�&T����6�R��&pФf�"FF�F����6����G2�R���
Loading...