Declaration_of_L._Peter_Deutsch_in_Support_of Sun_Microsystems_Motion_for_Preliminary_Injunction_February_27th_1998.
 

Declaration of L. Peter Deutsch in Support of Sun Microsystems, Inc.'s
Motion for a Preliminary Injunction
Legal document filed with the court on February 27th, 1998.
 

Declaration of L. Peter Deutsch in Support of Sun Microsystems, Inc.'s Motion for a Preliminary Injunction

No. C 97-20884 RMW (PVT) ENE

Declaration of L. Peter Deutsch in Support of Sun Microsystems, Inc.'s Motion for a Preliminary Injunction

Declaration of L. Peter Deutsch in Support of Sun Microsystems 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,


MICROSOFT CORPORATION,
a Washington corporation,


   Defendant.
)
)
)
)
)
)
)
)
)
)
)
No. C 97-20884 RMW (PVT) ENE

Declaration of L. Peter Deutsch in Support of Sun Microsystems, Inc.'s Motion for a Preliminary Injunction

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


 

I, L. Peter Deutsch, declare:

     1.     I have personal knowledge of the facts contained in this declaration and, if called as a witness, I could and would competently testify to them.

     2.     I have been retained by Cooley Godward LLP to oversee and conduct the independent application of the JAVATM compatibility tests contained in Sun's JAVATM Compatibility Kit ("JCK") test suite to the commercially available versions of Microsoft's Internet Explorer ("IE") version 4.0 browser and Software Development Kit for JAVA ("SDKJ") version 2.0, and to offer my opinion on the results of that testing.

Personal Background and Qualifications

     3.     I received a Bachelor of Science degree from the University of California, Berkeley in 1969 with a major in Mathematics. I received a Ph.D in Computer Science from the University of California, Berkeley in 1973.

     4.     From late 1964 to 1969 I was employed by the University of California (Project Genie), where I was one of the principal architects and implementors of a time-sharing operating system.

     5.     From 1968 to 1970 I was one of 8 principals at Berkeley Computer Corporation, where I contributed a substantial part of the design and implementation of a system programming language.

     6.     From 1971 to 1979, I was employed at the Xerox PARC Computer Science Laboratory, where I held a series of increasingly responsible positions, attaining the position of Principal Scientist. I was a principal designer and implementor of an interactive programming environment for the LISP language (the Interlisp system), and an initiator and contributor of a project to develop an interactive programming environment based on an in-house system implementation language, called Mesa. As part of my work on Interlisp, I initiated and assisted in the development of a platform-independent specification for the Interlisp Virtual Machine.

     7.     From 1980 to 1983, I was a Principal Scientist in a group at Xerox PARC that was successively known as the Learning Research Group, Software Concepts Group, and System Concepts Laboratory. During this time, I developed new techniques for implementing the Smalltalk-80 language (a platform-independent, object-oriented programming language) on conventional microprocessors, and implemented this language with its class libraries and development environment, by means of a virtual machine, on the Motorola MC68000 microcomputer family.

     8.     From 1984 to 1986, I was a Research Fellow in the same group at Xerox PARC. During this time, I designed and implemented a new framework for interactive applications built with the Smalltalk-80 environment. I also advised several organizations within Xerox on technical strategy relating to programming languages and environments, and workstation hardware.

     9.     From 1986 to 1991, I was Chief Scientist at ParcPlace Systems. My principal technical responsibility was the conception and design of a platform-independent implementation of the Smalltalk-80 Virtual Machine, and the design and implementation of a platform-independent, just-in-time compiler as part of this virtual machine implementation. In 1987, I participated in an informal multi-vendor group that drafted proposed specifications for the Smalltalk-80 language and virtual machine; I wrote the first drafts of several specifications, including the language specification.

     10.     From 1991 to 1993, I was employed by Sun Microsystems, Inc. ("Sun") as a Sun Fellow. I participated in a wide variety of corporate-level activities relating to software and system strategy. I also designed and implemented a first draft of a platform-independent just-in-time compiler for the Clarity C++ language, an internal system programming language with many similarities to the JAVATM programming language. During this time, I became generally familiar with Sun's "Green" and "Oak", early predecessors of the JAVATM programming environment, and discussed the design of the language and its implementation from time to time with James Gosling and other members of the development group.

     11.     From 1993 to the present, I have been an independent consultant and business owner, doing business as Aladdin Enterprises. Starting in 1988, and continuing in my association with Aladdin, I have become intimately familiar with the specification of the PostScriptTM language, a platform-independent graphics language, published by Adobe Systems. I have produced an interpreter for the PostScriptTM language that passes an extremely demanding set of conformance tests (the Genoa tests). I am one of very few non-Adobe employees who has been asked by Adobe to serve as a pre-publication reviewer of the technical content of Adobe's specifications for the PostScriptTM language.

     12.     In or about early 1995, I was asked by Sun to review in detail the drafts of the JAVATM Language Specification. I reviewed a draft of the JAVATM Language Specification and the specification for the "java.lang" class libraries.

