Declaration_of_Carla_Schroer_In_Support_of_Plaintiff's_Motion_for_Preliminary_Injunction_Legal_document_filed_February_27th_1998.
 

Declaration of Carla Schroer In Support of Plaintiff's Motion for
Preliminary Injunction
Legal document filed with the court on February 27th, 1998.
 

 

Declaration of Carla Schroer COOLEY GODWARD LLP
LLOYD R. DAY, JR. (90875)
PAUL J. LAVERONI (43846)
JANET L. CULLUM (104336)
MARK B. PITCHFORD (116811)
Five Palo Alto Square
3000 El Camino Real
Palo Alto, CA 94306-2155
Telephone: (650) 843-5000

Attorneys for Plaintiff
SUN MICROSYSTEMS, INC.
 

UNITED STATES DISTRICT COURT

NORTHERN DISTRICT OF CALIFORNIA

SAN JOSE DIVISION

 

 

SUN MICROSYSTEMS, INC.,
a Delaware corporation,

    Plaintiff,

v.

MICROSOFT CORPORATION,
a Washington corporation,

    Defendant.

)
)
)
)
)
)
)
)
)
)
)

 
No. C 97-20884 RMW (PVT) ENE

Declaration of Carla Schroer In Support of Plaintiff's Motion for Preliminary Injunction

Date: February 27, 1998
Time: 9:00 a.m.
Judge: Ronald M. Whyte
Crtrm: 6

 

