Analysis of jython2.5.3 dependency on JDK-Internal APIs

"Rory O'Donnell Oracle, Dublin Ireland" <[email protected]>
Newsgroups gmane.comp.lang.jython.devel
Message-ID <[email protected]>
Hi Alan,

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 jython2.5.3 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

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk

_______________________________________________
Jython-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jython-dev
JDK Internal API Usage Report for jython2.5.3.html (text/html, 12.6 KB)
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <meta charset="utf-8">
        <title>JDK Internal API Usage Report for jython2.5.3</title>
    </head>
<body>
<h1>JDK Internal API Usage Report for jython2.5.3</h1>
<p>
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 
<a href="http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html">
the Java team explained in 1996</a>. 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.
</p><p>
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.
</p><p>
This report was generated by <a href="http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html">jdeps</a> 
through static analysis of artifacts: it does not identify any usage of those 
APIs through reflection or dynamic bytecode. You may also 
<a href="https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool">
run jdeps on your own</a> if you would prefer.

</p><p>
Summary of the analysis of the jar files within jython2.5.3:
</p><ul>
<li> Numer of jar files depending on JDK-internal APIs: 3 
</li><li> Internal APIs that have known replacements: 0
</li><li> Internal APIs that have no supported replacements: 59
</li></ul>
<p></p>

<h3>APIs that have 
    <a href="https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool">
    known replacements</a>:</h3>

<table border="1">
<tbody><tr>
    <th>ID</th>
    <th>Replace Usage of</th>
    <th>With</th>
    <th>Inside</th>
</tr>

</tbody></table>

<h3>JDK-internal APIs without supported replacements:</h3>
<table border="1">
<tbody><tr>
    <th>ID</th>
    <th>Internal APIs (do not use)</th>
    <th>Used by</th>
</tr>
<tr>
<td rowspan="2">1</td>
  <td>org.w3c.dom.html.HTMLAnchorElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">2</td>
  <td>org.w3c.dom.html.HTMLAppletElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">3</td>
  <td>org.w3c.dom.html.HTMLAreaElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">4</td>
  <td>org.w3c.dom.html.HTMLBRElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">5</td>
  <td>org.w3c.dom.html.HTMLBaseElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">6</td>
  <td>org.w3c.dom.html.HTMLBaseFontElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">7</td>
  <td>org.w3c.dom.html.HTMLBodyElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">8</td>
  <td>org.w3c.dom.html.HTMLButtonElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">9</td>
  <td>org.w3c.dom.html.HTMLCollection</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">10</td>
  <td>org.w3c.dom.html.HTMLDListElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">11</td>
  <td>org.w3c.dom.html.HTMLDirectoryElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">12</td>
  <td>org.w3c.dom.html.HTMLDivElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">13</td>
  <td>org.w3c.dom.html.HTMLDocument</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">14</td>
  <td>org.w3c.dom.html.HTMLElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">15</td>
  <td>org.w3c.dom.html.HTMLFieldSetElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">16</td>
  <td>org.w3c.dom.html.HTMLFontElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">17</td>
  <td>org.w3c.dom.html.HTMLFormElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">18</td>
  <td>org.w3c.dom.html.HTMLFrameElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">19</td>
  <td>org.w3c.dom.html.HTMLFrameSetElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">20</td>
  <td>org.w3c.dom.html.HTMLHRElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">21</td>
  <td>org.w3c.dom.html.HTMLHeadElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">22</td>
  <td>org.w3c.dom.html.HTMLHeadingElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">23</td>
  <td>org.w3c.dom.html.HTMLHtmlElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">24</td>
  <td>org.w3c.dom.html.HTMLIFrameElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">25</td>
  <td>org.w3c.dom.html.HTMLImageElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">26</td>
  <td>org.w3c.dom.html.HTMLInputElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">27</td>
  <td>org.w3c.dom.html.HTMLIsIndexElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">28</td>
  <td>org.w3c.dom.html.HTMLLIElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">29</td>
  <td>org.w3c.dom.html.HTMLLabelElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">30</td>
  <td>org.w3c.dom.html.HTMLLegendElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">31</td>
  <td>org.w3c.dom.html.HTMLLinkElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">32</td>
  <td>org.w3c.dom.html.HTMLMapElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">33</td>
  <td>org.w3c.dom.html.HTMLMenuElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">34</td>
  <td>org.w3c.dom.html.HTMLMetaElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">35</td>
  <td>org.w3c.dom.html.HTMLModElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">36</td>
  <td>org.w3c.dom.html.HTMLOListElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">37</td>
  <td>org.w3c.dom.html.HTMLObjectElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">38</td>
  <td>org.w3c.dom.html.HTMLOptGroupElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">39</td>
  <td>org.w3c.dom.html.HTMLOptionElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">40</td>
  <td>org.w3c.dom.html.HTMLParagraphElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">41</td>
  <td>org.w3c.dom.html.HTMLParamElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">42</td>
  <td>org.w3c.dom.html.HTMLPreElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">43</td>
  <td>org.w3c.dom.html.HTMLQuoteElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">44</td>
  <td>org.w3c.dom.html.HTMLScriptElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">45</td>
  <td>org.w3c.dom.html.HTMLSelectElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">46</td>
  <td>org.w3c.dom.html.HTMLStyleElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">47</td>
  <td>org.w3c.dom.html.HTMLTableCaptionElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">48</td>
  <td>org.w3c.dom.html.HTMLTableCellElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">49</td>
  <td>org.w3c.dom.html.HTMLTableColElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">50</td>
  <td>org.w3c.dom.html.HTMLTableElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">51</td>
  <td>org.w3c.dom.html.HTMLTableRowElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">52</td>
  <td>org.w3c.dom.html.HTMLTableSectionElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">53</td>
  <td>org.w3c.dom.html.HTMLTextAreaElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">54</td>
  <td>org.w3c.dom.html.HTMLTitleElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">55</td>
  <td>org.w3c.dom.html.HTMLUListElement</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">56</td>
  <td>org.w3c.dom.ranges.DocumentRange</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">57</td>
  <td>org.w3c.dom.ranges.Range</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">58</td>
  <td>org.w3c.dom.ranges.RangeException</td>
  <td><ul>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>
<tr>
<td rowspan="2">59</td>
  <td>sun.misc.Unsafe</td>
  <td><ul>
    <li>extlibs/guava-r07.jar</li>
    <li>extlibs/jffi.jar</li>
    <li>jython.jar</li>
  </ul></td>
</tr>
<tr><td colspan="2">Explanation...</td></tr>

</tbody></table>
        
        
<h3>Identify External Replacements</h3>
<p>You should use a separate third-party library that performs this
   functionality.</p>

<table border="1">
<tbody><tr>
     <th>ID</th>
     <th>Internal API (grouped by package)</th>
     <th>Used By</th>
     <th>Identify External Replacement</th>
</tr>

</tbody></table>


</body></html>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.