Sun's JCK 1.1a JAVATM Compatibility Test Suite

     13.     On or about October 29, 1997 I was retained by Cooley Godward LLP, counsel for Sun in this action, to act as a consultant. Subsequently, I agreed to oversee the independent application of Sun's JCK1.1a compatibility test suite for the JAVATM technology (the "JCK1.1a test suite") to Microsoft's Internet Explorer 4.0 and Microsoft's Software Development Kit for JAVA 2.0 by KeyLabs, an independent software test house in Provo, Utah, to independently conduct such testing myself on the CD-ROM version of Microsoft's IE 4.0, and to determine whether Microsoft's products pass Sun's JCK1.1a test suite.

     14.     In order to carry out this assignment, I have personally reviewed the documentation of Sun's JAVATM Compatibility Kit ("JCK") 1.1a and the suite of compatibility tests it contains. I have personally examined the source code for "SignatureTest", which is one of the tests contained in Sun's JCK 1.1a test suite. I have met personally with Sun's Manager of Compatibility Testing, Carla Schroer, and with certain members of her staff to review the design and development procedures employed by Sun to produce the compatibility tests contained in the JCK 1.1a test suite.

     15.     In order to preserve my independence and objectivity, I have refrained from examining or inquiring about any test result obtained by Sun prior to my review of the compatibility test results independently obtained by KeyLabs.

     16.     The JCK 1.1a compatibility test suite includes over 8,000 separate and distinct tests designed to test the conformance of a particular product or system implementation of the JAVATM technology with Sun's set of published specifications, including the public application programming interfaces (APIs), for the JDK 1.1 version of the JAVATM technology.

     17.     In order to achieve the goal of cross-platform compatibility among the various system and product implementations of the JAVATM technology, such that programs once written and compiled may run on any platform that incorporates the JAVATM technology, Sun's published specifications for the JAVATM technology require, among other things, a standard set of "public" APIs, each of which begins with the name "java." A "public" application programming interface is one which, by definition, must be present in each implementation of the specification, such that anyone may rely upon its presence in each separate implementation of the specification. The public "java" APIs comprise a standard, specified set of "class" declarations and a standard, specified set of "interface" declarations. A "class" declaration combines a specified, structured set of data with a specified set of operations for inspecting and manipulating that data. An "interface" declaration specifies a set of methods by which an instance of a class may interact with other instances of the class or other specified classes. Maintaining the integrity of the specified set of public "java" class declarations and the specified set of public "java" interface declarations is essential to the achievement of cross-platform compatibility among different system or product implementations of the JAVATM technology.

     18.     Among the tests included in the JCK 1.1a test suite is a test called "SignatureTest." The purpose of "SignatureTest" is to verify that the set of public API elements in the "java" class and interface declarations of the product or system implementation being tested conforms to the specified set of public "java" API elements for the JAVATM Class Libraries. "SignatureTest" checks for the presence of all specified public "java" API elements and verifies that certain elements have not been added to the set of public "java" API elements specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology. "SignatureTest" checks for the presence of packages, class declarations in their proper package, and interface declarations in their proper package. In addition, for each "java" class declaration, "SignatureTest" checks for the presence of the declared attributes of the class; the names and types of all public members (methods and fields) of the class, including signatures; the class, if any, which the given class extends; and the interfaces, if any, which the given class implements. "SignatureTest" also verifies that certain attributes have not been added to the specified set of attributes for each public "java" class declaration. For each public "java" interface declaration, "SignatureTest" checks for the presence of the declared attributes of the interface, the names and types of all public members (methods and fields) of the interface, including signatures; and the interfaces, if any, which the given interface extends. "SignatureTest" also verifies that certain non-conforming attributes are not present in any public "java" interface declaration.

     19.     Among the compatibility tests included in the JCK 1.1a test suite, the "SignatureTest" is a particularly important and significant test. Any addition, deletion or modification to the public elements of the specified set of "java" APIs can significantly impair the ability to achieve cross-platform compatible implementations of the JAVATM technology. For example, if a product implements non-conforming elements in a public "java" interface or class declaration in addition to the specified elements, programs developed to invoke or utilize the added but unspecified elements will not perform as intended on any implementation that conforms to the published specification. Alternatively, if a product omits to implement specified elements in a public "java" interface or class declaration, programs developed to invoke or utilize the specified elements will not perform as intended on the non-conforming implementation. Similarly, if a product implements each specified interface, class and class member, but alters or modifies their properties or the relationships between them, programs developed to invoke or utilize the specified elements will not perform as intended on the non-conforming implementation.

     20.     By checking the public "java" API elements of the product or system implementation being tested for conformity with the specified set of public "java" API elements, "SignatureTest" is designed to determine whether the implementation being tested implements the same specified set of public "java" class and interface declarations as each other compatible implementation of the JAVATM technology. In other words, "SignatureTest" is designed to maintain the integrity of the specified set of public "java" APIs comprising the JAVATM programming environment, which is necessary in order to achieve platform-independent implementations of the JAVATM technology.

     21.     On November 13, 1997, I reviewed a printed copy of what I understand to be the source code of "SignatureTest" as contained in the JCK 1.1a test suite. I reviewed this code for the purpose of determining whether it contained any dependencies on specific platforms or implementations of the JAVATM technology. In my opinion, the source code that I reviewed does not contain platform or implementation dependencies that affect the test results presented here.

     The JCK 1.1a Compatibility Test Results for Microsoft's IE 4.0 and SDKJ 2.0

     22.     On November 7, 1997 I visited KeyLabs, an independent software testing house in Provo, Utah, where I met with Grant Sumsion, a software engineer employed by KeyLabs, and Allen Hankinson. In the course of the meeting, Mr. Hankinson and I inquired about the test facilities of KeyLabs and explained to Mr. Sumsion the procedures and environment within which he should use Sun's JCK 1.1a test suite to test the conformance of Microsoft's IE 4.0 and SDKJ 2.0 product implementations with Sun's published specifications for the JAVATM technology.

     23.     I have reviewed the November 15, 1997 declaration of C. Grant Sumsion as well as an electronic copy of the test results he obtained in running the JCK 1.1a "SignatureTest" on Microsoft's IE 4.0 and SDKJ 2.0.

     24.     Based on my review and examination of the results of the compatibility tests performed under my direction by KeyLabs, as well as the compatibility test results I personally obtained by applying the JCK1.1a "SignatureTest" to the CD-ROM version of Microsoft's IE 4.0, I conclude that Microsoft's IE 4.0 and SDKJ 2.0 fail to pass Sun's JCK 1.1a test suite.

     25.     The IE 4.0 binary code downloaded by Mr. Sumsion from the Microsoft Website on October 21, 1997 (IE 4.0 version number 4.71.1712.6, dated 9/18/97, containing "java" class files version number 4.79.2252, dated 9/12/97) fails to pass the JCK 1.1a "SignatureTest" in each of the following respects:

          a.     Microsoft has added to the set of public "java" APIs of IE 4.0 certain class members, including certain methods and fields, that fail to conform to the set of "java" class declarations specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

          b.     Microsoft has deleted from the set of public "java" APIs of IE 4.0 certain "java" class declarations specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

          c.     Microsoft has deleted from the "java" class declarations of the public "java" APIs implemented in IE 4.0 certain class members specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

A report listing the non-conforming changes, additions and deletions detected by the JCK 1.1a "SignatureTest" in the version of Microsoft's IE 4.0 downloaded by KeyLabs on October 21 (IE 4.0 version number 4.71.1712.6, dated 9/18/97, containing "java" class files version number 4.79.2252, dated 9/12/97) is attached hereto as Exhibit A.

     26.     The IE 4.0 binary code contained on the CD-ROM version of IE 4.0 tested by Mr. Sumsion (IE 4.0 version number 4.71.1712.6, dated 9/18/97, containing "java" class files version number 4.79.2252, dated 9/12/97) fails to pass the JCK 1.1a "SignatureTest" in each of the following respects:

          a.     Microsoft has added to the set of public "java" APIs of IE 4.0 certain class members, including certain methods and fields, that fail to conform to the set of "java" class declarations specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

          b.     Microsoft has deleted from the set of public "java" APIs of IE 4.0 certain "java" class declarations specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

          c.     Microsoft has deleted from the "java" class declarations of the public "java" APIs implemented in IE 4.0 certain class members specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

A report listing the non-conforming changes, additions and deletions detected by the JCK 1.1a "SignatureTest" in the CD-ROM version of Microsoft's IE 4.0 (IE 4.0 version number 4.71.1712.6, dated 9/18/97, containing "java" class files version number 4.79.2252, dated 9/12/97) is attached hereto as Exhibit B.

     27.     The "updated" IE 4.0 binary code downloaded by Mr. Sumsion from the Microsoft Website on November 10, 1997 (IE 4.0 version number 4.71.1712.6, dated 9/18/97, containing "java" class files version number 4.79.2334, dated 10/25/97) fails to pass the JCK 1.1a "SignatureTest" in each of the following respects:

          a.     Microsoft has added to the set of public "java" APIs of IE 4.0 certain class members, including certain methods and fields, that fail to conform to the set of "java" class declarations specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

          b.     Microsoft has deleted from the set of public "java" APIs of IE 4.0 certain "java" class declarations specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

          c.     Microsoft has deleted from the "java" class declarations of the public "java" APIs implemented in IE 4.0 certain class members specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

A report listing the non-conforming changes, additions and deletions detected by the JCK 1.1a "SignatureTest" in the November 10 downloaded version of Microsoft's IE 4.0 (IE 4.0 version number 4.71.1712.6, dated 9/18/97, containing "java" class files version number 4.79.2334, dated 10/25/97) is attached hereto as Exhibit C.

     28.     On November 6, 1997 I obtained an electronic copy of the JCK 1.1a compatibility test suite from Carla Schroer of Sun. On November 12, 1997 I personally purchased a copy of Microsoft's CD-ROM version of IE 4.0 from Egghead Software in Menlo Park, California. A true and correct copy of the box containing the IE 4.0 CD-ROM purchased by me, as well as the sleeve inside the box within which the CD-ROM was packaged, are attached hereto as Exhibit D.

     29.     On November 14, 1997 I personally performed the JCK 1.1a "SignatureTest" on the binary code version of IE 4.0 contained on the CD-ROM purchased by me (containing "java" class libraries version number 4.79.2245, dated 9/7/97). The IE 4.0 binary code contained on the CD-ROM version of IE 4.0 fails to pass the JCK 1.1a "SignatureTest" in each of the following respects:

          a.     Microsoft has added to the set of public "java" APIs of IE 4.0 certain class members, including certain methods and fields, that fail to conform to the set of "java" class declarations specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

          b.     Microsoft has deleted from the set of public "java" APIs of IE 4.0 certain "java" class declarations specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

          c.     Microsoft has deleted from the "java" class declarations of the public "java" APIs implemented in IE 4.0 certain class members specified in Sun's published specification for the JDK 1.1 version of the JAVATM technology.