I, Carla Schroer, declare:

     1.     I am employed by Sun Microsystems, Inc. ("Sun") as a Senior Engineering Manager in Sun's JavaSoft Division. I have personal knowledge of the facts contained in this Declaration and, if called as a witness, I could and would testify competently to them.

     2.     I received a Bachelor of Arts degree in 1986 from New College of the University of South Florida, with a concentration in Computer Studies.

     3.     From at least March 1988 until the present, I have continuously been employed in the computer software industry as a technical support, quality assurance and software test engineer and manager. From March 1988 to February 1992 I was employed by IntelliCorp Inc. as a Technical Support Engineer and, subsequently, as a Quality Assurance ("QA") Manager. As a Technical Support Engineer I provided general technical assistance to KEE software development customers. KEE is a Lisp-based development environment for creating object-oriented and rule-based expert systems. My responsibilities included support of KEE beta sites, the development of testing tasks, the execution of automated and manual tests for KEE releases, and the coordination of the testing effort of the technical support department. As QA Manager I was responsible for testing the 1.0 and subsequent patch releases of the ProKappa object-oriented application development system. I managed the design, implementation, and maintenance of an automated test system written using the ProKappa environment. I also planned test strategy and oversaw test implementation and execution.

     4.     From February 1992 until March 1995, I was employed by Frame Technology, first as a QA Manager and subsequently as a Senior QA Manager. As a QA Manager I managed a group of 6 to 8 QA engineers responsible for testing the releases of FrameMaker, FrameBuilder, SGML Utilities, and FrameViewer on a variety of Unix workstations. My group was involved in all phases of the software development cycle and was responsible for review of functional specifications, development of test materials, execution of manual and automated tests, and submission of bug reports. I was responsible for the hiring and management of all personnel of the group, the development of test strategy, the creation and tracking of schedules, prioritization of reported bugs, and participation in ship/no ship decisions. As Senior QA Manager I was the QA program manager for the 5.0 release of FrameMaker, FrameViewer, and FrameMaker Developer's Kit on UNIX, Mac, and Windows platforms. I was responsible for the development of test strategy, QA project schedules, bug database requirements, and project milestone definitions. I participated in the development and improvement of engineering processes, including documentation, functional specifications, code reviews, engineering change orders, and release engineering process.

     5.     In March 1995 I was hired by Sun as a QA Manager on Sun's JAVAÔ technology project. During the course of 1995, I assumed responsibility for all compatibility testing, developer support, and release engineering for the JAVAÔ technology project. I was also responsible for hiring individuals to carry out those functions and for carrying out the administrative duties that accompany the development and growth of a QA department. Since 1995 my responsibilities have included the development, execution, and refinement of the tests, tools and procedures necessary to determine whether products incorporating the JAVAÔ technology conform to and are compatible with Sun's applicable specifications. In my capacity as compatibility test manager, I currently supervise and manage a group of over 30 quality assurance and software test engineers.

     6.     Sun's compatibility test suites for the JAVAÔ technology, commonly called the JAVAÔ Compatibility Kit ("JCK"), are developed and distributed by Sun to test that products developed by Sun's source code licensees using the JAVAÔ technology conform to Sun's specifications and set of public application programming interfaces ("APIs") for the JAVAÔ technology. Under each of the license and distribution agreements granted by Sun for the JAVAÔ technology, the right to distribute products that incorporate Sun's JAVAÔ technology is in all cases conditioned on the requirement that each such product first pass the JCK test suite that accompanied the version of the JAVAÔ technology incorporated in the product before the product is released for commercial distribution. The compatibility test program for implementations of the JAVAÔ technology is a self-test program that relies in large measure upon each licensee to administer the JCK tests to its respective products and pass the required JCK tests prior to the commercial release of any product incorporating Sun's JAVAÔ technology. In my experience, Sun's source code licensees customarily inform Sun of any compatibility tests their products fail to pass, and discuss with Sun the reasons or causes for such test failures, prior to the commercial release or distribution of their products. On occasion, Sun has discovered subsequent to a licensee's commercial release of a product incorporating JAVAÔ technology that the product fails to pass one or more valid JCK tests. In all such instances of which I am aware, Sun has contacted the subject licensee and, with the sole exception of Microsoft, secured its written agreement to modify its product implementation in a current or subsequent release to bring the non-compatible product into conformity with Sun's specifications and set of public APIs for the JAVAÔ technology, and to pass Sun's JCK test suite.

     7.     In some instances Sun determines that a particular JCK test is invalid and therefore need not be passed by a product implementation to establish conformance with Sun's specifications, including the public API set, for the JAVAÔ technology. For example, a particular JCK test program may have a bug which renders that particular test's result erroneous or ambiguous. Alternatively, the test may fail to track precisely the specification. In such cases, Sun excludes the affected test from the list of JCK tests required for compatibility as and when Sun learns of the test problem. Except for those JCK tests which have been determined by Sun to be invalid and therefore not required to establish compatibility, each test in the JCK test suite must be passed by a licensee's product incorporating the JAVAÔ technology prior to the licensee's commercial release of the product.

     8.     In January 1996, Sun released the first commercial version of the JAVAÔ Development Kit ("JDK") 1.0. At the same time Sun released approximately 300 tests developed by my group of engineers to assist Sun's source code licensees of the JAVAÔ technology to determine whether their product implementations of the JAVAÔ 1.0 technology were compatible with Sun's specifications for the JAVAÔ technology, as reflected in the JDK 1.0 release. Collectively, the 300 or so tests released with the JDK 1.0 version of the JAVAÔ technology were called the JAVAÔ 1.0 compatibility test suite.

     9.     In February 1997, Sun released the JDK 1.1 upgrade of the JAVAÔ technology. The JDK 1.1 release was accompanied with a far more extensive suite of compatibility tests, called the JCK 1.1a test suite. The JCK 1.1a test suite incorporates over 8,000 separate tests and, like the 1.0 test suite before it, is designed to enable Sun's source code licensees to determine whether their product implementations of the JDK 1.1 version of Sun's JAVAÔ technology conform with Sun's specifications for the JAVAÔ technology, as upgraded by the JDK 1.1 release.

     10.     Microsoft is a source code licensee of the JAVAÔ technology. In my capacity as manager of compatibility testing for the JAVAÔ technology, I have responsibility for monitoring Microsoft's compliance with its contractual obligation to pass Sun's compatibility test suites prior to the commercial release of each Microsoft product that implements Sun's JAVAÔ technology. In my capacity as manager of compatibility testing, I have read and am familiar with the March 11, 1996 Technology License and Distribution Agreement between Sun and Microsoft.

     11.     In or about March 1996 I supervised the delivery of Sun's 1.0 test suite to Microsoft.

     12.     On or about February 16, 1997, I supervised the delivery of Sun's JCK 1.1a test suite to Microsoft via the Javasoft Partners Website.

     13.     On September 30, 1997, Microsoft commenced the commercial distribution of its Internet Explorer 4.0 ("IE 4.0") browser via the Microsoft Website. According to Microsoft, IE 4.0 incorporates Sun's JDK 1.1 technology. A true and correct copy of the Microsoft Webpage announcing the commercial release of IE 4.0 on September 30, 1997 is attached hereto as Exhibit A.

     14.     Prior to its commercial release of IE 4.0 on September 30, 1997, a Microsoft representative contacted Sun to inquire whether three of the compatibility tests contained in the JCK 1.1a test suite were valid tests, and whether IE 4.0 would be required to pass these three tests prior to Microsoft's commercial release of its IE 4.0 product. Upon review of Microsoft's inquiry, Sun informed Microsoft on September 9, 1997 that two of the three tests (tests.lang.clss092.clss09201.clss09201 and tests.lang.exec007.exec00704.exec00704) were valid tests and that IE 4.0 would be required to pass both tests prior to its commercial release. The third test (tests.lang.binc033.binc03301.binc03301) was determined by my department to be an invalid test. It was therefore placed on the list of excluded tests, and Microsoft was informed that IE 4.0 would not be required to pass the invalid, excluded test prior to the commercial release of IE 4.0.

     15.     Because Microsoft claims that IE 4.0 incorporates Sun's JDK 1.1 technology, section 2.6(a) of the Technology License and Distribution Agreement requires IE 4.0 to pass the JCK 1.1a test suite prior to the commercial distribution of IE 4.0. From September 30 through October 6, 1997, I personally supervised Sun's compatibility testing of Microsoft's IE 4.0 to determine whether IE 4.0 passed the JCK 1.1a test suite. Beginning late in the evening of September 30, 1997, I directed a group of Sun engineers in electronically downloading a binary copy of the commercial version of IE 4.0 from the Microsoft Website, and in performing each of the JCK 1.1a compatibility tests against the downloaded version of Microsoft's commercial release of IE 4.0. The IE 4.0 binary code downloaded from the Microsoft Website on September 30, 1997 is labelled IE 4.0 version number 4.71.1712.6 and bears the date 9/18/97; the "java" class files are labelled version number 4.79.2252 and bear the date 9/12/97. The IE 4.0 binary code downloaded from the Microsoft Website on September 30, 1997 fails to pass the JCK 1.1a compatibility test suite in at least the following important respects:

          a.     Microsoft's IE 4.0 fails to pass the JCK 1.1a "SignatureTest". The set of public APIs for the "java" class libraries implemented in Microsoft's IE 4.0 have been modified by Microsoft to delete classes from the "java" class hierarchy, and to add and delete various methods and fields in the "java" classes. These non-conforming modifications were not previously disclosed to Sun by Microsoft and result in the failure of IE 4.0 to pass the JCK 1.1a "SignatureTest". The "SignatureTest" examines the set of public APIs of the "java" class libraries implemented in IE 4.0 to determine if it conforms with the specified set of public APIs for the JAVAÔ technology. A table listing the 901 changes, additions and deletions detected by the JCK 1.1a "SignatureTest" in Microsoft's IE 4.0 is attached hereto as Exhibit B.

          b.     In running the remaining compatibility tests of the JCK 1.1a test suite, we discovered that Microsoft's IE 4.0 does not include the JAVAÔ Remote Method Invocation ("RMI") class library. Consequently, Microsoft's IE 4.0 fails to pass any of the 343 required JCK 1.1a compatibility tests for the RMI class library.

          c.     We also discovered that Microsoft's IE 4.0 does not support the JAVAÔ Native Interface ("JNI"). Accordingly, IE 4.0 fails to pass any of the 239 required JCK 1.1a compatibility tests for JNI.

          d.     The IE 4.0 fails to pass the two tests for class initialization (tests.lang.clss092 and tests.lang.exec007) which Microsoft had been informed in September 1997 were valid, required tests.

          e.     Our tests of the IE 4.0 also reveal a number of compatibility test failures that appear to be attributable to the security scheme in Microsoft's IE 4.0, and some failures due to potentially invalid tests.

     16.      In addition to the foregoing, my group employed tests to determine if additional "java" classes had been added by Microsoft to the "java" class libraries of the commercial release version of IE 4.0. These tests reveal that Microsoft has added "peer" implementation classes to the "java.awt" class library. The list of improperly added "java.awt" peer classes in IE 4.0 is attached hereto as Exhibit C.

     17.     At no time prior to the date hereof has Microsoft informed Sun that the commercial version of IE 4.0 fails to pass any compatibility test in the JCK 1.1a test suite other than the three tests described in paragraph 14 above. In particular, Microsoft has never advised Sun that IE 4.0 fails to pass the JCK 1.1a "SignatureTest", any of the 343 required RMI tests, or any of the 239 required JNI tests.

     18.     At or about the end of October 1997, Microsoft released for retail distribution a commercial version of IE 4.0 packaged on a CD-ROM. True and correct copies of the box in which the retail version of the IE 4.0 CD-ROM is currently packaged and sold at Fry's Electronics in Palo Alto, California, and the cardboard sleeve in which the IE 4.0 CD-ROM is contained within the box, are attached as Exhibit D.

     19.     On November 7, 1997 I directed a group of Sun engineers in performing the JCK 1.1a "SignatureTest" on the commercial version of IE 4.0 contained on the CD-ROM packaged within the box and sleeve attached as Exhibit D. The binary code contained on the CD-ROM version of IE 4.0 is labelled IE 4.0 version number 4.71.1712.6 and bears the date 9/18/97; the "java" class files are labeled 4.79.2252 and bear the date 9/12/97. The binary code contained on the CD-ROM version of IE 4.0 commercially distributed by Microsoft appears to be identical to the binary code contained in the version downloaded from the Microsoft Website on September 30, 1997.

     20.     The CD-ROM version of IE 4.0 fails to pass the JCK 1.1a compatibility test suite for each of the same reasons that the September 30, 1997 downloaded version of IE 4.0 fails to pass the JCK 1.1a test suite. In particular, the set of public APIs for the "java" class libraries implemented in Microsoft's CD-ROM version of IE 4.0 have been modified by Microsoft to add various classes to the "java" class hierarchy, and to add and delete various methods and fields in the "java" classes. These non-conforming modifications were not previously disclosed to Sun by Microsoft, yet fail to pass the JCK 1.1a "SignatureTest". A list of the 901 non-conforming changes, additions and deletions detected by the JCK 1.1a "SignatureTest" in the CD-ROM version of Microsoft's IE 4.0 is attached hereto as Exhibit E. In addition, the CD-ROM version of IE 4.0 fails to include RMI or JNI, and for that reason fails each of the 582 JCK 1.1a compatibility tests relating to these features. Finally, the CD-ROM version of IE 4.0 fails both of the two class initialization tests that the September 30, 1997 downloaded version of IE 4.0 also failed.

     21.     On or about November 4, 1997 I became aware that Microsoft had recently posted a notice on its Website that a new and "updated" version of the "java" virtual machine and class libraries for IE 4.0 was available for electronic downloading from the Microsoft Website. On November 4, 1997 I directed a group of Sun engineers in electronically downloading the "updated" version of the IE 4.0 binary code from the Microsoft Website and in subsequently performing the JCK 1.1a compatibility tests on the upgraded version of IE 4.0. The IE 4.0 binary code downloaded from the Microsoft Website on November 4, 1997 is labeled IE 4.0 version number 4.71.1712.6 and bears the date 9/18/97; the "java" class files are labeled 4.79.2334 and bear the date 10/25/97. Although the "updated" version of IE 4.0 binary code downloaded from the Microsoft Website on November 4, 1997 bears the identical IE 4.0 version number as the binary code downloaded from the Microsoft Website on September 30, 1997, the "java" class libraries and the set of public "java" APIs in the September 30, 1997 downloaded version and the CD-ROM version of IE 4.0 are different than the corresponding set of public "java" APIs in the November 4, 1997 downloaded version of IE 4.0.

     22.     The 10/25/97 "updated" version of IE 4.0, downloaded on November 4, 1997, fails to pass the JCK 1.1a test suite. In particular, the set of public APIs for the "java" class libraries implemented in the 10/25/97 "updated" version of IE 4.0 have been modified by Microsoft to delete various classes to the "java" class hierarchy, and to add and delete various methods and fields in the "java" classes. These non-conforming modifications were not previously disclosed to Sun by Microsoft, and fail to pass the JCK 1.1a "SignatureTest". As shown in Exhibit F attached, the 10/25/97 "updated" version of IE 4.0 fails to correct the overwhelming majority of the non-conforming additions, modifications and deletions Microsoft has made in IE 4.0 to Sun's specified set of public "java" APIs for the JDK 1.1 version of the JAVAÔ technology, and in certain cases makes additional non-conforming changes and additions to Sun's specified of public "java" APIs. A table listing the 895 non-conforming changes, additions and deletions detected by the JCK 1.1a "SignatureTest" in the 10/25/97 "updated" version of the IE 4.0 "java" class files is attached hereto as Exhibit G. In addition, the 10/25/97 "updated" version of IE 4.0 fails to include RMI or JNI, and for that reason fails each of the 582 JCK 1.1a compatibility tests relating to these features. However, unlike the September 30, 1997 downloaded version and the CD-ROM version of IE 4.0, the 10/25/97 "updated" version of IE 4.0 passes both of the two class initialization tests that the CD-ROM version fails.

     23.     I have personally supervised Sun's compatibility testing of the first commercial version of Microsoft's Software Development Kit for JAVA ("SDKJ") version 2.0 with the JCK 1.1a test suite. On October 7, 1997, I directed a group of Sun engineers in downloading a binary copy of the commercial version of SDKJ 2.0 from the Microsoft Website, and in subsequently performing each of the JCK 1.1a compatibility tests against the downloaded version of Microsoft's commercial release of SDKJ 2.0. The SDKJ 2.0 binary code downloaded from the Microsoft Website on October 7, 1997 is labelled SDKJ 2.0 version number 4.79.2252, and bears the date 9/12/97. The SDKJ binary code (version 4.79.2252) downloaded from the Microsoft Website on October 7, 1997 fails to pass the JCK 1.1a compatibility test suite in at least the following important respects:

          a.     Microsoft's SDKJ fails to pass the JCK 1.1a "SignatureTest". The set of public APIs for the "java" class libraries implemented in Microsoft's SDKJ 2.0 have been modified by Microsoft to delete classes from the "java" class hierarchy, and to add and delete various methods and fields in the "java" classes. These non-conforming modifications were not previously disclosed to Sun by Microsoft and result in 901 errors recorded by the JCK 1.1a "SignatureTest". A table listing the 901 changes, additions and deletions detected by the JCK 1.1a "SignatureTest" in the 4.79.2252 version of the SDKJ 2.0 "java" class files is attached hereto as Exhibit H.

          b.     Microsoft's SDKJ 2.0 does not support the Remote Method Invocation ("RMI"). 792 of the "SignatureTest" errors are attributable to Microsoft's failure to implement Sun's RMI Class Library in SDKJ 2.0. Microsoft's failure to implement RMI resulted in the failure of 343 required JCK 1.1a tests in addition to the "SignatureTest".

          c.     Microsoft's SDKJ 2.0 does not support the JNI. Accordingly, SDKJ 2.0 fails all 239 required JCK 1.1a compatibility tests for JNI.

          d.     Our tests of Microsoft's SDKJ 2.0 also revealed a number of compatibility tests failures that could be attributed to the security scheme in Microsoft's IE 4.0, and some failures due to potentially invalid tests.

          I declare under penalty of perjury under the laws of the United States that the foregoing is true and correct.

          Executed this ___ day of November, 1997.




