summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorBrian Jones <cbj@gnu.org>1998-07-21 20:59:02 +0000
committerBrian Jones <cbj@gnu.org>1998-07-21 20:59:02 +0000
commit2f591f769db86606ff20f31aba828b10f1a19f33 (patch)
tree2dbcc076483ed754791bebb4d74e573c36a4ab87 /doc
parent8e7c2feaf617b5baf6cffb44dd1ab020b1671f1f (diff)
downloadclasspath-2f591f769db86606ff20f31aba828b10f1a19f33.tar.gz
web site
Diffstat (limited to 'doc')
-rw-r--r--doc/html/classpath.html76
-rw-r--r--doc/html/gnu-head-sm.jpgbin0 -> 6006 bytes
-rw-r--r--doc/html/jcl-hacking.html837
-rw-r--r--doc/html/mailing-list.html72
-rw-r--r--doc/html/status.html192
5 files changed, 1177 insertions, 0 deletions
diff --git a/doc/html/classpath.html b/doc/html/classpath.html
new file mode 100644
index 000000000..fe4e0db85
--- /dev/null
+++ b/doc/html/classpath.html
@@ -0,0 +1,76 @@
+<html>
+<head>
+<title>GNU $classpath Project Homepage</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<div align="center">
+<table border="0">
+ <tr valign="center">
+ <td><a href="http://www.gnu.org/"><img src="gnu-head-sm.jpg"
+ width="129" height="122" alt="GNU Head Logo" border="0"></a>
+ <td><h1>GNU $classpath</h1>
+</table>
+
+<hr width="75%">
+<table border="0" cellpadding="4" cellspacing="4">
+ <tr valign="top">
+ <td bgcolor="#FFFFC8">
+ <p align="center">
+ <b>$classpath Pages</b>
+ <p align="left">
+ <li>Home Page
+ <li><a href="status.html">Who's Working on What</a>
+ <li><a href="mailing-list.html">Mailing Lists</a>
+ <li><a href="jcl-hacking.html">Hacker's Guide</a>
+ <p>
+ <b>Official Specs</b>
+ <li><a href="http://java.sun.com/docs/">JavaSoft</a>
+ <p>
+ <b>Free JVM's</b>
+ <li><a href="http://www.hungry.com/products/japhar/">Japhar</a>
+ <li><a href="http://www.transvirtual.com/">Kaffe</a>
+ <td>
+ Welcome to the homepage of the GNU $classpath project, a
+ <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a>
+ replacement for Sun's proprietary Java standard class libraries. Our
+ goal is to provide a 100% compatible version of the class libraries
+ so that free operating systems can run Java programs. We also want
+ to provide support for all Unix-like operating systems.
+ <p>
+ $classpath is GNU software and is licensed under the terms of the
+ <a href="http://www.gnu.org/copyleft/lgpl.html">GNU General Public
+ Library License</a>. Similarly to glibc, it can be used to run
+ proprietary as well as free applications or applets.
+ <p>
+ There is no public release available at this time. Code is
+ being maintained in CVS but currently access is available only
+ to developers. If you are interested in being a developer,
+ please sign up for the <a href="mailing-list.html">mailing
+ list</a> and read the <a href="jcl-hacking.html">Hacker's
+ Guide</a> first. Then look at what needs to be done and let us
+ know what you'd like to work on. See how easy that is?
+</table>
+
+<div align="left">
+
+<hr>
+Webmaster: <a href="mailto:arenn@urbanophile.com">webmaster@classpath.org</a>
+<p>
+Copyright &copy; 1998 Free Software Foundation, Inc.<br>
+59 Temple Place - Suite 330, Boston, MA 02111 USA<br>
+This web page developed by Aaron M. Renn
+(<a href="mailto:arenn@urbanophile.com">arenn@urbanophile.com</a>)
+<p>
+Verbatim copying and distribution is permitted in any medium,
+provided this notice is preserved.
+<p>
+Last updated: July 15, 1998 by rao
+
+<hr>
+<b>Just Say No to Frames, Ads, and Animated GIF's</b>
+
+</body>
+</html>
+
diff --git a/doc/html/gnu-head-sm.jpg b/doc/html/gnu-head-sm.jpg
new file mode 100644
index 000000000..2a9746a25
--- /dev/null
+++ b/doc/html/gnu-head-sm.jpg
Binary files differ
diff --git a/doc/html/jcl-hacking.html b/doc/html/jcl-hacking.html
new file mode 100644
index 000000000..8ce0219eb
--- /dev/null
+++ b/doc/html/jcl-hacking.html
@@ -0,0 +1,837 @@
+<HTML>
+<HEAD>
+<!-- This HTML file has been created by texi2html 1.52
+ from jcl-hacking.texinfo on 14 July 1998 -->
+
+<TITLE>GNU $classpath Hacker's Guide</TITLE>
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<H1>GNU $classpath Hacker's Guide</H1>
+<P>
+<P><HR><P>
+<H1>Table of Contents</H1>
+<UL>
+<LI><A NAME="TOC1" HREF="jcl-hacking.html#SEC1">Introduction</A>
+<LI><A NAME="TOC2" HREF="jcl-hacking.html#SEC2">Requirements</A>
+<LI><A NAME="TOC3" HREF="jcl-hacking.html#SEC3">Volunteering to Help</A>
+<LI><A NAME="TOC4" HREF="jcl-hacking.html#SEC4">Project Goals</A>
+<LI><A NAME="TOC5" HREF="jcl-hacking.html#SEC5">Programming Tools</A>
+<LI><A NAME="TOC6" HREF="jcl-hacking.html#SEC6">Programming Standards</A>
+<LI><A NAME="TOC7" HREF="jcl-hacking.html#SEC7">Programming Goals</A>
+<LI><A NAME="TOC8" HREF="jcl-hacking.html#SEC8">Portability</A>
+<LI><A NAME="TOC9" HREF="jcl-hacking.html#SEC9">Robustness</A>
+<LI><A NAME="TOC10" HREF="jcl-hacking.html#SEC10">Java Efficiency</A>
+<LI><A NAME="TOC11" HREF="jcl-hacking.html#SEC11">Native Efficiency</A>
+<LI><A NAME="TOC12" HREF="jcl-hacking.html#SEC12">Specification Sources</A>
+<LI><A NAME="TOC13" HREF="jcl-hacking.html#SEC13">Directory and File Naming Conventions</A>
+</UL>
+<P><HR><P>
+
+<P>
+@title{GNU $classpath Hacker's Guide}
+@author{Aaron M. Renn}
+@author{John Keiser}
+Copyright (C) 1998 Free Software Foundation, Inc.
+
+</P>
+<P>
+@sp2
+Permission is granted to make and distribute verbatim copies of
+this document provided the copyright notice and this permission notice
+are preserved on all copies.
+
+</P>
+<P>
+Permission is granted to copy and distribute modified versions of this
+document under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+</P>
+<P>
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation
+approved by the Free Software Foundation.
+
+</P>
+
+
+
+<H1><A NAME="SEC1" HREF="jcl-hacking.html#TOC1">Introduction</A></H1>
+
+<P>
+The $classpath Project is a dedicated to providing a 100% free, clean room
+implementation of the standard Java class libraries. Because there is
+currently no free implementation of the Java environment, no free
+operating system can ship with Java included. Parts of a free Java
+implementation have already been written, including free Java virtual
+machines (JVM's) such as <A HREF="http://www.kaffe.org/">Kaffe</A> and
+<A HREF="http://www.hungry.com/products/japhar/">Japhar</A>, and Java compilers
+such as <A HREF="http://www.cs.berkeley.edu/~engberg/guavac/">Guavac</A>.
+However, there is currently no free replacement for Sun's proprietary
+libraries. This $classpath project aims to correct this problem by supplying a
+free class library implementation that will allow a 100% free Java
+platform to be distributed. Note that Kaffe now ships with a partial
+class library that is also free, so there is more than one group working
+towards a common goal.
+
+</P>
+
+
+<H1><A NAME="SEC2" HREF="jcl-hacking.html#TOC2">Requirements</A></H1>
+
+<P>
+Although $classpath is following an open development model where input from
+developers is welcome, there are certain base requirements that need to
+be met by anyone who wants to contribute code to this project. They are
+mostly unfortunately dictated by legal requirements and are not
+arbitrary restrictions chosen by the $classpath team.
+
+</P>
+<P>
+You will need to adhere to the following things if you want to donate
+code to the $classpath project:
+
+</P>
+
+<UL>
+<LI>
+
+<B>Never under any circumstances refer to Sun's code while working on
+$classpath.</B> It is best if you have never looked at Sun's code at all. To
+reduce temptation, it would be best if you deleted the <SAMP>`src.zip'</SAMP>
+file from your JDK distribution. If you have signed Sun's
+non-disclosure statement, then you unfortunately cannot work on $classpath code
+at all. If you have any reason to believe that your code might be
+"tainted", please say something on the mailing list before writing
+anything. If it turns out that your code was not developed in a clean
+room environment, we could be very embarrassed someday in court. Please
+don't let that happen.
+
+<LI>
+
+<B>Never decompile Sun's class libraries.</B> While the wording of the
+license in Sun's JDK version 1.2 has changed, it not acceptable, under
+any circumstances, for a person working on $classpath to decompile Sun's class
+libraries. Allowing the use of decompilation in the $classpath project would
+open up a giant can of legal worms, which we wish to avoid.
+
+<LI>
+
+$classpath is licensed under the terms of the
+<A HREF="http://www.fsf.org/copyleft/lgpl.html">GNU Library General Public
+License</A>. To preserve freedom for all users and to maintain uniform
+licensing of $classpath, we will not accept code into the main distribution
+that is not licensed under these terms.
+
+<LI>
+
+$classpath is GNU software and this project is being officially sponsored by
+the <A HREF="http://www.fsf.org/">Free Software Foundation</A>. Because of this,
+the FSF will hold copyright to all code developed as part of $classpath. This
+will allow them to pursue copyright violators in court, something an
+individual developer may neither have the time nor resources to do.
+Everyone contributing code to $classpath will need to sign a copyright assignment
+statement. Additionally, if you are employed as a programmer, your
+employer may need to sign a copyright waiver disclaiming all interest in
+the software. This may sound harsh, but unfortunately, it is the only
+way to ensure that the code you write is legally yours to distribute.
+</UL>
+
+
+
+<H1><A NAME="SEC3" HREF="jcl-hacking.html#TOC3">Volunteering to Help</A></H1>
+
+<P>
+The $classpath project needs volunteers to help us out. People are needed to
+write unimplemented Java packages, to test $classpath on various platforms, and to
+port it to platforms that are currently unsupported.
+
+</P>
+<P>
+While pretty much all contributions are welcome (but see
+see section <A HREF="jcl-hacking.html#SEC2">Requirements</A>) it is always preferable that volunteers do the
+whole job when volunteering for a task. So when you volunteer to write
+a Java package, please be willing to do the following:
+
+</P>
+
+<UL>
+<LI>
+
+Implement a complete drop-in replacement for the particular package. That
+means implementing any "internal" classes. For example, in the java.net
+package, there are non-public classes for implementing sockets. Without
+those classes, the public socket interface is useless. But do not feel
+obligated to completely replace all of Sun's functionality at once. For
+example, in the java.net package, there are different types of protocol
+handlers for different types of URL's. Not all of these need to be
+written at once.
+
+<LI>
+
+Please write complete and thorough javadoc comments for every public and
+protected method and variable. These should be superior to Sun's and cover
+everything about the item being documented.
+
+<LI>
+
+Please write a regression test package that can be used to run tests of
+your package's functionality.
+</UL>
+
+<P>
+Nobody likes to write documentation and test cases, but they are vital to
+a complete and robust product. Writing them as you go is much easier than
+going back at the end and adding them.
+
+</P>
+
+
+<H1><A NAME="SEC4" HREF="jcl-hacking.html#TOC4">Project Goals</A></H1>
+
+<P>
+The goal of the $classpath project is to produce a
+<A HREF="http://www.fsf.org/philosophy/free-sw.html">free</A> implementation
+of the standard class library for Java. However, there are other more
+specific goals as to which platforms should be supported.
+
+</P>
+<P>
+$classpath is targeted to support the following operating systems:
+
+</P>
+
+<OL>
+<LI>
+
+Free operating systems. This includes GNU/Linux, {Free,Net,Open}BSD, and
+GNU/Hurd.
+
+<LI>
+
+Other Unix like operating systems
+
+<LI>
+
+Platforms which currently have no Java support at all such as the Amiga.
+
+<LI>
+
+Other platform such as MS-Windows.
+</OL>
+
+<P>
+While free operating systems are the top priority, the other priorities
+can shift depending on whether or not there is a volunteer to port $classpath
+to those platforms and to test releases.
+
+</P>
+<P>
+Eventually we hope the $classpath will support all JVM's that provide JNI
+support. However, the top priority is free JVM's. The JVM support
+priority list is:
+
+</P>
+
+<OL>
+<LI>
+
+Japhar
+<LI>
+
+Kaffe
+<LI>
+
+Sun's JDK
+<LI>
+
+Other JNI Compliant JVM's.
+</OL>
+
+<P>
+As with OS platform support, this priority list could change if a volunteer
+comes forward to port, maintain, and test releases for a particular JVM.
+Kaffe is now developing its own class library, so the priority of supporting
+that platform is not nearly as high as for Japhar.
+
+</P>
+<P>
+The initial target version for $classpath is Java 1.1. Java 1.2 can be
+implemented if desired, but please do not create classes that depend
+on 1.2 features in other packages.
+
+</P>
+
+
+<H1><A NAME="SEC5" HREF="jcl-hacking.html#TOC5">Programming Tools</A></H1>
+
+<P>
+If you want to hack on $classpath, you should download, install,
+and familiarize yourself with the following tools:
+
+</P>
+
+<UL>
+<LI>
+
+CVS 1.9
+<LI>
+
+automake 1.3
+<LI>
+
+autoconf 2.12
+<LI>
+
+dejagnu 1.3
+<LI>
+
+libtool 1.2
+<LI>
+
+GNU m4 1.4
+<LI>
+
+perl 5.X
+<LI>
+
+GNU MP 2.0.2
+</UL>
+
+<P>
+All of these tools are available from
+<A HREF="ftp://prep.ai.mit.edu/pub/gnu/">prep.ai.mit.edu</A> via anonymous ftp.
+With the exception of perl, they are fully documented with
+texinfo manuals. Texinfo can be browsed with the Emacs editor, or with
+the text editor of your choice.
+
+</P>
+<P>
+Here is a brief description of the purpose of those tools.
+
+</P>
+<DL COMPACT>
+
+<DT><B>CVS</B>
+<DD>
+A version control system that maintains a centralized Internet
+repository of all code in the $classpath system. Access to the repository
+requires an account. Contact Paul Fisher (<A HREF="mailto:rao@gnu.org">rao@gnu.org</A>) for
+details.
+
+<DT><B>dejagnu</B>
+<DD>
+A package for automating regression test suites for programs. Your
+regression test package should work with this.
+
+<DT><B>automake</B>
+<DD>
+This tool automatically creates Makefile.in files from
+Makefile.am files. The Makefile.in is turned into a Makefile by autoconf.
+Why use this? Because it automatically generates every makefile target
+you would ever want (clean, install, dist, etc) in full compliance with
+the GNU coding standards. It also simplifies Makefile creation in a
+ton of different ways I can't describe here. Read the docs for more info.
+
+<DT><B>autoconf</B>
+<DD>
+Automatically configures a package for the platform on
+which it is being built and generates the Makefile for that platform.
+
+<DT><B>libtool</B>
+<DD>
+Handles all of the zillions of hairy platform specific
+options needed to build shared libraries.
+
+<DT><B>m4</B>
+<DD>
+The free GNU replacement for the standard Unix macro processor. Proprietary
+m4 programs are broken and so GNU m4 is required for autoconf to work.
+
+<DT><B>perl</B>
+<DD>
+Larry Wall's scripting language. It is used internally by automake.
+
+<DT><B>MP</B>
+<DD>
+Required for java.lang.Float, java.lang.Double, java.math.BigInteger, and
+java.math.BigDecimal.
+
+</DL>
+
+
+
+<H1><A NAME="SEC6" HREF="jcl-hacking.html#TOC6">Programming Standards</A></H1>
+
+<P>
+For C code, follow the
+<A HREF="http://www.fsf.org/prep/standards_toc.html">GNU Coding Standards</A>.
+The standards also specify various things like the
+install directory structure. These should be followed if possible.
+
+</P>
+<P>
+For Java code, please follow the
+<A HREF="http://java.sun.com/docs/codeconv/html/CodeConventionsTOC.doc.html">Sun programming standards</A>.
+As an exception, do not feel obligated to following their bracket and
+indentation style if you consider it wrong as I do.
+
+</P>
+
+
+<H1><A NAME="SEC7" HREF="jcl-hacking.html#TOC7">Programming Goals</A></H1>
+
+<P>
+When you write code for $classpath, write with three things in mind, and in the
+following order: portability, robustness, and efficiency.
+
+</P>
+<P>
+If efficiency breaks portability or robustness, then don't do it the
+efficient way. If robustness breaks portability, then bye-bye robust code.
+Of course, as a programmer you would probably like to find sneaky ways to
+get around the issue so that your code can be all three ... the following
+chapters will give some hints on how to do this.
+
+</P>
+
+
+<H1><A NAME="SEC8" HREF="jcl-hacking.html#TOC8">Portability</A></H1>
+
+<P>
+The ultimate portability goal would be to create:
+
+</P>
+
+<OL>
+<LI>
+
+a binary set for each platform that works across all VMs on that
+platform
+<LI>
+
+a single classfile set that work across all VMs on all platforms that
+support the binary set.
+</OL>
+
+<P>
+With Java code, this is no problem. You end up delegating VM- or
+platform-specific stuff to native code anyway. Unfortunately, it is
+impossible to write native code that works out of the box on multiple
+VMs, even on a given platform. The APIs Sun has created just do not
+give the flexibility required to do that if you are implementing the
+java.* hierarchy.
+
+</P>
+<P>
+The native libraries we use in $classpath are JNI, JVMDI, and VMI. JNI you
+should be familiar with; introduced in Java 1.1, it is the basis for
+our native code. JVMDI is a 1.2 concoction, and thus we can only
+support it on 1.1 VMs that we have source access to (i.e. Japhar and
+Kaffe). VMI is our own invention entirely; it is where we push the
+VM-specific functionality that JNI and JVMDI do not support.
+
+</P>
+<P>
+However, using JVMDI and VMI in 1.1 breaks the "ideal goal" for the project.
+With these two in the mix, $classpath's portability becomes:
+
+</P>
+
+<OL>
+<LI>
+
+a JVMDI and VMI lib per VM per platform;
+<LI>
+
+a binary set for each platform that works across all VM/platform
+combos supporting the JVMDI/VMI;
+<LI>
+
+a single classfile set that works across all VM / platform combos
+that support both of the above.
+</OL>
+
+<P>
+When writing, therefore, you should always keep shy of anything
+VM-specific yourself, and talk to the VM using the VMI. If you need a
+VM-specific function that is not supported by JNI or JVMDI, write a new VMI
+function!
+
+</P>
+<P>
+Note that the preferred method is not to use the JVMDI or VMI at <EM>all</EM>,
+but to use only JNI. If you can write it without the VMI, your code will be
+quicker to port to new VMs.
+
+</P>
+<P>
+There is another issue, however, and that is the efficiency issue. Some
+things can be done using JNI only, but they are a ton slower than they would
+be if you used the VMI or talked directly to the VM.
+
+</P>
+<P>
+In these cases, the preferred method in $classpath is to create a <EM>library</EM>.
+Hide the implementation of the functions from the caller. If the library
+can be written using only JNI, no matter how inefficient, you should write a
+version of it for that. Portability, remember, is the ultimate goal, and
+the closer we are to it, the better off we are.
+
+</P>
+
+
+
+<H1><A NAME="SEC9" HREF="jcl-hacking.html#TOC9">Robustness</A></H1>
+
+<P>
+Native code is very easy to make non-robust. (That's one reason Java is so
+much better!) Here are a few hints to make your native code more robust.
+
+</P>
+<P>
+Always check return values for standard functions. It's sometimes easy to
+forget to check that malloc() return for an error. Don't make that mistake.
+(In fact, use JCL_malloc() in the jcl library instead--it will check the
+return value and throw an exception if necessary.)
+
+</P>
+<P>
+Always check the return values of JNI functions, or call <CODE>ExceptionOccurred</CODE>
+to check whether an error occurred. You must do this after <EM>every</EM> JNI call.
+JNI does not work well when an exception has been raised, and can have unpredictable
+behavior.
+
+</P>
+<P>
+Throw exceptions using JCL_ThrowException. This guarantees that if something is
+seriously wrong, the exception text will at least get out somewhere (even if it is
+stderr).
+
+</P>
+<P>
+Check for null values of jclasses before you send them to JNI functions. JNI
+does not behave nicely when you pass a null class to it: it terminates Java with
+a "JNI Panic."
+
+</P>
+<P>
+In general, try to use functions in native/lib/jcl.h. They check exceptions and
+return values and throw appropriate exceptions.
+
+</P>
+
+
+
+<H1><A NAME="SEC10" HREF="jcl-hacking.html#TOC10">Java Efficiency</A></H1>
+
+<P>
+For methods which explicitly throw a NullPointerException when an
+argument is passed which is null, per a Sun specification, do not write
+code like:
+
+</P>
+
+<PRE>
+int strlen(String foo) throws NullPointerException {
+ if (foo == null)
+ throw new NullPointerException("foo is null");
+ return foo.length();
+}
+</PRE>
+
+<P>
+Instead, the code should be written as:
+
+</P>
+
+<PRE>
+int strlen(String foo) throws NullPointerException {
+ return foo.length();
+}
+</PRE>
+
+<P>
+Explicitly comparing foo to null is unnecessary, as the virtual machine
+will throw a NullPointerException when length() is invoked. $classpath is
+designed to be as fast as possible -- every optimization, no matter how
+small, is important.
+
+</P>
+
+
+
+<H1><A NAME="SEC11" HREF="jcl-hacking.html#TOC11">Native Efficiency</A></H1>
+
+<P>
+You might think that using native methods all over the place would give
+our implementation of Java speed, speed, blinding speed. You'd be thinking
+wrong. Would you believe me if I told you that an <EM>interpreted</EM> Java method
+is typically about three and a half times <EM>faster</EM> than the equivalent
+native method? This is true even for a totally blank method.
+
+</P>
+<P>
+Bottom line: JNI is overhead incarnate. In Sun's implementation, even
+the JNI functions you use once you get into Java are slow.
+
+</P>
+<P>
+A final problem is efficiency of native code when it comes to things
+like method calls, fields, finding classes, etc. Generally you should cache
+things like that in static C variables if you're going to use them over and
+over again. GetMethodID(), GetFieldID(), and FindClass() are *slow*.
+
+</P>
+<P>
+Here are a few tips on writing native code efficiently:
+
+</P>
+<P>
+Make as few native method calls as possible. Note that this is not the same
+thing as doing less in native method calls; it just means that, if given the
+choice between calling two native methods and writing a single native method
+that does the job of both, it will usually be better to write the single
+native method. You can even call the other two native methods directly from
+your native code and not incur the overhead of a method call from Java to C.
+
+</P>
+<P>
+Cache methodIDs and fieldIDs wherever you can. String lookups are expensive.
+The best way to do this is to use the native/lib/jnilink.h library. It will
+ensure that jmethodIDs are always valid, even if the class is unloaded at
+some point. In 1.1, jnilink simply caches a NewGlobalRef() to the method's
+underlying class; however, when 1.2 comes along, it will use a weak reference
+to allow the class to be unloaded and then re-resolve the jmethodID the next
+time it is used.
+
+</P>
+<P>
+Cache classes that you need to access often. jnilink will help with this as
+well. The issue here is the same as the methodID and fieldID issue--how to
+make certain the class reference remains valid.
+
+</P>
+<P>
+If you need to associate native C data with your class, use Paul
+Fisher's native_state library (NSA). It will allow you to get and set state
+fairly efficiently. Note that there is no built-in mechanism to associate C
+data with instances of a class. This is a library Paul built from scratch.
+
+</P>
+
+
+
+<H1><A NAME="SEC12" HREF="jcl-hacking.html#TOC12">Specification Sources</A></H1>
+
+<P>
+There are a number of specification sources to use when working on $classpath.
+In general, the only place you'll find your classes specified is in the
+JavaDoc documentation or possibly in the corresponding white paper. In
+the case of java.lang, java.io and java.util, you should look at the
+Java Language Specification.
+
+</P>
+<P>
+Here, however, is a list of specs, in order of canonicality:
+
+</P>
+
+<OL>
+<LI>
+
+<A HREF="http://java.sun.com/docs/books/jls/clarify.html">Clarifications and Amendments to the JLS - 1.1</A>
+<LI>
+
+<A HREF="http://java.sun.com/docs/books/jls/html/1.1Update.html">JLS Updates - 1.1</A>
+<LI>
+
+<A HREF="http://java.sun.com/docs/books/jls/html/index.html">The 1.0 JLS</A>
+<LI>
+
+<A HREF="http://java.sun.com/docs/books/vmspec/index.html">JVM spec - 1.1</A>
+<LI>
+
+<A HREF="http://java.sun.com/products/jdk/1.1/docs/guide/jni/spec/jniTOC.doc.html">JNI spec - 1.1</A>
+<LI>
+
+<A HREF="http://java.sun.com/products/jdk/1.1/docs/api/packages.html">Sun's javadoc - 1.1</A>
+(since Sun's is the reference implementation, the javadoc is
+documentation for the Java platform itself.)
+<LI>
+
+<A HREF="http://java.sun.com/products/jdk/1.2/docs/guide/jvmdi/jvmdi.html">JVMDI spec - 1.2</A>,
+<A HREF="http://java.sun.com/products/jdk/1.2/docs/guide/jni/jni-12.html">JNI spec - 1.2</A>
+(sometimes gives clues about unspecified things in 1.1; if
+it was not specified accurately in 1.1, then use the spec
+for 1.2; also, we are using JVMDI in this project.)
+<LI>
+
+<A HREF="http://java.sun.com/products/jdk/1.2/docs/api/frame.html">Sun's javadoc - 1.2</A>
+(sometimes gives clues about unspecified things in 1.1; if
+it was not specified accurately in 1.1, then use the spec
+for 1.2)
+<LI>
+
+<A HREF="http://developer.java.sun.com/developer/bugParade/index.html">The Bug Parade</A>:
+I have obtained a ton of useful information about how things
+do work and how they *should* work from the Bug Parade just
+by searching for related bugs. The submitters are very
+careful about their use of the spec. And if something is
+unspecified, usually you can find a request for specification
+or a response indicating how Sun thinks it should be
+specified here.
+</OL>
+
+<P>
+You'll notice that in this document, white papers and
+specification papers are more canonical than the JavaDoc
+documentation. This is true in general.
+
+</P>
+
+
+
+<H1><A NAME="SEC13" HREF="jcl-hacking.html#TOC13">Directory and File Naming Conventions</A></H1>
+
+<P>
+The $classpath directory structure is laid out in the following manner:
+
+</P>
+
+<PRE>
+jcl
+ |
+ |----&#62;java
+ | |
+ | |--&#62;awt
+ | |--&#62;io
+ | |--&#62;lang
+ | |--&#62;util
+ | | |
+ | | |---&#62;zip
+ | | |---&#62;jar
+ | |--&#62;net
+ | |--&#62;etc
+ |
+ |----&#62;gnu
+ | |
+ | |--&#62;java
+ | |
+ | |--&#62;awt
+ | |--&#62;lang
+ | |--&#62;util
+ | | |
+ | | |--&#62;zip
+ | |--&#62;etc
+ |
+ |----&#62;native
+ | |
+ | |--&#62;java.io
+ | |--&#62;java.lang
+ | |--&#62;java.net
+ | |--&#62;java.util.jar
+ | |--&#62;etc
+ |
+ |----&#62;test
+ | |
+ | |--&#62;java.io
+ | |--&#62;java.lang
+ | |--&#62;etc
+ |
+ |----&#62;compat
+ |
+ |--&#62;java.io
+ |--&#62;java.lang
+ |--&#62;etc
+
+</PRE>
+
+<P>
+Here is a brief description of the toplevel directories and their contents.
+
+</P>
+<DL COMPACT>
+
+<DT><B>java</B>
+<DD>
+Contains the source code to the Java packages that make up
+the core class library. Because this is the public interface to Java,
+it is important that the public classes, interfaces, methods, and variables
+are exactly the same as specified in Sun's documentation. The directory
+structure is laid out just like the java package names. For example, the
+class java.util.zip would be in the directory java/util/zip.
+
+<DT><B>gnu/java</B>
+<DD>
+Internal classes (roughly analogous to Sun's sun.* classes)
+should go under the gnu/java directory. Classes related to a particular
+public Java package should go in a directory named like that package. For
+example, classes related to java.util.zip should go under a directory
+gnu/java/util/zip. Sub-packages under the main package name are allowed.
+For classes spanning multiple public Java packages, pick an appropriate
+name and see what everybody else thinks.
+
+<DT><B>native</B>
+<DD>
+This directory holds native code needed by the public
+Java packages. Each package has its own subdirectory, which is the
+"flattened" name of the package. For example, native method implementations
+for java.util.zip should go in native/java.util.zip.
+
+<DT><B>test</B>
+<DD>
+This directory contains test packages written for DejaGnu used
+to test releases of $classpath. The test scripts for a given package go in the
+subdirectory that is the same as the "flattened" name of the package. For
+example, test scripts for java.util.zip should go in test/java.util.zip
+
+<DT><B>compat</B>
+<DD>
+This directory contains misc scripts designed not to
+test an implementation, but to determine various things about Sun's
+reference implementation that are needed in order to write a compatible
+package. Each package has its own directory which is the "flattened"
+package name. For example, compatibility scripts for java.util.zip
+go in compat/java.util.zip
+</DL>
+
+<P>
+Each person working on a package get's his or her own "directory
+space" underneath each of the toplevel directories. In addition to the
+general guidelines above, the following standards should be followed:
+
+</P>
+
+<UL>
+
+<LI>
+
+Classes that need to load native code should load a library with the
+same name as the flattened package name, with all periods removed. For
+example, the native library name specified in LoadLibrary for
+java.util.zip would be "javautilzip".
+
+<LI>
+
+Each package has its own shared library for native code (if any). The
+actual library name to be built will depend on the target JVM.
+
+<LI>
+
+The main native method implementation for a given method in class should
+go in a file with the same name as the class with a ".c" extension.
+For example, the implementation of the native methods in
+java.util.InetAddress would go in native/java.net/InetAddress.c.
+"Internal" native functions called from the main native method can
+reside in files of any name.
+</UL>
+
+<P><HR><P>
+This document was generated on 14 July 1998 using the
+<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
+translator version 1.52.</P>
+</BODY>
+</HTML>
diff --git a/doc/html/mailing-list.html b/doc/html/mailing-list.html
new file mode 100644
index 000000000..ebc959e1a
--- /dev/null
+++ b/doc/html/mailing-list.html
@@ -0,0 +1,72 @@
+<html>
+<head>
+<title>Mailing Lists - GNU $classpath Project</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<div align="center">
+<table border="0">
+ <tr valign="center">
+ <td><a href="http://www.gnu.org/"><img src="gnu-head-sm.jpg"
+ width="129" height="122" alt="GNU Head Logo" border="0"></a>
+ <td><h1>GNU $classpath</h1>
+ <p><h3>Mailing Lists</h3>
+</table>
+
+<hr width="75%">
+<table border="0" cellpadding="4" cellspacing="4">
+ <tr valign="top">
+ <td bgcolor="#FFFFC8">
+ <p align="center">
+ <b>$classpath Pages</b>
+ <p align="left">
+ <li><a href="classpath.html">Home Page</a>
+ <li><a href="status.html">Who's Working on What</a>
+ <li>Mailing Lists
+ <li><a href="jcl-hacking.html">Hacker's Guide</a>
+ <p>
+ <b>Official Specs</b>
+ <li><a href="http://java.sun.com">JavaSoft</a>
+ <p>
+ <b>Free JVM's</b>
+ <li><a href="http://www.hungry.com/products/japhar/">Japhar</a>
+ <li><a href="http://www.transvirtual.com/">Kaffe</a>
+ <td>
+ There is currently only one general discussion list for
+ $classpath. To subscribe, send a message with a Subject of
+ "subscribe" to <a
+ href="mailto:classpath-request@gnu.org?subject=subscribe">classpath-request@gnu.org</a>.
+ To unsubscribe, send a message to the same address with a
+ Subject of "unsubscribe". To send a message to the list, mail
+ it to <a
+ href="mailto:classpath@gnu.org">classpath@gnu.org</a>.
+ <p>
+ If you have any problems subscribing to the list, please send
+ an email to <a href="mailto:rao@gnu.org">rao@gnu.org</a>.
+ <p>
+ An archive of the mailing list messages will be back up shortly
+ after I figure out how to set it up on our new web server.
+</table>
+
+<div align="left">
+
+<hr>
+Webmaster: <a href="mailto:arenn@urbanophile.com">webmaster@classpath.org</a>
+<p>
+Copyright &copy; 1998 Free Software Foundation, Inc.<br>
+59 Temple Place - Suite 330, Boston, MA 02111 USA<br>
+This web page developed by Aaron M. Renn
+(<a href="mailto:arenn@urbanophile.com">arenn@urbanophile.com</a>)
+<p>
+Verbatim copying and distribution is permitted in any medium,
+provided this notice is preserved.
+<p>
+Last updated: July 15, 1998 by rao
+
+<hr>
+<b>Just Say No to Frames, Ads, and Animated GIF's</b>
+
+</body>
+</html>
+
diff --git a/doc/html/status.html b/doc/html/status.html
new file mode 100644
index 000000000..6e9209731
--- /dev/null
+++ b/doc/html/status.html
@@ -0,0 +1,192 @@
+<html>
+<head>
+<title>Implementation Status - GNU $classpath Project</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<div align="center">
+<table border="0">
+ <tr valign="center">
+ <td><a href="http://www.gnu.org/"><img src="gnu-head-sm.jpg"
+ width="129" height="122" alt="GNU Head Logo" border="0"></a>
+ <td><h1>GNU $classpath</h1>
+ <p><h3>Package Implementation Status</h3>
+</table>
+
+<hr width="75%">
+<div align="left">
+<table border="0" cellpadding="4" cellspacing="4" width="100%">
+ <tr valign="top">
+ <td bgcolor="#FFFFC8">
+ <p align="center">
+ <b>$classpath Pages</b>
+ <p align="left">
+ <li><a href="classpath.html">Home Page</a>
+ <li>Who's Working on What
+ <li><a href="mailing-list.html">Mailing Lists</a>
+ <li><a href="jcl-hacking.html">JCL Hacker's Guide</a>
+ <p>
+ <b>Official Specs</b>
+ <li><a href="http://java.sun.com">JavaSoft</a>
+ <p>
+ <b>Free JVM's</b>
+ <li><a href="http://www.hungry.com/products/japhar/">Japhar</a>
+ <li><a href="http://www.transvirtual.com/">Kaffe</a>
+ <td>
+ Note that the initial target version is Java 1.1
+ <p>
+ <table border="2" width="100%" cellpadding="0" cellspacing="0">
+ <tr bgcolor="#DDDDDD" align="center">
+ <td><b>Package</b></td>
+ <td><b>Component</b></td>
+ <td><b>Who</b></td>
+ <td><b>Status</b></td>
+ <tr>
+ <td>java.applet</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.awt</td>
+ <td>GTK Peers</td>
+ <td><a href="mailto:dsouth@squirrel.net">Doug South</a></td>
+ <td>In Progress</td>
+ <tr>
+ <td>java.awt</td>
+ <td>All the Rest</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.awt.datatransfer</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr>
+ <td>java.awt.event</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.awt.image</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr>
+ <td>java.beans</td>
+ <td>&nbsp;</td>
+ <td><a href="mailto:jkeiser@iname.com">John Keiser</a></td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.io</td>
+ <td>Serialization</td>
+ <td><a href="mailto:gcb@cs.duke.edu">Geoff Berry</a></td>
+ <td>In Progress</td>
+ <tr>
+ <td>java.io</td>
+ <td>All the Rest</td>
+ <td><a href="mailto:arenn@urbanophile.com">Aaron M. Renn</a></td>
+ <td>In Progress</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.lang</td>
+ <td>&nbsp;</td>
+ <td><a href="mailto:rao@gnu.org">Paul Fisher</a></td>
+ <td>In Progress</td>
+ <tr>
+ <td>java.lang.reflect</td>
+ <td>&nbsp;</td>
+ <td><a href="mailto:jkeiser@iname.com">John Keiser</a></td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.math</td>
+ <td>&nbsp;</td>
+ <td><a href="mailto:rao@gnu.org">Paul Fisher</a></td>
+ <td>BigInteger Complete</td>
+ <tr>
+ <td>java.net</td>
+ <td>&nbsp;</td>
+ <td><a href="mailto:arenn@urbanophile.com">Aaron M. Renn</a></td>
+ <td>First Pass Complete</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.rmi</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr>
+ <td>java.rmi.dgc</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.rmi.registry</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr>
+ <td>java.rmi.server</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.security</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr>
+ <td>java.security.acl</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.security.interfaces</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr>
+ <td>java.sql</td>
+ <td>&nbsp;</td>
+ <td><a href="mailto:pixel@bitmechanic.com">James Cooper</a></td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.text</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr>
+ <td>java.util</td>
+ <td>Collections API</td>
+ <td><a href="mailto:stuart.ballard@mcmail.com">Stuart Ballard</a></td>
+ <td>&nbsp;</td>
+ <tr bgcolor="#DDDDDD">
+ <td>java.util</td>
+ <td>All the Rest</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ <tr>
+ <td>java.util.zip</td>
+ <td>&nbsp;</td>
+ <td>No One</td>
+ <td>&nbsp;</td>
+ </table>
+</table>
+
+<div align="left">
+
+<hr>
+Webmaster: <a href="mailto:arenn@urbanophile.com">webmaster@classpath.org</a>
+<p>
+Copyright &copy; 1998 Free Software Foundation, Inc.<br>
+59 Temple Place - Suite 330, Boston, MA 02111 USA<br>
+This web page developed by Aaron M. Renn
+(<a href="mailto:arenn@urbanophile.com">arenn@urbanophile.com</a>)
+<p>
+Verbatim copying and distribution is permitted in any medium,
+provided this notice is preserved.
+<p>
+Last updated: July 15, 1998 by rao
+
+<hr>
+<b>Just Say No to Frames, Ads, and Animated GIF's</b>
+
+</body>
+</html>