A report generated by me of the "SignatureTest" results I obtained from the CD-ROM version of IE 4.0 (containing "java" class libraries version number 4.79.2245, dated 9/7/97) is attached hereto as Exhibit E.

     30.     After I had reviewed the test results obtained by KeyLabs, I reviewed the JCK 1.1a test results obtained by Sun and attached to the November 16, 1997 declaration of Carla Schroer. The "SignatureTest" results obtained by Sun for Microsoft's IE 4.0 and SDKJ 2.0 as reflected in Ms. Schroer's declaration are identical to the results independently obtained by Mr. Sumsion and me in the testing we performed on IE 4.0 and SDKJ 2.0. In each instance, Microsoft's IE 4.0 failed to pass "SignatureTest," and in each instance the same version of IE 4.0 produced the same number and nature of errors. Based on my review and comparison of the results independently obtained by Mr. Sumsion, Ms. Schroer and me, I conclude that Microsoft's IE 4.0 and SDKJ 2.0 fail to pass Sun's JCK 1.1a test suite, and fail to conform to Sun's published specifications for the JDK 1.1 version of the JAVATM technology.

     31.     I have reviewed a recent article authored by John Zukowski in the November 1997 issue of JavaWorld magazine, entitled "How to Avoid Potential Pitfalls of Microsoft's Non-Standard SDK for Java." Mr. Zukowski reports the result of his independent comparison of the "java" class files that come with Microsoft's SDKJ 2.0 (and IE 4.0 which shares the same class files as SDKJ 2.0) with the class files in Sun's JDK 1.1.4 version of the JAVATM technology. Significantly, Mr. Zukowski's independent review of the "java" class files contained in Microsoft's SDKJ 2.0 reveals virtually the same changes, additions and deletions as are detected by the "SignatureTest" results obtained by KeyLabs, Ms. Schroer and me. A true and correct copy of Mr. Zukowski's November 1997 article is attached hereto as Exhibit F.

     32.     The JCK 1.1a "SignatureTest" results for Microsoft's IE 4.0 and SDKJ 2.0 reveal that the "java" class libraries contained in the commercially distributed versions of IE 4.0 and SDKJ 2.0 deviate in important ways from the specified set of public APIs for the JAVATM Class Libraries contained in Sun's published specifications for the JDK 1.1 version of the JAVATM technology. In particular, by adding certain "java" classes, methods and fields to the set of public "java" APIs contained in Sun's published specification for the JDK 1.1, Microsoft's IE 4.0 and SDKJ implement Sun's JAVATM technology in a manner that renders programs that use or reference Microsoft's non-conforming API additions inoperable as intended on any other product implementation that passes Sun's JCK 1.1a test suite.

     33.     In my opinion, the changes made to the "java" class libraries in Microsoft's commercially available versions of IE 4.0 and SDKJ 2.0 render Microsoft's product implementations of Sun's JAVATM technology platform-dependent and incompatible with any other product that incorporates the JDK 1.1 technology in a manner that passes the JCK 1.1a test suite.

     34.     As a consequence of the changes made by Microsoft to the set of public "java" APIs of IE 4.0 and SDKJ 2.0, computer programs developed using the classes, methods or fields added by Microsoft to the "java" class libraries of IE 4.0 or SDKJ 2.0 will fail to operate as intended on any other product that incorporates Sun's JDK 1.1 version of the JAVATM technology in a manner that passes the JCK 1.1a test suite.

     35.     For example, the JAVATM Class Libraries contain a subpackage called "java.awt.image". The "java.awt.image" subpackage defines platform-independent APIs for bitmap graphics, which constitute an important element of the JAVATM technology's platform-independence. In Microsoft's IE 4.0 implementation of the java.awt.image.IndexColorModel class, the non-conforming public method getOpaque() has been added. Consequently, programs written to invoke this non-conforming method will not run on other product implementations of the JAVATM Class Libraries that conform to Sun's specifications. If an applet that uses this non-conforming method in the course of creating a screen display is downloaded from the Web, it will run on Microsoft's IE 4.0, but not on any other browser that conforms to Sun's specifications for the JAVATM technology.

     36.     In certain instances, the nature of the non-conforming methods and fields that have been added by Microsoft to the "java" class libraries of IE 4.0 and SDKJ 2.0 render programs developed using such non-conforming methods and fields dependent on Microsoft's Win32 system platform, such that programs which invoke those non-conforming methods or fields will operate only on Microsoft's Win32 system platforms and no other system platform, irrespective of whether any other product incorporates the same non-conforming additions and changes. For example, the JAVATM Class Libraries contain a package called "java.util". In Microsoft's IE 4.0 implementation of the java.util.Locale class, the non-conforming method "getCodePage()" has been added. "Code pages" are a method of managing the character sets of different national languages that is unique to Microsoft's MS-DOS and Windows operating systems. Apple's Macintosh operating system and Unix-based systems use entirely different means for dealing with this issue. If an applet that uses this non-conforming method in the course of creating a screen display is downloaded from the Web, it will only run on MS-DOS or Windows-based systems running Microsoft's IE 4.0, and not on any other operating system, irrespective of whether that system is running IE 4.0.

     37.     Conversely, Microsoft's deletion of specified classes and methods similarly breaks the cross-platform compatibility among products incorporating Sun's JDK 1.1 version of the JAVATM technology by rendering programs developed using the deleted classes and methods inoperable on Microsoft's IE 4.0 and SDKJ 2.0.

     38.     The JCK 1.1a compatibility tests which Microsoft's IE 4.0 and SDKJ 2.0 fail to pass are valid and important tests of the conformance of Microsoft's product implementations with the JAVATM Class Libraries and the JAVATM Runtime Environment as specified in Sun's published specifications and public set of application programming interfaces for the JDK 1.1 version of the JAVATM technology.

     39.     In my experience, throughout the 33 years I have worked in the software industry, it is a well-accepted custom and practice within the industry, and one commonly understood by professional software engineers, that an implementor of a proprietary standard, such as the JAVATM programming environment, who chooses to enhance or add to the set of APIs specified by the standard in its particular implementation of the standard, does so only in a manner that clearly identifies the non-standard elements of the implementation in a way that readily distinguishes them from the specified elements of the standard. This custom and practice exists within the industry so that software developers who write programs for the standard environment are informed of any non-standard elements that have been added by an implementor, and may therefore consciously choose whether to incorporate or use such non-standard elements in the programs they develop. In my opinion, Microsoft's implementations of IE 4.0 and SDKJ 2.0 fail to identify in any obvious or meaningful way the manner in which the "java" class libraries of IE 4.0 or SDKJ deviate from Sun's published specifications for the JDK 1.1 version of the JAVATM technology, such that software developers and others are likely to mistake the non-conforming elements of Microsoft's IE 4.0 and SDKJ "java" class libraries as standard elements of Sun's JAVATM Class Libraries.

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.

 

L. Peter Deutsch

 

 

 

 

Exhibit A

-- Summary of JavaTest report
../1jckstuff/signature_tests/work-ie40_fcs_sig/SignatureTest.jtr
-- File ie40fcs.txt created at Sun Nov 16 16:35:34 PST 1997

#Test Results
#Mon Nov 10 19:53:25 GMT+00:00 1997
name=SignatureTest
harnessVersion=JT_1.0
execStatus=Failed. 901 errors
id=SignatureTest
title=API Signature verification
testsuite=http://207.49.11.35/tests/testsuite.html
end=Mon Nov 10 19:53:25 GMT+00:00 1997
start=Mon Nov 10 19:49:30 GMT+00:00 1997
executeClass=javasoft.sqe.tests.api.SignatureTest
description=http://207.49.11.35/tests/api/SignatureTest.html#SignatureTest
file=http://207.49.11.35/tests/api/SignatureTest.html
environment=jck-interpreter-sameJVM
executeArgs=-TestURL $testURL -FileName jdk-1_1.sig
work=http://207.49.11.35/work-ie40_fcs_sig/api/
keywords=compile execute positive coreAPI
sections=executeWithVerifier
status=Failed. 901 errors
source=SignatureTest.java