Exhibit B

Microsoft IE 4.0 API Modifications Reported by "SignatureTest" IE 4.0 version 4.71.1712.6 dated 9/18/97
"java" class files version 4.79.2252 dated 9/12/97

  total awt awt.peer util (I18N classes) lang
deleted methods 4 3 0 0 1
added methods 49 6 19 5 19
added fields 56 2 0 50 4
Total non-RMI modifications
found by signature test
109 11 19 55 24
RMI deleted classes 48 N/A N/A N/A N/A
RMI deleted methods, constructors,
fields
744 N/A N/A N/A N/A
Total modifications reported
by signature test
901

Deleted methods

  1. java.awt.image.ColorModel -- method public void finalize()
  2. java.awt.image.DirectColorModel -- method public void finalize()
  3. java.awt.image.IndexColorModel -- method public void finalize()
  4. java.io.ByteArrayOutputStream -- method public java.lang.String toString(java.lang.String)

Added Methods - AWT

  1. java.awt.EventQueue -- method public void _postEvent(java.awt.AWTEvent)
  2. java.awt.Font -- method public int getNativeData()
  3. java.awt.SystemColor -- method public int getWin32Index()
  4. java.awt.image.DirectColorModel -- method public com.ms.awt.peer.DirectColourModelData getToolkitData()
  5. java.awt.image.IndexColorModel -- method public [I getToolkitData()
  6. java.awt.image.IndexColorModel -- method public boolean getOpaque()

Added fields - AWT

  1. java.awt.Font -- field public transient int java.awt.Font.pData
  2. java.awt.SystemColor -- field public static final java.awt.SystemColor java.awt.SystemColor.appWorkspace

Added methods - AWT peer

    java.
  1. awt.peer.ButtonPeer -- method public abstract java.awt.Rectangle getBounds()
  2. java.awt.peer.CanvasPeer -- method public abstract java.awt.Rectangle getBounds()
  3. java.awt.peer.CheckboxPeer -- method public abstract java.awt.Rectangle getBounds()
  4. java.awt.peer.ChoicePeer -- method public abstract java.awt.Rectangle getBounds()
  5. java.awt.peer.ComponentPeer -- method public abstract java.awt.Rectangle getBounds()
  6. java.awt.peer.ContainerPeer -- method public abstract java.awt.Rectangle getBounds()
  7. java.awt.peer.DialogPeer -- method public abstract java.awt.Rectangle getBounds()
  8. java.awt.peer.FileDialogPeer -- method public abstract java.awt.Rectangle getBounds()
  9. java.awt.peer.FramePeer -- method public abstract java.awt.Rectangle getBounds()
  10. java.awt.peer.LabelPeer -- method public abstract java.awt.Rectangle getBounds()
  11. java.awt.peer.LightweightPeer -- method public abstract java.awt.Rectangle getBounds()
  12. java.awt.peer.ListPeer -- method public abstract java.awt.Rectangle getBounds()
  13. java.awt.peer.PanelPeer -- method public abstract java.awt.Rectangle getBounds()
  14. java.awt.peer.ScrollPanePeer -- method public abstract java.awt.Rectangle getBounds()
  15. java.awt.peer.ScrollbarPeer -- method public abstract java.awt.Rectangle getBounds()
  16. java.awt.peer.TextAreaPeer -- method public abstract java.awt.Rectangle getBounds()
  17. java.awt.peer.TextComponentPeer -- method public abstract java.awt.Rectangle getBounds()
  18. java.awt.peer.TextFieldPeer -- method public abstract java.awt.Rectangle getBounds()
  19. java.awt.peer.WindowPeer -- method public abstract java.awt.Rectangle getBounds()

Added fields - International Classes

  1. java.util.Locale -- field public static final java.util.Locale java.util.Locale.AFRIKAANS
  2. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ALBANIAN
  3. java.util.Locale -- field public static final java.util.Locale java.util.Locale.AUSTRALIA
  4. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BASQUE
  5. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BELGIAN
  6. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BELGIAN_FRENCH
  7. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BRAZILIAN
  8. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BULGARIAN
  9. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BYELORUS
  10. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CATALAN
  11. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CROATIAN
  12. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CZECH
  13. java.util.Locale -- field public static final java.util.Locale java.util.Locale.DANISH
  14. java.util.Locale -- field public static final java.util.Locale java.util.Locale.DUTCH
  15. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ESTONIAN
  16. java.util.Locale -- field public static final java.util.Locale java.util.Locale.FINNISH
  17. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GERMAN_AUSTRIAN
  18. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GERMAN_SWISS
  19. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GREEK
  20. java.util.Locale -- field public static final java.util.Locale java.util.Locale.HEBREW
  21. java.util.Locale -- field public static final java.util.Locale java.util.Locale.HUNGARIAN
  22. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ICELANDIC
  23. java.util.Locale -- field public static final java.util.Locale java.util.Locale.INDONESIAN
  24. java.util.Locale -- field public static final java.util.Locale java.util.Locale.IRELAND
  25. java.util.Locale -- field public static final java.util.Locale java.util.Locale.JAPANESE_VERTICAL
  26. java.util.Locale -- field public static final java.util.Locale java.util.Locale.KOREAN_VERTICAL
  27. java.util.Locale -- field public static final java.util.Locale java.util.Locale.LATVIAN
  28. java.util.Locale -- field public static final java.util.Locale java.util.Locale.LITHUANIAN
  29. java.util.Locale -- field public static final java.util.Locale java.util.Locale.MEXICAN
  30. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NEWZEALAND
  31. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NORWEGIAN
  32. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NORWEGIAN_NYNORSK
  33. java.util.Locale -- field public static final java.util.Locale java.util.Locale.POLISH
  34. java.util.Locale -- field public static final java.util.Locale java.util.Locale.PORTUGESE
  35. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ROMANIAN
  36. java.util.Locale -- field public static final java.util.Locale java.util.Locale.RUSSIAN
  37. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SERBIAN
  38. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SIMPLIFIED_CHINESE_VERTICAL
  39. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SINGAPORE
  40. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SLOVAKIAN
  41. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SLOVENIAN
  42. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SOUTH_AFRICA
  43. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SPANISH
  44. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SPANISH_MODERN
  45. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SWEDISH
  46. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SWISS
  47. java.util.Locale -- field public static final java.util.Locale java.util.Locale.THAI
  48. java.util.Locale -- field public static final java.util.Locale java.util.Locale.TRADITIONAL_CHINESE_VERTICAL
  49. java.util.Locale -- field public static final java.util.Locale java.util.Locale.TURKISH
  50. java.util.Locale -- field public static final java.util.Locale java.util.Locale.UKRANIAN

Added methods - International classes

  1. java.util.Locale -- constructor public java.util.Locale(java.lang.String,java.lang.String,java.lang.String,int,int)
  2. java.util.Locale -- method public [Ljava.util.Locale; getDefaultLocaleList()
  3. java.util.Locale -- method public int getCodePage()
  4. java.util.Locale -- method public int getLCID()
  5. java.util.Locale -- method public static java.util.Locale getLocaleFromLCID(int)

Added Methods - lang

  1. java.lang.Class -- method public [Ljava.lang.reflect.Method; getMethods(int)
  2. java.lang.Class -- method public java.lang.Class getInterface(java.lang.String)
  3. java.lang.Class -- method public java.lang.reflect.Method getDeclaredMethodFromSignature(java.lang.String,java.lang.String)
  4. java.lang.Class -- method public java.lang.reflect.Method getMethodFromSignature(java.lang.String,java.lang.String)
  5. java.lang.Runtime -- method public static com.ms.awt.peer.INativeServices getNativeServices()
  6. java.lang.SecurityManager -- method public void checkFileDialog()
  7. java.lang.SecurityManager -- method public void checkMultimedia()
  8. java.lang.SecurityManager -- method public void checkRegistry(int,java.lang.String)
  9. java.lang.SecurityManager -- method public void checkSystemStreams(int)
  10. java.lang.VerifyError -- interface interface com.ms.security.auditing.ISecurityAuditInfo
  11. java.lang.VerifyError -- method public [Ljava.lang.String; getAuditDetails()
  12. java.lang.VerifyError -- method public int getPC()
  13. java.lang.VerifyError -- method public int getViolationCode()
  14. java.lang.VerifyError -- method public java.lang.String getAuditIdentifier()
  15. java.lang.VerifyError -- method public java.lang.String getClassName()
  16. java.lang.VerifyError -- method public java.lang.String getMethodName()
  17. java.lang.VerifyError -- method public java.lang.String getViolationDescription()
  18. java.lang.reflect.Method -- method public int getParameterCount()
  19. java.lang.reflect.Method -- method public java.lang.String getDescriptor()

Added Fields - lang

  1. java.lang.reflect.Field -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  2. java.lang.reflect.Constructor -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  3. java.lang.reflect.Member -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  4. java.lang.reflect.Method -- field public static final int java.lang.reflect.Member.PUBLIC_DECLAREDAdded protected methods

Deleted Classes

  1. java.rmi.AccessException
  2. java.rmi.AlreadyBoundException
  3. java.rmi.ConnectException
  4. java.rmi.ConnectIOException
  5. java.rmi.MarshalException
  6. java.rmi.Naming
  7. java.rmi.NoSuchObjectException
  8. java.rmi.NotBoundException
  9. java.rmi.RMISecurityException
  10. java.rmi.RMISecurityManager
  11. java.rmi.Remote
  12. java.rmi.RemoteException
  13. java.rmi.ServerError
  14. java.rmi.ServerException
  15. java.rmi.ServerRuntimeException
  16. java.rmi.StubNotFoundException
  17. java.rmi.UnexpectedException
  18. java.rmi.UnknownHostException
  19. java.rmi.UnmarshalException
  20. java.rmi.dgc.DGC
  21. java.rmi.dgc.Lease
  22. java.rmi.dgc.VMID
  23. java.rmi.registry.LocateRegistry
  24. java.rmi.registry.Registry
  25. java.rmi.registry.RegistryHandler
  26. java.rmi.server.ExportException
  27. java.rmi.server.LoaderHandler
  28. java.rmi.server.LogStream
  29. java.rmi.server.ObjID
  30. java.rmi.server.Operation
  31. java.rmi.server.RMIClassLoader
  32. java.rmi.server.RMIFailureHandler
  33. java.rmi.server.RMISocketFactory
  34. java.rmi.server.RemoteCall
  35. java.rmi.server.RemoteObject
  36. java.rmi.server.RemoteRef
  37. java.rmi.server.RemoteServer
  38. java.rmi.server.RemoteStub
  39. java.rmi.server.ServerCloneException
  40. java.rmi.server.ServerNotActiveException
  41. java.rmi.server.ServerRef
  42. java.rmi.server.Skeleton
  43. java.rmi.server.SkeletonMismatchException
  44. java.rmi.server.SkeletonNotFoundException
  45. java.rmi.server.SocketSecurityException
  46. java.rmi.server.UID
  47. java.rmi.server.UnicastRemoteObject
  48. java.rmi.server.Unreferenced

Exhibit C

Added public classes to IE 4.0 version 4.71.1712.6 dated 9/12/97
All classes were added in the java.awt package

    java.awt.WButtonPeer
    java.awt.WCheckboxMenuItemPeer
    java.awt.WCheckboxPeer
    java.awt.WChoicePeer
    java.awt.WLabelPeer
    java.awt.WListPeer
    java.awt.WMenuBarPeer
    java.awt.WMenuItemPeer
    java.awt.WMenuPeer
    java.awt.WPopupMenuPeer
    java.awt.WScrollPanePeer
    java.awt.WScrollbarPeer
    java.awt.WTextAreaPeer
    java.awt.WTextComponentPeer
    java.awt.WTextFieldPeer
    java.awt.WUIPeer

Exhibit D


Exhibit E

Microsoft SDK for Java 2.0 API Modifications Reported by "SignatureTest"
"java" class files version 4.79.2252 dated 9/12/97

  total awt awt.peer util (I18N classes) lang
deleted methods 4 3 0 0 1
added methods 49 6 19 5 19
added fields 56 2 0 50 4
Total non-RMI modifications
found by signature test
109 11 19 55 24
RMI deleted classes 48 N/A N/A N/A N/A
RMI deleted methods, constructors,
fields
744 N/A N/A N/A N/A
Total modifications reported
by signature test
901

Deleted methods

  1. java.awt.image.ColorModel -- method public void finalize()
  2. java.awt.image.DirectColorModel -- method public void finalize()
  3. java.awt.image.IndexColorModel -- method public void finalize()
  4. java.io.ByteArrayOutputStream -- method public java.lang.String toString(java.lang.String)

Added Methods - AWT

  1. java.awt.EventQueue -- method public void _postEvent(java.awt.AWTEvent)
  2. java.awt.Font -- method public int getNativeData()
  3. java.awt.SystemColor -- method public int getWin32Index()
  4. java.awt.image.DirectColorModel -- method public com.ms.awt.peer.DirectColourModelData getToolkitData()
  5. java.awt.image.IndexColorModel -- method public [I getToolkitData()
  6. java.awt.image.IndexColorModel -- method public boolean getOpaque()

Added fields - AWT

  1. java.awt.Font -- field public transient int java.awt.Font.pData
  2. java.awt.SystemColor -- field public static final java.awt.SystemColor java.awt.SystemColor.appWorkspace

Added methods - AWT peer

    java.
  1. awt.peer.ButtonPeer -- method public abstract java.awt.Rectangle getBounds()
  2. java.awt.peer.CanvasPeer -- method public abstract java.awt.Rectangle getBounds()
  3. java.awt.peer.CheckboxPeer -- method public abstract java.awt.Rectangle getBounds()
  4. java.awt.peer.ChoicePeer -- method public abstract java.awt.Rectangle getBounds()
  5. java.awt.peer.ComponentPeer -- method public abstract java.awt.Rectangle getBounds()
  6. java.awt.peer.ContainerPeer -- method public abstract java.awt.Rectangle getBounds()
  7. java.awt.peer.DialogPeer -- method public abstract java.awt.Rectangle getBounds()
  8. java.awt.peer.FileDialogPeer -- method public abstract java.awt.Rectangle getBounds()
  9. java.awt.peer.FramePeer -- method public abstract java.awt.Rectangle getBounds()
  10. java.awt.peer.LabelPeer -- method public abstract java.awt.Rectangle getBounds()
  11. java.awt.peer.LightweightPeer -- method public abstract java.awt.Rectangle getBounds()
  12. java.awt.peer.ListPeer -- method public abstract java.awt.Rectangle getBounds()
  13. java.awt.peer.PanelPeer -- method public abstract java.awt.Rectangle getBounds()
  14. java.awt.peer.ScrollPanePeer -- method public abstract java.awt.Rectangle getBounds()
  15. java.awt.peer.ScrollbarPeer -- method public abstract java.awt.Rectangle getBounds()
  16. java.awt.peer.TextAreaPeer -- method public abstract java.awt.Rectangle getBounds()
  17. java.awt.peer.TextComponentPeer -- method public abstract java.awt.Rectangle getBounds()
  18. java.awt.peer.TextFieldPeer -- method public abstract java.awt.Rectangle getBounds()
  19. java.awt.peer.WindowPeer -- method public abstract java.awt.Rectangle getBounds()

Added fields - International Classes

  1. java.util.Locale -- field public static final java.util.Locale java.util.Locale.AFRIKAANS
  2. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ALBANIAN
  3. java.util.Locale -- field public static final java.util.Locale java.util.Locale.AUSTRALIA
  4. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BASQUE
  5. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BELGIAN
  6. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BELGIAN_FRENCH
  7. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BRAZILIAN
  8. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BULGARIAN
  9. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BYELORUS
  10. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CATALAN
  11. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CROATIAN
  12. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CZECH
  13. java.util.Locale -- field public static final java.util.Locale java.util.Locale.DANISH
  14. java.util.Locale -- field public static final java.util.Locale java.util.Locale.DUTCH
  15. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ESTONIAN
  16. java.util.Locale -- field public static final java.util.Locale java.util.Locale.FINNISH
  17. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GERMAN_AUSTRIAN
  18. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GERMAN_SWISS
  19. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GREEK
  20. java.util.Locale -- field public static final java.util.Locale java.util.Locale.HEBREW
  21. java.util.Locale -- field public static final java.util.Locale java.util.Locale.HUNGARIAN
  22. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ICELANDIC
  23. java.util.Locale -- field public static final java.util.Locale java.util.Locale.INDONESIAN
  24. java.util.Locale -- field public static final java.util.Locale java.util.Locale.IRELAND
  25. java.util.Locale -- field public static final java.util.Locale java.util.Locale.JAPANESE_VERTICAL
  26. java.util.Locale -- field public static final java.util.Locale java.util.Locale.KOREAN_VERTICAL
  27. java.util.Locale -- field public static final java.util.Locale java.util.Locale.LATVIAN
  28. java.util.Locale -- field public static final java.util.Locale java.util.Locale.LITHUANIAN
  29. java.util.Locale -- field public static final java.util.Locale java.util.Locale.MEXICAN
  30. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NEWZEALAND
  31. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NORWEGIAN
  32. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NORWEGIAN_NYNORSK
  33. java.util.Locale -- field public static final java.util.Locale java.util.Locale.POLISH
  34. java.util.Locale -- field public static final java.util.Locale java.util.Locale.PORTUGESE
  35. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ROMANIAN
  36. java.util.Locale -- field public static final java.util.Locale java.util.Locale.RUSSIAN
  37. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SERBIAN
  38. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SIMPLIFIED_CHINESE_VERTICAL
  39. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SINGAPORE
  40. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SLOVAKIAN
  41. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SLOVENIAN
  42. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SOUTH_AFRICA
  43. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SPANISH
  44. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SPANISH_MODERN
  45. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SWEDISH
  46. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SWISS
  47. java.util.Locale -- field public static final java.util.Locale java.util.Locale.THAI
  48. java.util.Locale -- field public static final java.util.Locale java.util.Locale.TRADITIONAL_CHINESE_VERTICAL
  49. java.util.Locale -- field public static final java.util.Locale java.util.Locale.TURKISH
  50. java.util.Locale -- field public static final java.util.Locale java.util.Locale.UKRANIAN

Added methods - International classes

  1. java.util.Locale -- constructor public java.util.Locale(java.lang.String,java.lang.String,java.lang.String,int,int)
  2. java.util.Locale -- method public [Ljava.util.Locale; getDefaultLocaleList()
  3. java.util.Locale -- method public int getCodePage()
  4. java.util.Locale -- method public int getLCID()
  5. java.util.Locale -- method public static java.util.Locale getLocaleFromLCID(int)

Added Methods - lang

  1. java.lang.Class -- method public [Ljava.lang.reflect.Method; getMethods(int)
  2. java.lang.Class -- method public java.lang.Class getInterface(java.lang.String)
  3. java.lang.Class -- method public java.lang.reflect.Method getDeclaredMethodFromSignature(java.lang.String,java.lang.String)
  4. java.lang.Class -- method public java.lang.reflect.Method getMethodFromSignature(java.lang.String,java.lang.String)
  5. java.lang.Runtime -- method public static com.ms.awt.peer.INativeServices getNativeServices()
  6. java.lang.SecurityManager -- method public void checkFileDialog()
  7. java.lang.SecurityManager -- method public void checkMultimedia()
  8. java.lang.SecurityManager -- method public void checkRegistry(int,java.lang.String)
  9. java.lang.SecurityManager -- method public void checkSystemStreams(int)
  10. java.lang.VerifyError -- interface interface com.ms.security.auditing.ISecurityAuditInfo
  11. java.lang.VerifyError -- method public [Ljava.lang.String; getAuditDetails()
  12. java.lang.VerifyError -- method public int getPC()
  13. java.lang.VerifyError -- method public int getViolationCode()
  14. java.lang.VerifyError -- method public java.lang.String getAuditIdentifier()
  15. java.lang.VerifyError -- method public java.lang.String getClassName()
  16. java.lang.VerifyError -- method public java.lang.String getMethodName()
  17. java.lang.VerifyError -- method public java.lang.String getViolationDescription()
  18. java.lang.reflect.Method -- method public int getParameterCount()
  19. java.lang.reflect.Method -- method public java.lang.String getDescriptor()

Added Fields - lang

  1. java.lang.reflect.Field -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  2. java.lang.reflect.Constructor -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  3. java.lang.reflect.Member -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  4. java.lang.reflect.Method -- field public static final int java.lang.reflect.Member.PUBLIC_DECLAREDAdded protected methods

Deleted Classes

  1. java.rmi.AccessException
  2. java.rmi.AlreadyBoundException
  3. java.rmi.ConnectException
  4. java.rmi.ConnectIOException
  5. java.rmi.MarshalException
  6. java.rmi.Naming
  7. java.rmi.NoSuchObjectException
  8. java.rmi.NotBoundException
  9. java.rmi.RMISecurityException
  10. java.rmi.RMISecurityManager
  11. java.rmi.Remote
  12. java.rmi.RemoteException
  13. java.rmi.ServerError
  14. java.rmi.ServerException
  15. java.rmi.ServerRuntimeException
  16. java.rmi.StubNotFoundException
  17. java.rmi.UnexpectedException
  18. java.rmi.UnknownHostException
  19. java.rmi.UnmarshalException
  20. java.rmi.dgc.DGC
  21. java.rmi.dgc.Lease
  22. java.rmi.dgc.VMID
  23. java.rmi.registry.LocateRegistry
  24. java.rmi.registry.Registry
  25. java.rmi.registry.RegistryHandler
  26. java.rmi.server.ExportException
  27. java.rmi.server.LoaderHandler
  28. java.rmi.server.LogStream
  29. java.rmi.server.ObjID
  30. java.rmi.server.Operation
  31. java.rmi.server.RMIClassLoader
  32. java.rmi.server.RMIFailureHandler
  33. java.rmi.server.RMISocketFactory
  34. java.rmi.server.RemoteCall
  35. java.rmi.server.RemoteObject
  36. java.rmi.server.RemoteRef
  37. java.rmi.server.RemoteServer
  38. java.rmi.server.RemoteStub
  39. java.rmi.server.ServerCloneException
  40. java.rmi.server.ServerNotActiveException
  41. java.rmi.server.ServerRef
  42. java.rmi.server.Skeleton
  43. java.rmi.server.SkeletonMismatchException
  44. java.rmi.server.SkeletonNotFoundException
  45. java.rmi.server.SocketSecurityException
  46. java.rmi.server.UID
  47. java.rmi.server.UnicastRemoteObject
  48. java.rmi.server.Unreferenced

Exhibit G

Microsoft IE 4.0 API Modifications Reported by "SignatureTest"
IE 4.0 with Java VM update version 4.71.1712.6 dated 9/12/97
"java" class files version 4.79.2334 dated 10/25/97

  total awt awt.peer util (I18N classes) lang
deleted methods 9 3 0 6 0
added methods 40 6 19 5 10
added fields 54 0 0 50 4
Total non-RMI modifications
found by signature test
103 9 19 61 14
RMI deleted classes 48 N/A N/A N/A N/A
RMI deleted methods, constructors,
fields
744 N/A N/A N/A N/A
Total modifications reported
by signature test
895
Deleted methods

  1. java.awt.image.ColorModel -- method public void finalize()
  2. java.awt.image.DirectColorModel -- method public void finalize()
  3. java.awt.image.IndexColorModel -- method public void finalize()
  4. java.util.PropertyResourceBundle -- method public final java.awt.MenuBar getMenuBar(java.lang.string)
  5. java.util.PropertyResourceBundle -- method public final java.awt.Menu getMenu(java.lang.string)
  6. java.util.ResourceBundle -- method public final java.awt.MenuBar getMenuBar(java.lang.string)
  7. java.util.ResourceBundle -- method public final java.awt.Menu getMenu(java.lang.string)
  8. java.util.ListResourceBundle -- method public final java.awt.MenuBar getMenuBar(java.lang.string)
  9. java.util.ListResourceBundle -- method public final java.awt.Menu getMenu(java.lang.string)
Note: Methods number 4 -9 were removed by JavaSoft in the JDK 1.1.1 release. The removal of these methods is a correct API change, and would not be reported as errors by the JCK 1.1.1a and later "SignatureTest".

Added Methods - AWT

  1. java.awt.Font -- method public int getNativeData()
  2. java.awt.Font -- method public int setNativeData()
  3. java.awt.SystemColor -- method public int getWin32Index()
  4. java.awt.image.DirectColorModel -- method public com.ms.awt.peer.DirectColourModelData getToolkitData()
  5. java.awt.image.IndexColorModel -- method public [I getToolkitData()
  6. java.awt.image.IndexColorModel -- method public boolean getOpaque()
Added fields - AWT

none

Added methods - AWT peer

  1. java.awt.peer.ButtonPeer -- method public abstract java.awt.Rectangle getBounds()
  2. java.awt.peer.CanvasPeer -- method public abstract java.awt.Rectangle getBounds()
  3. java.awt.peer.CheckboxPeer -- method public abstract java.awt.Rectangle getBounds()
  4. java.awt.peer.ChoicePeer -- method public abstract java.awt.Rectangle getBounds()
  5. java.awt.peer.ComponentPeer -- method public abstract java.awt.Rectangle getBounds()
  6. java.awt.peer.ContainerPeer -- method public abstract java.awt.Rectangle getBounds()
  7. java.awt.peer.DialogPeer -- method public abstract java.awt.Rectangle getBounds()
  8. java.awt.peer.FileDialogPeer -- method public abstract java.awt.Rectangle getBounds()
  9. java.awt.peer.FramePeer -- method public abstract java.awt.Rectangle getBounds()
  10. java.awt.peer.LabelPeer -- method public abstract java.awt.Rectangle getBounds()
  11. java.awt.peer.LightweightPeer -- method public abstract java.awt.Rectangle getBounds()
  12. java.awt.peer.ListPeer -- method public abstract java.awt.Rectangle getBounds()
  13. java.awt.peer.PanelPeer -- method public abstract java.awt.Rectangle getBounds()
  14. java.awt.peer.ScrollPanePeer -- method public abstract java.awt.Rectangle getBounds()
  15. java.awt.peer.ScrollbarPeer -- method public abstract java.awt.Rectangle getBounds()
  16. java.awt.peer.TextAreaPeer -- method public abstract java.awt.Rectangle getBounds()
  17. java.awt.peer.TextComponentPeer -- method public abstract java.awt.Rectangle getBounds()
  18. java.awt.peer.TextFieldPeer -- method public abstract java.awt.Rectangle getBounds()
  19. java.awt.peer.WindowPeer -- method public abstract java.awt.Rectangle getBounds()
Added fields - International Classes
  1. java.util.Locale -- field public static final java.util.Locale java.util.Locale.AFRIKAANS
  2. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ALBANIAN
  3. java.util.Locale -- field public static final java.util.Locale java.util.Locale.AUSTRALIA
  4. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BASQUE
  5. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BELGIAN
  6. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BELGIAN_FRENCH
  7. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BRAZILIAN
  8. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BULGARIAN
  9. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BYELORUS
  10. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CATALAN
  11. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CROATIAN
  12. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CZECH
  13. java.util.Locale -- field public static final java.util.Locale java.util.Locale.DANISH
  14. java.util.Locale -- field public static final java.util.Locale java.util.Locale.DUTCH
  15. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ESTONIAN
  16. java.util.Locale -- field public static final java.util.Locale java.util.Locale.FINNISH
  17. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GERMAN_AUSTRIAN
  18. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GERMAN_SWISS
  19. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GREEK
  20. java.util.Locale -- field public static final java.util.Locale java.util.Locale.HEBREW
  21. java.util.Locale -- field public static final java.util.Locale java.util.Locale.HUNGARIAN
  22. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ICELANDIC
  23. java.util.Locale -- field public static final java.util.Locale java.util.Locale.INDONESIAN
  24. java.util.Locale -- field public static final java.util.Locale java.util.Locale.IRELAND
  25. java.util.Locale -- field public static final java.util.Locale java.util.Locale.JAPANESE_VERTICAL
  26. java.util.Locale -- field public static final java.util.Locale java.util.Locale.KOREAN_VERTICAL
  27. java.util.Locale -- field public static final java.util.Locale java.util.Locale.LATVIAN
  28. java.util.Locale -- field public static final java.util.Locale java.util.Locale.LITHUANIAN
  29. java.util.Locale -- field public static final java.util.Locale java.util.Locale.MEXICAN
  30. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NEWZEALAND
  31. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NORWEGIAN
  32. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NORWEGIAN_NYNORSK
  33. java.util.Locale -- field public static final java.util.Locale java.util.Locale.POLISH
  34. java.util.Locale -- field public static final java.util.Locale java.util.Locale.PORTUGESE
  35. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ROMANIAN
  36. java.util.Locale -- field public static final java.util.Locale java.util.Locale.RUSSIAN
  37. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SERBIAN
  38. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SIMPLIFIED_CHINESE_VERTICAL
  39. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SINGAPORE
  40. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SLOVAKIAN
  41. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SLOVENIAN
  42. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SOUTH_AFRICA
  43. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SPANISH
  44. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SPANISH_MODERN
  45. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SWEDISH
  46. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SWISS
  47. java.util.Locale -- field public static final java.util.Locale java.util.Locale.THAI
  48. java.util.Locale -- field public static final java.util.Locale java.util.Locale.TRADITIONAL_CHINESE_VERTICAL
  49. java.util.Locale -- field public static final java.util.Locale java.util.Locale.TURKISH
  50. java.util.Locale -- field public static final java.util.Locale java.util.Locale.UKRANIAN
Added methods - International classes
  1. java.util.Locale -- constructor public java.util.Locale(java.lang.String,java.lang.String,java.lang.String,int,int)
  2. java.util.Locale -- method public [Ljava.util.Locale; getDefaultLocaleList()
  3. java.util.Locale -- method public int getCodePage()
  4. java.util.Locale -- method public int getLCID()
  5. java.util.Locale -- method public static java.util.Locale getLocaleFromLCID(int)
Added Methods - lang
  1. java.lang.Class -- method public [Ljava.lang.reflect.Method; getMethods(int)
  2. java.lang.Class -- method public java.lang.reflect.Method getDeclaredMethodFromSignature(java.lang.String,java.lang.String)
  3. java.lang.Class -- method public java.lang.reflect.Method getMethodFromSignature(java.lang.String,java.lang.String)
  4. java.lang.Runtime -- method public static com.ms.awt.peer.INativeServices getNativeServices()
  5. java.lang.SecurityManager -- method public void checkFileDialog()
  6. java.lang.SecurityManager -- method public void checkMultimedia()
  7. java.lang.SecurityManager -- method public void checkRegistry(int,java.lang.String)
  8. java.lang.SecurityManager -- method public void checkSystemStreams(int)
  9. java.lang.reflect.Method -- method public int getParameterCount()
  10. java.lang.reflect.Method -- method public java.lang.String getDescriptor()
Added Fields - lang
  1. java.lang.reflect.Field -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  2. java.lang.reflect.Constructor -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  3. java.lang.reflect.Member -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  4. java.lang.reflect.Method -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
Deleted Classes
  1. java.rmi.AccessException
  2. java.rmi.AlreadyBoundException
  3. java.rmi.ConnectException
  4. java.rmi.ConnectIOException
  5. java.rmi.MarshalException
  6. java.rmi.Naming
  7. java.rmi.NoSuchObjectException
  8. java.rmi.NotBoundException
  9. java.rmi.RMISecurityException
  10. java.rmi.RMISecurityManager
  11. java.rmi.Remote
  12. java.rmi.RemoteException
  13. java.rmi.ServerError
  14. java.rmi.ServerException
  15. java.rmi.ServerRuntimeException
  16. java.rmi.StubNotFoundException
  17. java.rmi.UnexpectedException
  18. java.rmi.UnknownHostException
  19. java.rmi.UnmarshalException
  20. java.rmi.dgc.DGC
  21. java.rmi.dgc.Lease
  22. java.rmi.dgc.VMID
  23. java.rmi.registry.LocateRegistry
  24. java.rmi.registry.Registry
  25. java.rmi.registry.RegistryHandler
  26. java.rmi.server.ExportException
  27. java.rmi.server.LoaderHandler
  28. java.rmi.server.LogStream
  29. java.rmi.server.ObjID
  30. java.rmi.server.Operation
  31. java.rmi.server.RMIClassLoader
  32. java.rmi.server.RMIFailureHandler
  33. java.rmi.server.RMISocketFactory
  34. java.rmi.server.RemoteCall
  35. java.rmi.server.RemoteObject
  36. java.rmi.server.RemoteRef
  37. java.rmi.server.RemoteServer
  38. java.rmi.server.RemoteStub
  39. java.rmi.server.ServerCloneException
  40. java.rmi.server.ServerNotActiveException
  41. java.rmi.server.ServerRef
  42. java.rmi.server.Skeleton
  43. java.rmi.server.SkeletonMismatchException
  44. java.rmi.server.SkeletonNotFoundException
  45. java.rmi.server.SocketSecurityException
  46. java.rmi.server.UID
  47. java.rmi.server.UnicastRemoteObject
  48. java.rmi.server.Unreferenced

Exhibit H

Microsoft SDK for Java 2.0 API Modifications Reported by "SignatureTest"
"java" class files version 4.79.2252 dated 9/12/97

  total awt awt.peer util (I18N classes) lang
deleted methods 4 3 0 0 1
added methods 49 6 19 5 19
added fields 56 2 0 50 4
Total non-RMI modifications
found by signature test
109 11 19 55 24
RMI deleted classes 48 N/A N/A N/A N/A
RMI deleted methods, constructors,
fields
744 N/A N/A N/A N/A
Total modifications reported
by signature test
901

Deleted methods

  1. java.awt.image.ColorModel -- method public void finalize()
  2. java.awt.image.DirectColorModel -- method public void finalize()
  3. java.awt.image.IndexColorModel -- method public void finalize()
  4. java.io.ByteArrayOutputStream -- method public java.lang.String toString(java.lang.String)

Added Methods - AWT

  1. java.awt.EventQueue -- method public void _postEvent(java.awt.AWTEvent)
  2. java.awt.Font -- method public int getNativeData()
  3. java.awt.SystemColor -- method public int getWin32Index()
  4. java.awt.image.DirectColorModel -- method public com.ms.awt.peer.DirectColourModelData getToolkitData()
  5. java.awt.image.IndexColorModel -- method public [I getToolkitData()
  6. java.awt.image.IndexColorModel -- method public boolean getOpaque()

Added fields - AWT

  1. java.awt.Font -- field public transient int java.awt.Font.pData
  2. java.awt.SystemColor -- field public static final java.awt.SystemColor java.awt.SystemColor.appWorkspace

Added methods - AWT peer

    java.
  1. awt.peer.ButtonPeer -- method public abstract java.awt.Rectangle getBounds()
  2. java.awt.peer.CanvasPeer -- method public abstract java.awt.Rectangle getBounds()
  3. java.awt.peer.CheckboxPeer -- method public abstract java.awt.Rectangle getBounds()
  4. java.awt.peer.ChoicePeer -- method public abstract java.awt.Rectangle getBounds()
  5. java.awt.peer.ComponentPeer -- method public abstract java.awt.Rectangle getBounds()
  6. java.awt.peer.ContainerPeer -- method public abstract java.awt.Rectangle getBounds()
  7. java.awt.peer.DialogPeer -- method public abstract java.awt.Rectangle getBounds()
  8. java.awt.peer.FileDialogPeer -- method public abstract java.awt.Rectangle getBounds()
  9. java.awt.peer.FramePeer -- method public abstract java.awt.Rectangle getBounds()
  10. java.awt.peer.LabelPeer -- method public abstract java.awt.Rectangle getBounds()
  11. java.awt.peer.LightweightPeer -- method public abstract java.awt.Rectangle getBounds()
  12. java.awt.peer.ListPeer -- method public abstract java.awt.Rectangle getBounds()
  13. java.awt.peer.PanelPeer -- method public abstract java.awt.Rectangle getBounds()
  14. java.awt.peer.ScrollPanePeer -- method public abstract java.awt.Rectangle getBounds()
  15. java.awt.peer.ScrollbarPeer -- method public abstract java.awt.Rectangle getBounds()
  16. java.awt.peer.TextAreaPeer -- method public abstract java.awt.Rectangle getBounds()
  17. java.awt.peer.TextComponentPeer -- method public abstract java.awt.Rectangle getBounds()
  18. java.awt.peer.TextFieldPeer -- method public abstract java.awt.Rectangle getBounds()
  19. java.awt.peer.WindowPeer -- method public abstract java.awt.Rectangle getBounds()

Added fields - International Classes

  1. java.util.Locale -- field public static final java.util.Locale java.util.Locale.AFRIKAANS
  2. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ALBANIAN
  3. java.util.Locale -- field public static final java.util.Locale java.util.Locale.AUSTRALIA
  4. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BASQUE
  5. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BELGIAN
  6. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BELGIAN_FRENCH
  7. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BRAZILIAN
  8. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BULGARIAN
  9. java.util.Locale -- field public static final java.util.Locale java.util.Locale.BYELORUS
  10. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CATALAN
  11. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CROATIAN
  12. java.util.Locale -- field public static final java.util.Locale java.util.Locale.CZECH
  13. java.util.Locale -- field public static final java.util.Locale java.util.Locale.DANISH
  14. java.util.Locale -- field public static final java.util.Locale java.util.Locale.DUTCH
  15. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ESTONIAN
  16. java.util.Locale -- field public static final java.util.Locale java.util.Locale.FINNISH
  17. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GERMAN_AUSTRIAN
  18. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GERMAN_SWISS
  19. java.util.Locale -- field public static final java.util.Locale java.util.Locale.GREEK
  20. java.util.Locale -- field public static final java.util.Locale java.util.Locale.HEBREW
  21. java.util.Locale -- field public static final java.util.Locale java.util.Locale.HUNGARIAN
  22. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ICELANDIC
  23. java.util.Locale -- field public static final java.util.Locale java.util.Locale.INDONESIAN
  24. java.util.Locale -- field public static final java.util.Locale java.util.Locale.IRELAND
  25. java.util.Locale -- field public static final java.util.Locale java.util.Locale.JAPANESE_VERTICAL
  26. java.util.Locale -- field public static final java.util.Locale java.util.Locale.KOREAN_VERTICAL
  27. java.util.Locale -- field public static final java.util.Locale java.util.Locale.LATVIAN
  28. java.util.Locale -- field public static final java.util.Locale java.util.Locale.LITHUANIAN
  29. java.util.Locale -- field public static final java.util.Locale java.util.Locale.MEXICAN
  30. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NEWZEALAND
  31. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NORWEGIAN
  32. java.util.Locale -- field public static final java.util.Locale java.util.Locale.NORWEGIAN_NYNORSK
  33. java.util.Locale -- field public static final java.util.Locale java.util.Locale.POLISH
  34. java.util.Locale -- field public static final java.util.Locale java.util.Locale.PORTUGESE
  35. java.util.Locale -- field public static final java.util.Locale java.util.Locale.ROMANIAN
  36. java.util.Locale -- field public static final java.util.Locale java.util.Locale.RUSSIAN
  37. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SERBIAN
  38. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SIMPLIFIED_CHINESE_VERTICAL
  39. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SINGAPORE
  40. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SLOVAKIAN
  41. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SLOVENIAN
  42. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SOUTH_AFRICA
  43. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SPANISH
  44. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SPANISH_MODERN
  45. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SWEDISH
  46. java.util.Locale -- field public static final java.util.Locale java.util.Locale.SWISS
  47. java.util.Locale -- field public static final java.util.Locale java.util.Locale.THAI
  48. java.util.Locale -- field public static final java.util.Locale java.util.Locale.TRADITIONAL_CHINESE_VERTICAL
  49. java.util.Locale -- field public static final java.util.Locale java.util.Locale.TURKISH
  50. java.util.Locale -- field public static final java.util.Locale java.util.Locale.UKRANIAN

Added methods - International classes

  1. java.util.Locale -- constructor public java.util.Locale(java.lang.String,java.lang.String,java.lang.String,int,int)
  2. java.util.Locale -- method public [Ljava.util.Locale; getDefaultLocaleList()
  3. java.util.Locale -- method public int getCodePage()
  4. java.util.Locale -- method public int getLCID()
  5. java.util.Locale -- method public static java.util.Locale getLocaleFromLCID(int)

Added Methods - lang

  1. java.lang.Class -- method public [Ljava.lang.reflect.Method; getMethods(int)
  2. java.lang.Class -- method public java.lang.Class getInterface(java.lang.String)
  3. java.lang.Class -- method public java.lang.reflect.Method getDeclaredMethodFromSignature(java.lang.String,java.lang.String)
  4. java.lang.Class -- method public java.lang.reflect.Method getMethodFromSignature(java.lang.String,java.lang.String)
  5. java.lang.Runtime -- method public static com.ms.awt.peer.INativeServices getNativeServices()
  6. java.lang.SecurityManager -- method public void checkFileDialog()
  7. java.lang.SecurityManager -- method public void checkMultimedia()
  8. java.lang.SecurityManager -- method public void checkRegistry(int,java.lang.String)
  9. java.lang.SecurityManager -- method public void checkSystemStreams(int)
  10. java.lang.VerifyError -- interface interface com.ms.security.auditing.ISecurityAuditInfo
  11. java.lang.VerifyError -- method public [Ljava.lang.String; getAuditDetails()
  12. java.lang.VerifyError -- method public int getPC()
  13. java.lang.VerifyError -- method public int getViolationCode()
  14. java.lang.VerifyError -- method public java.lang.String getAuditIdentifier()
  15. java.lang.VerifyError -- method public java.lang.String getClassName()
  16. java.lang.VerifyError -- method public java.lang.String getMethodName()
  17. java.lang.VerifyError -- method public java.lang.String getViolationDescription()
  18. java.lang.reflect.Method -- method public int getParameterCount()
  19. java.lang.reflect.Method -- method public java.lang.String getDescriptor()

Added Fields - lang

  1. java.lang.reflect.Field -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  2. java.lang.reflect.Constructor -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  3. java.lang.reflect.Member -- field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
  4. java.lang.reflect.Method -- field public static final int java.lang.reflect.Member.PUBLIC_DECLAREDAdded protected methods

Deleted Classes

  1. java.rmi.AccessException
  2. java.rmi.AlreadyBoundException
  3. java.rmi.ConnectException
  4. java.rmi.ConnectIOException
  5. java.rmi.MarshalException
  6. java.rmi.Naming
  7. java.rmi.NoSuchObjectException
  8. java.rmi.NotBoundException
  9. java.rmi.RMISecurityException
  10. java.rmi.RMISecurityManager
  11. java.rmi.Remote
  12. java.rmi.RemoteException
  13. java.rmi.ServerError
  14. java.rmi.ServerException
  15. java.rmi.ServerRuntimeException
  16. java.rmi.StubNotFoundException
  17. java.rmi.UnexpectedException
  18. java.rmi.UnknownHostException
  19. java.rmi.UnmarshalException
  20. java.rmi.dgc.DGC
  21. java.rmi.dgc.Lease
  22. java.rmi.dgc.VMID
  23. java.rmi.registry.LocateRegistry
  24. java.rmi.registry.Registry
  25. java.rmi.registry.RegistryHandler
  26. java.rmi.server.ExportException
  27. java.rmi.server.LoaderHandler
  28. java.rmi.server.LogStream
  29. java.rmi.server.ObjID
  30. java.rmi.server.Operation
  31. java.rmi.server.RMIClassLoader
  32. java.rmi.server.RMIFailureHandler
  33. java.rmi.server.RMISocketFactory
  34. java.rmi.server.RemoteCall
  35. java.rmi.server.RemoteObject
  36. java.rmi.server.RemoteRef
  37. java.rmi.server.RemoteServer
  38. java.rmi.server.RemoteStub
  39. java.rmi.server.ServerCloneException
  40. java.rmi.server.ServerNotActiveException
  41. java.rmi.server.ServerRef
  42. java.rmi.server.Skeleton
  43. java.rmi.server.SkeletonMismatchException
  44. java.rmi.server.SkeletonNotFoundException
  45. java.rmi.server.SocketSecurityException
  46. java.rmi.server.UID
  47. java.rmi.server.UnicastRemoteObject
  48. java.rmi.server.Unreferenced