The Java 2 SDK v1.3.1_01 under Windows 2000 (aka NT 5) Professional SP2 installs two complete copies of the 1.3 JRE. We ignore this for the moment, and examine the sdk jre.
The jar format hides a lot of the platform complexity. In particular, rt.jar has almost 5500 files totalling about 13MB (uncompressed), the vast majority class files. It is interesting to look at this file with WinZip. For one thing, you can see all of the classes in the platform, including inner classes and private classes. You can also see that there are non class files, including gif files, text and property files. Here is some trivia:
The smallest class file: java.rmi.Remote (102 bytes)
The largest class file: sun.jdbc.odbc.JdbcOdbcResultSet (45kB)
The largest class files seem to be from swing, awt, odbc, with a few corba classes. Interesting, java.math.BigInteger weighs in at a heafty 28kB.
Its hard to say what class size implies: either the class is very complex or it was not factored properly, or some combination. It could also be that these classes include a lot of static data. I think it is safe to say that class file size scales with the number of expressions in the source file.
The smallest source file: org.omg.CORBA.VM_ABSTRACT (330 bytes)
The largest source file: javax.swing.swing.JTable (205kB)
java.text.Normalizer was #5, and was in the top 10 in rt.jar, and as I suspected there is a lot of static data in there. There are 2 c and h files in the source. There were 1882 files totalling almost 19MB.
Interestingly, sun distributes rt.jar uncompressed. Probably the others, too.
The next interesting thing is the tools. Sun distributes 25 tools with the sdk, 7 with the JRE (and there is overlap). It appears that these tools are just wrappers for something else, something that taps into tools.jar.
A search for "java" with regedit turned up some vaguely interesting things. The most interesting for me were the explorer java keys. These are structured like java packages and point to zip files in winnt\java\packages. Textpad apparently stores information about file types in the registry. Netbeans associates java files with openfile.bat.
====Tools=====
appletviewer.exe
extcheck.exe
idlj.exe
jar.exe
jarsigner.exe
java.exe
javac.exe
javadoc.exe
javah.exe
javap.exe
javaw.exe
jdb.exe
keytool.exe
native2ascii.exe
oldjava.exe
oldjavac.exe
oldjavaw.exe
oldjdb.exe
policytool.exe
rmic.exe
rmid.exe
rmiregistry.exe
serialver.exe
tnameserv.exe
unregbean.exe
The documentation has 6 categories for these tools (\tooldocs\tools.html):
Basic Tools (javac, java, javadoc, appletviewer, jar, jdb, javah, javap, extcheck)
Remote Method Invocation (RMI) Tools (rmic, rmiregistry, rmid, serialver)
Internationalization Tools (native2ascii)
Security Tools (keytool, jarsigner, policytool)
Java IDL and RMI-IIOP Tools (tnameserv, idlj)
Java Plug-in Tools (unregbean)
After a little reading, I discovered the answer to at least some of my questions.
The rt.jars have the same classes. One is probably compiled with debugging info
turned on (the sdk rt.jar). I used the jar tf file command to get a listing.
The bootclasspath is used to find rt.jar and i18n.jar. You can override this to do crosscompilation. You should also use -target. C:\java\jdk131_01\doc\tooldocs\win32\javac.html