test: http://207.49.11.35/tests/api/SignatureTest.html#SignatureTest
running script javasoft.sqe.harness.StdExecTestScript -verify
call: javasoft.sqe.harness.LocalExecuteCommand -loadDir -verify
javasoft.sqe.tests.api.SignatureTest -TestURL
http://207.49.11.35/tests/api/SignatureTest.html#SignatureTest -FileName
jdk-1_1.sig
command result: Failed. 901 errors
----------ref:executeWithVerifier(0/0)----------
----------log:executeWithVerifier(1754/104383)----------
test result: Failed. 901 errors
----------------------------------------------------------------
Specified classes not found:
    java.rmi.AccessException
    java.rmi.AlreadyBoundException
    java.rmi.ConnectException
    java.rmi.ConnectIOException
    java.rmi.MarshalException
    java.rmi.Naming
    java.rmi.NoSuchObjectException
    java.rmi.NotBoundException
    java.rmi.RMISecurityException
    java.rmi.RMISecurityManager
    java.rmi.Remote
    java.rmi.RemoteException
    java.rmi.ServerError
    java.rmi.ServerException
    java.rmi.ServerRuntimeException
    java.rmi.StubNotFoundException
    java.rmi.UnexpectedException
    java.rmi.UnknownHostException
    java.rmi.UnmarshalException
    java.rmi.dgc.DGC
    java.rmi.dgc.Lease
    java.rmi.dgc.VMID
    java.rmi.registry.LocateRegistry
    java.rmi.registry.Registry
    java.rmi.registry.RegistryHandler
    java.rmi.server.ExportException
    java.rmi.server.LoaderHandler
    java.rmi.server.LogStream
    java.rmi.server.ObjID
    java.rmi.server.Operation
    java.rmi.server.RMIClassLoader
    java.rmi.server.RMIFailureHandler
    java.rmi.server.RMISocketFactory
    java.rmi.server.RemoteCall
    java.rmi.server.RemoteObject
    java.rmi.server.RemoteRef
    java.rmi.server.RemoteServer
    java.rmi.server.RemoteStub
    java.rmi.server.ServerCloneException
    java.rmi.server.ServerNotActiveException
    java.rmi.server.ServerRef
    java.rmi.server.Skeleton
    java.rmi.server.SkeletonMismatchException
    java.rmi.server.SkeletonNotFoundException
    java.rmi.server.SocketSecurityException
    java.rmi.server.UID
    java.rmi.server.UnicastRemoteObject
    java.rmi.server.Unreferenced
----------------------------------------------------------------
Specified elements not found:
    java.awt.image.ColorModel
        method public void finalize()
    java.awt.image.DirectColorModel
        method public void finalize()
    java.awt.image.IndexColorModel
        method public void finalize()
    java.io.ByteArrayOutputStream
        method public java.lang.String toString(java.lang.String)
----------------------------------------------------------------
Non-conforming elements found:
    java.awt.EventQueue
        method public void _postEvent(java.awt.AWTEvent)
    java.awt.Font
        field public transient int java.awt.Font.pData
        method public int getNativeData()
    java.awt.SystemColor
        field public static final java.awt.SystemColor
