Stuart told me that using the released version of japitools was not ideal, so I've re-run the tests with the latest version of japitools from CVS.
I did find a few bugs in japitools when dealing with JRockit and J9 (submitted to the japitools mail list) but there are still interesting results. ======== sun 1.5 vs bea 1.5 ============ Total: 99.99% good, 0% missing, 0% abs.add Error Summary: Methods: 1 missing, 1 abs.add. Errors: java.awt.peer: Missing method java.awt.peer.WindowPeer.updateFocusableWindowState(): missing in bea1.5 java.util.concurrent: Abs.add method java.util.concurrent.Delayed.compareTo(java.lang.Object): new interface method in bea1.5 So, it appears that that Sun added a method that is not available in the javadocs (bad Sun, no donut for you!) and that BEA did not (correctly) implement. Also, BEA added the method "compareTo" to the java.util.concurrent.Delayed interface. This is not really a problem because Delayed extends Comparable, therefore all classes implementing Delayed will have to have the compareTo method anyway. Stuart, do you think this is something that japitools should check? I would call this a false positive. ======== sun 1.5 vs ibm 1.5 =================== Total: 99.93% good, 0% bad, 0.06% missing, 0% abs.add Error Summary: Classes: 2 missing. Fields: 1 bad. Methods: 5 missing, 6 abs.add. Errors: java.awt.peer: Missing method java.awt.peer.WindowPeer.updateFocusableWindowState(): missing in ibm1.5 java.util.concurrent: Abs.add method java.util.concurrent.Delayed.compareTo(java.lang.Object): new interface method in ibm1.5 javax.xml.datatype: Bad field javax.xml.datatype.DatatypeFactory.DATATYPEFACTORY_IMPLEMENTATION_CLASS: constant [com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl] in sun1.5, but constant [org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl] in ibm1.5 org.omg.stub.javax.management.remote.rmi: Missing class org.omg.stub.javax.management.remote.rmi._RMIConnectionImpl_Tie: missing in ibm1.5 class org.omg.stub.javax.management.remote.rmi._RMIServerImpl_Tie: missing in ibm1.5 org.w3c.dom.html: Missing method org.w3c.dom.html.HTMLFrameElement.getContentDocument(): missing in ibm1.5 method org.w3c.dom.html.HTMLIFrameElement.getContentDocument(): missing in ibm1.5 method org.w3c.dom.html.HTMLObjectElement.getContentDocument(): missing in ibm1.5 method org.w3c.dom.html.HTMLOptionElement.setSelected(boolean): missing in ibm1.5 Abs.add method org.w3c.dom.html.HTMLOptionElement.setIndex(int): new interface method in ibm1.5 method org.w3c.dom.html.HTMLTableCellElement.setCellIndex(int): new interface method in ibm1.5 method org.w3c.dom.html.HTMLTableRowElement.setCells(org.w3c.dom.html.HTMLCollection): new interface method in ibm1.5 method org.w3c.dom.html.HTMLTableRowElement.setRowIndex(int): new interface method in ibm1.5 method org.w3c.dom.html.HTMLTableRowElement.setSectionRowIndex(int): new interface method in ibm1.5 So, it seems that the new japitools does fix some problems. The first two are the same as with BEA. The datatype factory is not problematic. The RMI over IIOP stubs should probably be ignored. The only substantial difference is the HTML DOM (which nobody uses anyway). Now the reverse checks ====== bea 1.5 vs sun 1.5 ====================== Total: 100% good, 0% abs.add Error Summary: Methods: 2 abs.add. Errors: java.awt.peer: Abs.add method java.awt.peer.WindowPeer.updateFocusableWindowState(): new interface method in sun1.5 java.util.concurrent: Abs.add method java.util.concurrent.Delayed.compareTo(java.lang.Object): new interface method in sun1.5 Done. Hmmm, the compareTo is in both the direct and the reverse? smells like a japitool bug to me. ======= IBM 1.5 vs. Sun 1.5 ======================== Total: 99.78% good, 0% bad, 0.21% missing, 0% abs.add Error Summary: Packages: 4 missing. Classes: 2 missing. Fields: 1 bad. Methods: 6 missing, 6 abs.add. Errors: java.lang: Missing method java.lang.StringBuilder.append(java.lang.StringBuilder): missing in sun1.5 java.awt.peer: Abs.add method java.awt.peer.WindowPeer.updateFocusableWindowState(): new interface method in sun1.5 java.util.concurrent: Abs.add method java.util.concurrent.Delayed.compareTo(java.lang.Object): new interface method in sun1.5 javax.management.remote.rmi: Missing class javax.management.remote.rmi._RMIConnectionImpl_Tie: missing in sun1.5 class javax.management.remote.rmi._RMIServerImpl_Tie: missing in sun1.5 javax.xml.datatype: Bad field javax.xml.datatype.DatatypeFactory.DATATYPEFACTORY_IMPLEMENTATION_CLASS: constant [org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl] in ibm1.5, but constant [com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl] in sun1.5 org.omg.stub.java.lang: Missing package org.omg.stub.java.lang: missing in sun1.5 org.omg.stub.java.security: Missing package org.omg.stub.java.security: missing in sun1.5 org.omg.stub.java.util: Missing package org.omg.stub.java.util: missing in sun1.5 org.w3c.dom.html: Missing method org.w3c.dom.html.HTMLOptionElement.setIndex(int): missing in sun1.5 method org.w3c.dom.html.HTMLTableCellElement.setCellIndex(int): missing in sun1.5 method org.w3c.dom.html.HTMLTableRowElement.setCells(org.w3c.dom.html.HTMLCollection): missing in sun1.5 method org.w3c.dom.html.HTMLTableRowElement.setRowIndex(int): missing in sun1.5 method org.w3c.dom.html.HTMLTableRowElement.setSectionRowIndex(int): missing in sun1.5 Abs.add method org.w3c.dom.html.HTMLFrameElement.getContentDocument(): new interface method in sun1.5 method org.w3c.dom.html.HTMLIFrameElement.getContentDocument(): new interface method in sun1.5 method org.w3c.dom.html.HTMLObjectElement.getContentDocument(): new interface method in sun1.5 method org.w3c.dom.html.HTMLOptionElement.setSelected(boolean): new interface method in sun1.5 org.w3c.dom.xpath: Missing package org.w3c.dom.xpath: missing in sun1.5 So other than the problems we identified before, there seem to be two more issues: 1) java.lang.StringBuilder.append(java.lang.StringBuilder) missing in sun1.5 2) package org.w3c.dom.xpath: missing in sun1.5 - o - The results show clearly that japitools did indeed improve a lot over the last released version. NOTE: the results were taken with the following package passed to the "japize" tool: +java +javax +org -org.apache -org.ietf -- Stefano.