JDK -- Java Developer's Kit (Free)
Java for Windows.
- Sun's JDK
- JDK
1.1.7 from IBM. As of 4/99, this supposedly outperformed both the
Sun and the Microsoft 1.1 JVM's by 20% on most benchmarks. Uses
similar technology to Sun's HotSpot, but is for Java 1.1, whereas
HotSpot is for Java 1.2/1.3 (aka Java 2).
Java for MacOS
Linux
Netscape
Navigator/Communicator (Mozilla). Version 6 supports JDK 1.3.
Version 4.06 and later supports JDK 1.1.
Microsoft
Internet Explorer. Supports JDK 1.1.
HotJava from
Sun. Supports JDK 1.1.
Swing
1.03.
Swing
1.1.
Java Runtime
Environment (JRE) for Windows 95/98/NT and Solaris. This lets you
run Java but not compile it (javac), generate documentation (javadoc),
etc. A smaller footprint for delivery-only platforms.
Java Plugin
(formerly "Activator"). Lets you install Sun's Java VM in Netscape
or IE, but you can't use the standard APPLET tag (and thus
your code won't run on systems without the plugin). You can have Java
1.1 in Netscape and IE version three, or even have Java 1.2.
Java Servlets.
An efficient, flexible, and portable alternative to CGI. (Also see the
Apache Tomcat
usage page).
JavaServer Pages
(JSP) Portable, powerful alternative to ASP or ColdFusion. (Also see
the Apache
Tomcat usage page).
Java IDL.
Java3D.
Example Java Applets and
href="http://www.corewebprogramming.com/">Core Web Programming; all
are freely available for unrestricted use.
A Debugging Web Server. This separate
page gives an HTTP server in Java that echos back all headers sent to it.
Useful when doing CGI programming, for debugging FORMs and verifying headers
sent by browsers and other clients.
Images as Components Please note that these Java
classes work around AWT programming limitations in Java 1.02 and 1.1. With
Swing, much better programming options are available. For that, please see my
tutorial on Swing
programming.
ImageLabel.java
A Java class that creates a Component containing an image. Like the
Label class, it can get positioned by the layout manager and will get
repainted automatically.
ImageLabelTest.html
ImageLabel.html
ImageButton.java
A Java button class use Swing and
JButton.)
ImageButtons.html
ImageButton.html
Icon.java
A Java class built on ImageLabel that supports drag and drop for ImageLabels. I.e. draggable pictures/icons.
IconTest.html
Icon.html
GraphicsUtil. A Java class that adds pen width arguments to the
drawing methods of java.awt.Graphics. Also creates drawCircle and fillCircle
methods, adds optional Color arguments to each of the drawing methods, and
adds an optional Font argument to drawString and drawChars. Documentation is
at GraphicsUtil.html,
and the Java source is at GraphicsUtil.java.
A simple on-line demo can be viewed at GraphicsUtilDemo.html.
CGI Programming in Java This separate page
summarizes the use of Java for CGI programming: how to use Java applets to
talk to CGI programs via either GET or POST, and how to write CGI programs in
Java. Includes on-line examples, a CGI form parser in Java, and an HTTP cookie
value parser in Java.
Accessing Java from JavaScript. This separate
page summarizes the ways to call Java from JavaScript in Netscape 3 and 4.
These programming approaches also generally work in the Windows version of
IE4.
Accessing JavaScript from Java. This separate
page summarizes the ways to call JavaScript from Java in Netscape 3 and 4.
These programming approaches also generally work in the Windows version of
IE4.
Slider. A horizontal slider combining a Scrollbar and a TextField.
You can drag the scrollbar or type into the TextField; either way, both stay
in sync. Works the same on both Java 1.0 and 1.1, despite differences in how
Scrollbar interprets the max value in the two cases. Also tries to work around
some Windows 95/NT Scrollbar bugs. The source code is available in Slider.java,
with documentation at Slider.html.
For an on-line example, see SliderApplet.html.
Mouse and Keyboard Event Reporter An applet that reports all mouse
and keyboard events in a textfield. An on-line demo is at Events.html,
with source code at Events.java
(which uses EventPanel.java).
Whiteboard A very simple whiteboard that illustrates Java 1.1 event
handling by letting you type text and draw freehand. An on-line demo is at Whiteboard2.html,
with Java source at Whiteboard2.java
(which uses SimpleWhiteboard2.java).
Java 1.02 version is available at Whiteboard.html,
with Java source at Whiteboard.java
(which uses SimpleWhiteboard.java).
Java 1.1 Key Listeners A demonstration of Java 1.1 event-handling;
two text areas where you can type into either and get the same result in both.
An on-line demo (Java 1.1 browsers only) is at Mirror.html,
with source code at Mirror.java.
Java 1.1 Inner Classes and Mouse Events A simple demo of inner
classes to handle mouse events in Java 1.1 (click to draw circles). An on-line
demo (Java 1.1 browsers only) is at Circles.html,
with source code at Circles.java.
Lightweight Components in Java 1.1 A demonstration of the fact that
lightweight components in Java 1.1 can be transparent. An on-line demo (Java
1.1 browsers only) is at BetterCircleTest2.html
(compare to the opaque heavyweight components at CircleTest2.html).
Source code is at BetterCircleTest2.java
(which uses BetterCircle.java).
Source for the heavyweight version is at CircleTest2.java
(which uses Circle.java).
Lightweight Containers in Java 1.1 A demonstration of the fact that
lightweight containers in Java 1.1 can be transparent. An on-line demo (Java
1.1 browsers only) is at LightPanel.html
(compare to the opaque heavyweight panel at HeavyPanel.html).
Source code is at LightPanel.java
(source for the opaque heavyweight panel is at HeavyPanel.java).
Frames that Can Be Closed Java Frames that actually (gasp) close
when the user instructs them to. I use these as the starting points for all my
graphical applications.
ScrollPanes in Java 1.1 A simple example of a ScrollPane: ScrollPaneTest.java.
Built on CloseableFrame.java.
Creating Menus in Frames An illustration of pulldown menus: ColorMenu.java.
Built on QuittableFrame.java.
Serializing Windows in Java 1.1 Creates a Frame that you can
stretch, move around, and add circles to by clicking the mouse. If you save it
to disk, then running the application in a later session automatically
restores it to previous configuration. Source is at SavedFrame.java,
which uses CirclePanel.java
and is built on CloseableFrame.java.
Rolling Your Own Popup Menus in Java 1.02 A way to create tolerable
(but not great) popup menus in Java 1.02 by extending Window.
Really intended for applications, since most browsers do not let you discover
the absolute location of the mouse. However, the on-line
demo works on appletviewer, and works somewhat on other browsers if the
window is near the upper-left corner of the screen. Source code is at ColorPopupTest.java,
which uses ColorPopup.java,
and Popup.java.
Using FileDialog An example that uses a FileDialog to select a file
name, then loads the contents of the file into a TextArea. Source is at DisplayFile.java,
and is built on QuittableFrame.java.
Network Programming Note that there are PostScript reference
sheets which provide explanation that these examples illustrate.
ShowHTML. A Netscape3-specific way of generating HTML on-the-fly or
reading it from a stream and sending it to the browser. Defines
showPage(applet, htmlString) and showPage(applet, htmlString, frameName)
methods. Source is available at http://www.apl.jhu.edu/~hall/java/CGI/ShowHTML.java,
and a test page that illustrates it is at .../TestHTML.html.
Exec. A class that simplifies executing remote commands from Java
applications. Source code is at Exec.java,
with documentation at Exec.html.
JavaStub. An application that simplifies prototyping of applets by
generating stub files for you. Given a partial filename like HelloWorld, it
generates a mostly blank but working class HelloWorld.java which can be run as
either an applet or an application. It also generates
HelloWorld.html with an APPLET statement that loads HelloWorld.class.
Documentation is at http://www.apl.jhu.edu/~hall/java/JavaStub.html,
and the code is at .../JavaStub.java
and .../JavaStub.class.
NQueens. Solves the N-Queens problem for N from 4 to 60 in linear
time (constant time per queen). The N-Queens problem involves placing N tokens
(chess queens) on an NxN grid such that none share a row, column, or diagonal.
On an 8x8 grid this amounts to placing 8 queens on a chess board such that
none threaten each other. Although this problem is commonly used to illustrate
search techniques, there is a common misconception that search is
required to find a solution (although search is required to find
all solutions). Algorithm adapted from ACM SIGART Bulletin. Run
it by loading http://www.apl.jhu.edu/~hall/java/NQueens.html.
The source code is at .../NQueens.java.
TrackerUtil. A small class that uses MediaTracker to let you use a
single method call to load one or more images, waiting until they are done
loading before continuing. Documentation is at TrackerUtil.html,
and the code is at TrackerUtil.java.
|