java.awt.SystemColor.appWorkspace
        method public int getWin32Index()
    java.awt.image.DirectColorModel
        method public com.ms.awt.peer.DirectColourModelData getToolkitData()
    java.awt.image.IndexColorModel
        method public [I getToolkitData()
        method public boolean getOpaque()
    java.awt.peer.ButtonPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.CanvasPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.CheckboxPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ChoicePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ComponentPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ContainerPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.DialogPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.FileDialogPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.FramePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.LabelPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.LightweightPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ListPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.PanelPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ScrollPanePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ScrollbarPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextAreaPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextComponentPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextFieldPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.WindowPeer
        method public abstract java.awt.Rectangle getBounds()
    java.lang.Class
        method public [Ljava.lang.reflect.Method; getMethods(int)
        method public java.lang.Class getInterface(java.lang.String)
        method public java.lang.reflect.Method
getDeclaredMethodFromSignature(java.lang.String,java.lang.String)
        method public java.lang.reflect.Method
getMethodFromSignature(java.lang.String,java.lang.String)
    java.lang.Runtime
        method public static com.ms.awt.peer.INativeServices getNativeServices()
    java.lang.SecurityManager
        method public void checkFileDialog()
        method public void checkMultimedia()
        method public void checkRegistry(int,java.lang.String)
        method public void checkSystemStreams(int)
    java.lang.VerifyError
        interface interface com.ms.security.auditing.ISecurityAuditInfo
        method public [Ljava.lang.String; getAuditDetails()
        method public int getPC()
        method public int getViolationCode()
        method public java.lang.String getAuditIdentifier()
        method public java.lang.String getClassName()
        method public java.lang.String getMethodName()
        method public java.lang.String getViolationDescription()
    java.lang.reflect.Constructor
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Field
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Member
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Method
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
        method public int getParameterCount()
        method public java.lang.String getDescriptor()
    java.util.Locale
        constructor public
java.util.Locale(java.lang.String,java.lang.String,java.lang.String,int,int)
        field public static final java.util.Locale java.util.Locale.AFRIKAANS
        field public static final java.util.Locale java.util.Locale.ALBANIAN
        field public static final java.util.Locale java.util.Locale.AUSTRALIA
        field public static final java.util.Locale java.util.Locale.BASQUE
        field public static final java.util.Locale java.util.Locale.BELGIAN
        field public static final java.util.Locale
java.util.Locale.BELGIAN_FRENCH
        field public static final java.util.Locale java.util.Locale.BRAZILIAN
        field public static final java.util.Locale java.util.Locale.BULGARIAN
        field public static final java.util.Locale java.util.Locale.BYELORUS
        field public static final java.util.Locale java.util.Locale.CATALAN
        field public static final java.util.Locale java.util.Locale.CROATIAN
        field public static final java.util.Locale java.util.Locale.CZECH
        field public static final java.util.Locale java.util.Locale.DANISH
        field public static final java.util.Locale java.util.Locale.DUTCH
        field public static final java.util.Locale java.util.Locale.ESTONIAN
        field public static final java.util.Locale java.util.Locale.FINNISH
        field public static final java.util.Locale
java.util.Locale.GERMAN_AUSTRIAN
        field public static final java.util.Locale java.util.Locale.GERMAN_SWISS
        field public static final java.util.Locale java.util.Locale.GREEK
        field public static final java.util.Locale java.util.Locale.HEBREW
        field public static final java.util.Locale java.util.Locale.HUNGARIAN
        field public static final java.util.Locale java.util.Locale.ICELANDIC
        field public static final java.util.Locale java.util.Locale.INDONESIAN
        field public static final java.util.Locale java.util.Locale.IRELAND
        field public static final java.util.Locale
java.util.Locale.JAPANESE_VERTICAL
        field public static final java.util.Locale
java.util.Locale.KOREAN_VERTICAL
        field public static final java.util.Locale java.util.Locale.LATVIAN
        field public static final java.util.Locale java.util.Locale.LITHUANIAN
        field public static final java.util.Locale java.util.Locale.MEXICAN
        field public static final java.util.Locale java.util.Locale.NEWZEALAND
        field public static final java.util.Locale java.util.Locale.NORWEGIAN
        field public static final java.util.Locale
java.util.Locale.NORWEGIAN_NYNORSK
        field public static final java.util.Locale java.util.Locale.POLISH
        field public static final java.util.Locale java.util.Locale.PORTUGESE
        field public static final java.util.Locale java.util.Locale.ROMANIAN
        field public static final java.util.Locale java.util.Locale.RUSSIAN
        field public static final java.util.Locale java.util.Locale.SERBIAN
        field public static final java.util.Locale
java.util.Locale.SIMPLIFIED_CHINESE_VERTICAL
        field public static final java.util.Locale java.util.Locale.SINGAPORE
        field public static final java.util.Locale java.util.Locale.SLOVAKIAN
        field public static final java.util.Locale java.util.Locale.SLOVENIAN
        field public static final java.util.Locale java.util.Locale.SOUTH_AFRICA
        field public static final java.util.Locale java.util.Locale.SPANISH
        field public static final java.util.Locale
java.util.Locale.SPANISH_MODERN
        field public static final java.util.Locale java.util.Locale.SWEDISH
        field public static final java.util.Locale java.util.Locale.SWISS
        field public static final java.util.Locale java.util.Locale.THAI
        field public static final java.util.Locale
java.util.Locale.TRADITIONAL_CHINESE_VERTICAL
        field public static final java.util.Locale java.util.Locale.TURKISH
        field public static final java.util.Locale java.util.Locale.UKRANIAN
        method public [Ljava.util.Locale; getDefaultLocaleList()
        method public int getCodePage()
        method public int getLCID()
        method public static java.util.Locale getLocaleFromLCID(int)
----------------------------------------------------------------
End of summary.

Exhibit B

-- Summary of JavaTest report
../1jckstuff/signature_tests/work-ie40_box_sig/SignatureTest.jtr
-- File ie40box.txt created at Sun Nov 16 16:35:14 PST 1997

#Test Results
#Tue Nov 11 08:38:58 CST 1997
name=SignatureTest
harnessVersion=JT_1.0
execStatus=Failed. 901 errors
id=SignatureTest
title=API Signature verification
testsuite=http://10.100.100.102/tests/testsuite.html
end=Tue Nov 11 08:38:58 CST 1997
start=Tue Nov 11 08:36:41 CST 1997
executeClass=javasoft.sqe.tests.api.SignatureTest
description=http://10.100.100.102/tests/api/SignatureTest.html#SignatureTest
file=http://10.100.100.102/tests/api/SignatureTest.html
environment=jck-interpreter-sameJVM
executeArgs=-TestURL $testURL -FileName jdk-1_1.sig
work=http://10.100.100.102/work-ie40_sig/api/
keywords=compile execute positive coreAPI
sections=executeWithVerifier
status=Failed. 901 errors
source=SignatureTest.java

test: http://10.100.100.102/tests/api/SignatureTest.html#SignatureTest
running script javasoft.sqe.harness.StdExecTestScript -verify
call: javasoft.sqe.harness.LocalExecuteCommand -verify
javasoft.sqe.tests.api.SignatureTest -TestURL
http://10.100.100.102/tests/api/SignatureTest.html#SignatureTest -FileName
jdk-1_1.sig
command result: Failed. 901 errors
----------ref:executeWithVerifier(0/0)----------
----------log:executeWithVerifier(1755/104449)----------
WARNING: -verify switch currently ignored by LocalExecuteCommand
test result: Failed. 901 errors
----------------------------------------------------------------
Specified classes not found:
    java.rmi.AccessException
    java.rmi.AlreadyBoundException
    java.rmi.ConnectException
    java.rmi.ConnectIOException
    java.rmi.MarshalException
    java.rmi.Naming
    java.rmi.NoSuchObjectException
    java.rmi.NotBoundException
    java.rmi.RMISecurityException
    java.rmi.RMISecurityManager
    java.rmi.Remote
    java.rmi.RemoteException
    java.rmi.ServerError
    java.rmi.ServerException
    java.rmi.ServerRuntimeException
    java.rmi.StubNotFoundException
    java.rmi.UnexpectedException
    java.rmi.UnknownHostException
    java.rmi.UnmarshalException
    java.rmi.dgc.DGC
    java.rmi.dgc.Lease
    java.rmi.dgc.VMID
    java.rmi.registry.LocateRegistry
    java.rmi.registry.Registry
    java.rmi.registry.RegistryHandler
    java.rmi.server.ExportException
    java.rmi.server.LoaderHandler
    java.rmi.server.LogStream
    java.rmi.server.ObjID
    java.rmi.server.Operation
    java.rmi.server.RMIClassLoader
    java.rmi.server.RMIFailureHandler
    java.rmi.server.RMISocketFactory
    java.rmi.server.RemoteCall
    java.rmi.server.RemoteObject
    java.rmi.server.RemoteRef
    java.rmi.server.RemoteServer
    java.rmi.server.RemoteStub
    java.rmi.server.ServerCloneException
    java.rmi.server.ServerNotActiveException
    java.rmi.server.ServerRef
    java.rmi.server.Skeleton
    java.rmi.server.SkeletonMismatchException
    java.rmi.server.SkeletonNotFoundException
    java.rmi.server.SocketSecurityException
    java.rmi.server.UID
    java.rmi.server.UnicastRemoteObject
    java.rmi.server.Unreferenced
----------------------------------------------------------------
Specified elements not found:
    java.awt.image.ColorModel
        method public void finalize()
    java.awt.image.DirectColorModel
        method public void finalize()
    java.awt.image.IndexColorModel
        method public void finalize()
    java.io.ByteArrayOutputStream
        method public java.lang.String toString(java.lang.String)
----------------------------------------------------------------
Non-conforming elements found:
    java.awt.EventQueue
        method public void _postEvent(java.awt.AWTEvent)
    java.awt.Font
        field public transient int java.awt.Font.pData
        method public int getNativeData()
    java.awt.SystemColor
        field public static final java.awt.SystemColor
java.awt.SystemColor.appWorkspace
        method public int getWin32Index()
    java.awt.image.DirectColorModel
        method public com.ms.awt.peer.DirectColourModelData getToolkitData()
    java.awt.image.IndexColorModel
        method public [I getToolkitData()
        method public boolean getOpaque()
    java.awt.peer.ButtonPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.CanvasPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.CheckboxPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ChoicePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ComponentPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ContainerPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.DialogPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.FileDialogPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.FramePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.LabelPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.LightweightPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ListPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.PanelPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ScrollPanePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ScrollbarPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextAreaPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextComponentPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextFieldPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.WindowPeer
        method public abstract java.awt.Rectangle getBounds()
    java.lang.Class
        method public [Ljava.lang.reflect.Method; getMethods(int)
        method public java.lang.Class getInterface(java.lang.String)
        method public java.lang.reflect.Method
getDeclaredMethodFromSignature(java.lang.String,java.lang.String)
        method public java.lang.reflect.Method
getMethodFromSignature(java.lang.String,java.lang.String)
    java.lang.Runtime
        method public static com.ms.awt.peer.INativeServices getNativeServices()
    java.lang.SecurityManager
        method public void checkFileDialog()
        method public void checkMultimedia()
        method public void checkRegistry(int,java.lang.String)
        method public void checkSystemStreams(int)
    java.lang.VerifyError
        interface interface com.ms.security.auditing.ISecurityAuditInfo
        method public [Ljava.lang.String; getAuditDetails()
        method public int getPC()
        method public int getViolationCode()
        method public java.lang.String getAuditIdentifier()
        method public java.lang.String getClassName()
        method public java.lang.String getMethodName()
        method public java.lang.String getViolationDescription()
    java.lang.reflect.Constructor
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Field
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Member
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Method
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
        method public int getParameterCount()
        method public java.lang.String getDescriptor()
    java.util.Locale
        constructor public
java.util.Locale(java.lang.String,java.lang.String,java.lang.String,int,int)
        field public static final java.util.Locale java.util.Locale.AFRIKAANS
        field public static final java.util.Locale java.util.Locale.ALBANIAN
        field public static final java.util.Locale java.util.Locale.AUSTRALIA
        field public static final java.util.Locale java.util.Locale.BASQUE
        field public static final java.util.Locale java.util.Locale.BELGIAN
        field public static final java.util.Locale
java.util.Locale.BELGIAN_FRENCH
        field public static final java.util.Locale java.util.Locale.BRAZILIAN
        field public static final java.util.Locale java.util.Locale.BULGARIAN
        field public static final java.util.Locale java.util.Locale.BYELORUS
        field public static final java.util.Locale java.util.Locale.CATALAN
        field public static final java.util.Locale java.util.Locale.CROATIAN
        field public static final java.util.Locale java.util.Locale.CZECH
        field public static final java.util.Locale java.util.Locale.DANISH
        field public static final java.util.Locale java.util.Locale.DUTCH
        field public static final java.util.Locale java.util.Locale.ESTONIAN
        field public static final java.util.Locale java.util.Locale.FINNISH
        field public static final java.util.Locale
java.util.Locale.GERMAN_AUSTRIAN
        field public static final java.util.Locale java.util.Locale.GERMAN_SWISS
        field public static final java.util.Locale java.util.Locale.GREEK
        field public static final java.util.Locale java.util.Locale.HEBREW
        field public static final java.util.Locale java.util.Locale.HUNGARIAN
        field public static final java.util.Locale java.util.Locale.ICELANDIC
        field public static final java.util.Locale java.util.Locale.INDONESIAN
        field public static final java.util.Locale java.util.Locale.IRELAND
        field public static final java.util.Locale
java.util.Locale.JAPANESE_VERTICAL
        field public static final java.util.Locale
java.util.Locale.KOREAN_VERTICAL
        field public static final java.util.Locale java.util.Locale.LATVIAN
        field public static final java.util.Locale java.util.Locale.LITHUANIAN
        field public static final java.util.Locale java.util.Locale.MEXICAN
        field public static final java.util.Locale java.util.Locale.NEWZEALAND
        field public static final java.util.Locale java.util.Locale.NORWEGIAN
        field public static final java.util.Locale
java.util.Locale.NORWEGIAN_NYNORSK
        field public static final java.util.Locale java.util.Locale.POLISH
        field public static final java.util.Locale java.util.Locale.PORTUGESE
        field public static final java.util.Locale java.util.Locale.ROMANIAN
        field public static final java.util.Locale java.util.Locale.RUSSIAN
        field public static final java.util.Locale java.util.Locale.SERBIAN
        field public static final java.util.Locale
java.util.Locale.SIMPLIFIED_CHINESE_VERTICAL
        field public static final java.util.Locale java.util.Locale.SINGAPORE
        field public static final java.util.Locale java.util.Locale.SLOVAKIAN
        field public static final java.util.Locale java.util.Locale.SLOVENIAN
        field public static final java.util.Locale java.util.Locale.SOUTH_AFRICA
        field public static final java.util.Locale java.util.Locale.SPANISH
        field public static final java.util.Locale
java.util.Locale.SPANISH_MODERN
        field public static final java.util.Locale java.util.Locale.SWEDISH
        field public static final java.util.Locale java.util.Locale.SWISS
        field public static final java.util.Locale java.util.Locale.THAI
        field public static final java.util.Locale
java.util.Locale.TRADITIONAL_CHINESE_VERTICAL
        field public static final java.util.Locale java.util.Locale.TURKISH
        field public static final java.util.Locale java.util.Locale.UKRANIAN
        method public [Ljava.util.Locale; getDefaultLocaleList()
        method public int getCodePage()
        method public int getLCID()
        method public static java.util.Locale getLocaleFromLCID(int)
----------------------------------------------------------------
End of summary.

Exhibit C

-- Summary of JavaTest report
../1jckstuff/signature_tests/work-ie40_fcs_new_sig/SignatureTest.jtr
-- File ie40nfcs.txt created at Sun Nov 16 16:35:46 PST 1997

#Test Results
#Tue Nov 11 09:05:18 MST 1997
name=SignatureTest
harnessVersion=JT_1.0
execStatus=Failed. 895 errors
id=SignatureTest
title=API Signature verification
testsuite=http://10.100.100.112/tests/testsuite.html
end=Tue Nov 11 09:05:18 MST 1997
start=Tue Nov 11 09:00:46 MST 1997
executeClass=javasoft.sqe.tests.api.SignatureTest
description=http://10.100.100.112/tests/api/SignatureTest.html#SignatureTest
file=http://10.100.100.112/tests/api/SignatureTest.html
environment=jck-interpreter-sameJVM
executeArgs=-TestURL $testURL -FileName jdk-1_1.sig
work=http://10.100.100.112/work-ie40_fcs_new/api/
keywords=compile execute positive coreAPI
sections=executeWithVerifier
status=Failed. 895 errors
source=SignatureTest.java

test: http://10.100.100.112/tests/api/SignatureTest.html#SignatureTest
running script javasoft.sqe.harness.StdExecTestScript -verify
call: javasoft.sqe.harness.LocalExecuteCommand -loadDir -verify
javasoft.sqe.tests.api.SignatureTest -TestURL
http://10.100.100.112/tests/api/SignatureTest.html#SignatureTest -FileName
jdk-1_1.sig
command result: Failed. 895 errors
----------ref:executeWithVerifier(0/0)----------
----------log:executeWithVerifier(1742/103788)----------
test result: Failed. 895 errors
----------------------------------------------------------------
Specified classes not found:
    java.rmi.AccessException
    java.rmi.AlreadyBoundException
    java.rmi.ConnectException
    java.rmi.ConnectIOException
    java.rmi.MarshalException
    java.rmi.Naming
    java.rmi.NoSuchObjectException
    java.rmi.NotBoundException
    java.rmi.RMISecurityException
    java.rmi.RMISecurityManager
    java.rmi.Remote
    java.rmi.RemoteException
    java.rmi.ServerError
    java.rmi.ServerException
    java.rmi.ServerRuntimeException
    java.rmi.StubNotFoundException
    java.rmi.UnexpectedException
    java.rmi.UnknownHostException
    java.rmi.UnmarshalException
    java.rmi.dgc.DGC
    java.rmi.dgc.Lease
    java.rmi.dgc.VMID
    java.rmi.registry.LocateRegistry
    java.rmi.registry.Registry
    java.rmi.registry.RegistryHandler
    java.rmi.server.ExportException
    java.rmi.server.LoaderHandler
    java.rmi.server.LogStream
    java.rmi.server.ObjID
    java.rmi.server.Operation
    java.rmi.server.RMIClassLoader
    java.rmi.server.RMIFailureHandler
    java.rmi.server.RMISocketFactory
    java.rmi.server.RemoteCall
    java.rmi.server.RemoteObject
    java.rmi.server.RemoteRef
    java.rmi.server.RemoteServer
    java.rmi.server.RemoteStub
    java.rmi.server.ServerCloneException
    java.rmi.server.ServerNotActiveException
    java.rmi.server.ServerRef
    java.rmi.server.Skeleton
    java.rmi.server.SkeletonMismatchException
    java.rmi.server.SkeletonNotFoundException
    java.rmi.server.SocketSecurityException
    java.rmi.server.UID
    java.rmi.server.UnicastRemoteObject
    java.rmi.server.Unreferenced
----------------------------------------------------------------
Specified elements not found:
    java.awt.image.ColorModel
        method public void finalize()
    java.awt.image.DirectColorModel
        method public void finalize()
    java.awt.image.IndexColorModel
        method public void finalize()
    java.util.ListResourceBundle
        method public final java.awt.Menu getMenu(java.lang.String)
        method public final java.awt.MenuBar getMenuBar(java.lang.String)
    java.util.PropertyResourceBundle
        method public final java.awt.Menu getMenu(java.lang.String)
        method public final java.awt.MenuBar getMenuBar(java.lang.String)
    java.util.ResourceBundle
        method public final java.awt.Menu getMenu(java.lang.String)
        method public final java.awt.MenuBar getMenuBar(java.lang.String)
----------------------------------------------------------------
Non-conforming elements found:
    java.awt.Font
        method public int getNativeData(boolean)
        method public void setNativeData(int)
    java.awt.SystemColor
        method public int getWin32Index()
    java.awt.image.DirectColorModel
        method public com.ms.awt.peer.DirectColourModelData getToolkitData()
    java.awt.image.IndexColorModel
        method public [I getToolkitData()
        method public boolean getOpaque()
    java.awt.peer.ButtonPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.CanvasPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.CheckboxPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ChoicePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ComponentPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ContainerPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.DialogPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.FileDialogPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.FramePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.LabelPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.LightweightPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ListPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.PanelPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ScrollPanePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ScrollbarPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextAreaPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextComponentPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextFieldPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.WindowPeer
        method public abstract java.awt.Rectangle getBounds()
    java.lang.Class
        method public [Ljava.lang.reflect.Method; getMethods(int)
        method public java.lang.reflect.Method
getDeclaredMethodFromSignature(java.lang.String,java.lang.String)
        method public java.lang.reflect.Method
getMethodFromSignature(java.lang.String,java.lang.String)
    java.lang.Runtime
        method public static com.ms.awt.peer.INativeServices getNativeServices()
    java.lang.SecurityManager
        method public void checkFileDialog()
        method public void checkMultimedia()
        method public void checkRegistry(int,java.lang.String)
        method public void checkSystemStreams(int)
    java.lang.reflect.Constructor
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Field
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Member
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Method
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
        method public int getParameterCount()
        method public java.lang.String getDescriptor()
    java.util.Locale
        constructor public
java.util.Locale(java.lang.String,java.lang.String,java.lang.String,int,int)
        field public static final java.util.Locale java.util.Locale.AFRIKAANS
        field public static final java.util.Locale java.util.Locale.ALBANIAN
        field public static final java.util.Locale java.util.Locale.AUSTRALIA
        field public static final java.util.Locale java.util.Locale.BASQUE
        field public static final java.util.Locale java.util.Locale.BELGIAN
        field public static final java.util.Locale
java.util.Locale.BELGIAN_FRENCH
        field public static final java.util.Locale java.util.Locale.BRAZILIAN
        field public static final java.util.Locale java.util.Locale.BULGARIAN
        field public static final java.util.Locale java.util.Locale.BYELORUS
        field public static final java.util.Locale java.util.Locale.CATALAN
        field public static final java.util.Locale java.util.Locale.CROATIAN
        field public static final java.util.Locale java.util.Locale.CZECH
        field public static final java.util.Locale java.util.Locale.DANISH
        field public static final java.util.Locale java.util.Locale.DUTCH
        field public static final java.util.Locale java.util.Locale.ESTONIAN
        field public static final java.util.Locale java.util.Locale.FINNISH
        field public static final java.util.Locale
java.util.Locale.GERMAN_AUSTRIAN
        field public static final java.util.Locale java.util.Locale.GERMAN_SWISS
        field public static final java.util.Locale java.util.Locale.GREEK
        field public static final java.util.Locale java.util.Locale.HEBREW
        field public static final java.util.Locale java.util.Locale.HUNGARIAN
        field public static final java.util.Locale java.util.Locale.ICELANDIC
        field public static final java.util.Locale java.util.Locale.INDONESIAN
        field public static final java.util.Locale java.util.Locale.IRELAND
        field public static final java.util.Locale
java.util.Locale.JAPANESE_VERTICAL
        field public static final java.util.Locale
java.util.Locale.KOREAN_VERTICAL
        field public static final java.util.Locale java.util.Locale.LATVIAN
        field public static final java.util.Locale java.util.Locale.LITHUANIAN
        field public static final java.util.Locale java.util.Locale.MEXICAN
        field public static final java.util.Locale java.util.Locale.NEWZEALAND
        field public static final java.util.Locale java.util.Locale.NORWEGIAN
        field public static final java.util.Locale
java.util.Locale.NORWEGIAN_NYNORSK
        field public static final java.util.Locale java.util.Locale.POLISH
        field public static final java.util.Locale java.util.Locale.PORTUGESE
        field public static final java.util.Locale java.util.Locale.ROMANIAN
        field public static final java.util.Locale java.util.Locale.RUSSIAN
        field public static final java.util.Locale java.util.Locale.SERBIAN
        field public static final java.util.Locale
java.util.Locale.SIMPLIFIED_CHINESE_VERTICAL
        field public static final java.util.Locale java.util.Locale.SINGAPORE
        field public static final java.util.Locale java.util.Locale.SLOVAKIAN
        field public static final java.util.Locale java.util.Locale.SLOVENIAN
        field public static final java.util.Locale java.util.Locale.SOUTH_AFRICA
        field public static final java.util.Locale java.util.Locale.SPANISH
        field public static final java.util.Locale
java.util.Locale.SPANISH_MODERN
        field public static final java.util.Locale java.util.Locale.SWEDISH
        field public static final java.util.Locale java.util.Locale.SWISS
        field public static final java.util.Locale java.util.Locale.THAI
        field public static final java.util.Locale
java.util.Locale.TRADITIONAL_CHINESE_VERTICAL
        field public static final java.util.Locale java.util.Locale.TURKISH
        field public static final java.util.Locale java.util.Locale.UKRANIAN
        method public [Ljava.util.Locale; getDefaultLocaleList()
        method public int getCodePage()
        method public int getLCID()
        method public static java.util.Locale getLocaleFromLCID(int)
----------------------------------------------------------------
End of summary.

Exhibit D

Exhibit E

-- Summary of JavaTest report ../11-14-97/signat~1.jtr
-- File 11-14-97.txt created at Sun Nov 16 16:32:37 PST 1997

#Test Results
#Fri Nov 14 15:49:40 PST 1997
name=SignatureTest
harnessVersion=JT_1.0
execStatus=Failed. 901 errors
id=SignatureTest
title=API Signature verification
testsuite=file:/F:/jck-11a/tests/testsuite.html
end=Fri Nov 14 15:49:40 PST 1997
start=Fri Nov 14 15:49:25 PST 1997
executeClass=javasoft.sqe.tests.api.SignatureTest
description=file:/F:/jck-11a/tests/api/SignatureTest.html#SignatureTest
file=file:/F:/jck-11a/tests/api/SignatureTest.html
environment=jck-interpreter-sameJVM
executeArgs=-TestURL $testURL -FileName jdk-1_1.sig
work=file:/\\\\Gzilla-pc/c/My Documents/work-api-sameJVM/api/
keywords=compile execute positive coreAPI
sections=executeWithVerifier
status=Failed. 901 errors
source=SignatureTest.java

test: file:/F:/jck-11a/tests/api/SignatureTest.html#SignatureTest
running script javasoft.sqe.harness.StdExecTestScript -verify
call: javasoft.sqe.harness.LocalExecuteCommand
javasoft.sqe.tests.api.SignatureTest -TestURL
file:/F:/jck-11a/tests/api/SignatureTest.html#SignatureTest -FileName
jdk-1_1.sig
command result: Failed. 901 errors
----------ref:executeWithVerifier(0/0)----------
----------log:executeWithVerifier(1754/104383)----------
test result: Failed. 901 errors
----------------------------------------------------------------
Specified classes not found:
    java.rmi.AccessException
    java.rmi.AlreadyBoundException
    java.rmi.ConnectException
    java.rmi.ConnectIOException
    java.rmi.MarshalException
    java.rmi.Naming
    java.rmi.NoSuchObjectException
    java.rmi.NotBoundException
    java.rmi.RMISecurityException
    java.rmi.RMISecurityManager
    java.rmi.Remote
    java.rmi.RemoteException
    java.rmi.ServerError
    java.rmi.ServerException
    java.rmi.ServerRuntimeException
    java.rmi.StubNotFoundException
    java.rmi.UnexpectedException
    java.rmi.UnknownHostException
    java.rmi.UnmarshalException
    java.rmi.dgc.DGC
    java.rmi.dgc.Lease
    java.rmi.dgc.VMID
    java.rmi.registry.LocateRegistry
    java.rmi.registry.Registry
    java.rmi.registry.RegistryHandler
    java.rmi.server.ExportException
    java.rmi.server.LoaderHandler
    java.rmi.server.LogStream
    java.rmi.server.ObjID
    java.rmi.server.Operation
    java.rmi.server.RMIClassLoader
    java.rmi.server.RMIFailureHandler
    java.rmi.server.RMISocketFactory
    java.rmi.server.RemoteCall
    java.rmi.server.RemoteObject
    java.rmi.server.RemoteRef
    java.rmi.server.RemoteServer
    java.rmi.server.RemoteStub
    java.rmi.server.ServerCloneException
    java.rmi.server.ServerNotActiveException
    java.rmi.server.ServerRef
    java.rmi.server.Skeleton
    java.rmi.server.SkeletonMismatchException
    java.rmi.server.SkeletonNotFoundException
    java.rmi.server.SocketSecurityException
    java.rmi.server.UID
    java.rmi.server.UnicastRemoteObject
    java.rmi.server.Unreferenced
----------------------------------------------------------------
Specified elements not found:
    java.awt.image.ColorModel
        method public void finalize()
    java.awt.image.DirectColorModel
        method public void finalize()
    java.awt.image.IndexColorModel
        method public void finalize()
    java.io.ByteArrayOutputStream
        method public java.lang.String toString(java.lang.String)
----------------------------------------------------------------
Non-conforming elements found:
    java.awt.EventQueue
        method public void _postEvent(java.awt.AWTEvent)
    java.awt.Font
        field public transient int java.awt.Font.pData
        method public int getNativeData()
    java.awt.SystemColor
        field public static final java.awt.SystemColor
java.awt.SystemColor.appWorkspace
        method public int getWin32Index()
    java.awt.image.DirectColorModel
        method public com.ms.awt.peer.DirectColourModelData getToolkitData()
    java.awt.image.IndexColorModel
        method public [I getToolkitData()
        method public boolean getOpaque()
    java.awt.peer.ButtonPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.CanvasPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.CheckboxPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ChoicePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ComponentPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ContainerPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.DialogPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.FileDialogPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.FramePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.LabelPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.LightweightPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ListPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.PanelPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ScrollPanePeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.ScrollbarPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextAreaPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextComponentPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.TextFieldPeer
        method public abstract java.awt.Rectangle getBounds()
    java.awt.peer.WindowPeer
        method public abstract java.awt.Rectangle getBounds()
    java.lang.Class
        method public [Ljava.lang.reflect.Method; getMethods(int)
        method public java.lang.Class getInterface(java.lang.String)
        method public java.lang.reflect.Method
getDeclaredMethodFromSignature(java.lang.String,java.lang.String)
        method public java.lang.reflect.Method
getMethodFromSignature(java.lang.String,java.lang.String)
    java.lang.Runtime
        method public static com.ms.awt.peer.INativeServices getNativeServices()
    java.lang.SecurityManager
        method public void checkFileDialog()
        method public void checkMultimedia()
        method public void checkRegistry(int,java.lang.String)
        method public void checkSystemStreams(int)
    java.lang.VerifyError
        interface interface com.ms.security.auditing.ISecurityAuditInfo
        method public [Ljava.lang.String; getAuditDetails()
        method public int getPC()
        method public int getViolationCode()
        method public java.lang.String getAuditIdentifier()
        method public java.lang.String getClassName()
        method public java.lang.String getMethodName()
        method public java.lang.String getViolationDescription()
    java.lang.reflect.Constructor
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Field
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Member
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
    java.lang.reflect.Method
        field public static final int java.lang.reflect.Member.PUBLIC_DECLARED
        method public int getParameterCount()
        method public java.lang.String getDescriptor()
    java.util.Locale
        constructor public
java.util.Locale(java.lang.String,java.lang.String,java.lang.String,int,int)
        field public static final java.util.Locale java.util.Locale.AFRIKAANS
        field public static final java.util.Locale java.util.Locale.ALBANIAN
        field public static final java.util.Locale java.util.Locale.AUSTRALIA
        field public static final java.util.Locale java.util.Locale.BASQUE
        field public static final java.util.Locale java.util.Locale.BELGIAN
        field public static final java.util.Locale
java.util.Locale.BELGIAN_FRENCH
        field public static final java.util.Locale java.util.Locale.BRAZILIAN
        field public static final java.util.Locale java.util.Locale.BULGARIAN
        field public static final java.util.Locale java.util.Locale.BYELORUS
        field public static final java.util.Locale java.util.Locale.CATALAN
        field public static final java.util.Locale java.util.Locale.CROATIAN
        field public static final java.util.Locale java.util.Locale.CZECH
        field public static final java.util.Locale java.util.Locale.DANISH
        field public static final java.util.Locale java.util.Locale.DUTCH
        field public static final java.util.Locale java.util.Locale.ESTONIAN
        field public static final java.util.Locale java.util.Locale.FINNISH
        field public static final java.util.Locale
java.util.Locale.GERMAN_AUSTRIAN
        field public static final java.util.Locale java.util.Locale.GERMAN_SWISS
        field public static final java.util.Locale java.util.Locale.GREEK
        field public static final java.util.Locale java.util.Locale.HEBREW
        field public static final java.util.Locale java.util.Locale.HUNGARIAN
        field public static final java.util.Locale java.util.Locale.ICELANDIC
        field public static final java.util.Locale java.util.Locale.INDONESIAN
        field public static final java.util.Locale java.util.Locale.IRELAND
        field public static final java.util.Locale
java.util.Locale.JAPANESE_VERTICAL
        field public static final java.util.Locale
java.util.Locale.KOREAN_VERTICAL
        field public static final java.util.Locale java.util.Locale.LATVIAN
        field public static final java.util.Locale java.util.Locale.LITHUANIAN
        field public static final java.util.Locale java.util.Locale.MEXICAN
        field public static final java.util.Locale java.util.Locale.NEWZEALAND
        field public static final java.util.Locale java.util.Locale.NORWEGIAN
        field public static final java.util.Locale
java.util.Locale.NORWEGIAN_NYNORSK
        field public static final java.util.Locale java.util.Locale.POLISH
        field public static final java.util.Locale java.util.Locale.PORTUGESE
        field public static final java.util.Locale java.util.Locale.ROMANIAN
        field public static final java.util.Locale java.util.Locale.RUSSIAN
        field public static final java.util.Locale java.util.Locale.SERBIAN
        field public static final java.util.Locale
java.util.Locale.SIMPLIFIED_CHINESE_VERTICAL
        field public static final java.util.Locale java.util.Locale.SINGAPORE
        field public static final java.util.Locale java.util.Locale.SLOVAKIAN
        field public static final java.util.Locale java.util.Locale.SLOVENIAN
        field public static final java.util.Locale java.util.Locale.SOUTH_AFRICA
        field public static final java.util.Locale java.util.Locale.SPANISH
        field public static final java.util.Locale
java.util.Locale.SPANISH_MODERN
        field public static final java.util.Locale java.util.Locale.SWEDISH
        field public static final java.util.Locale java.util.Locale.SWISS
        field public static final java.util.Locale java.util.Locale.THAI
        field public static final java.util.Locale
java.util.Locale.TRADITIONAL_CHINESE_VERTICAL
        field public static final java.util.Locale java.util.Locale.TURKISH
        field public static final java.util.Locale java.util.Locale.UKRANIAN
        method public [Ljava.util.Locale; getDefaultLocaleList()
        method public int getCodePage()
        method public int getLCID()
        method public static java.util.Locale getLocaleFromLCID(int)
----------------------------------------------------------------
End of summary.

Exhibit F

How to avoid potential pitfalls of Microsoft's non-standard SDK for Java