Java Glossary

Last updated by Roedy Green ©1996-1999 Canadian Mind Products.

Stuck in a frame? Click here to break out.

A

abstract
A class that is missing definitions for one or more methods. You can't thus create an object of that class. You must first create a subclass and provide definitions for the abstract methods. Unlike interfaces, abstract classes may implement some of the methods.
abstract factory
a design pattern where you create several objects and their inter-relationships with a single command. See design patterns.
Abundance
A DOS-based experimental computer language dating back from 1981 that in many ways is still more advanced than Java.
accessor methods
Normally you don't make variables in your class public. Instead you provide public set and get methods for the variable. This lets you then later change the way the variable is stored, or add extra validation checks.
ACK
An abbreviation of the control code 'Acknowledge'. Some file transfer protocols send an ACK each time a block of error free data is received. See also NAK.
Acknowledgements
I could not possibly have written this article without a lot of help from many BIXen, especially Thomas Wagner of Germany and Jan Sinstadt of Switzerland. The information on the various MNP levels came from the Cardinal 2400 BPS MNP modem manual. The information on the more recent standards came from Kelly Boan. Stephen Satchell provided information on 28K modems. Wimsey Information Services provided much of the information on Internet at a lecture. Alan Clarke of Hayes provided information on some of the more obscure CCITT standards. David Gleason provided information on how Java filenames work on GCOS. Chris Adamson provided information on signing keys and the Mac. Patricia Shanahan provide the fast power algorithm. There are also credits in the Unmaintainable Code essay and the Gotchas essay.
Acme
A clone of Javasoft's Web Server formerly known as Jeeves. See Servlet.
Download_Acrobat
Acrobat
Adobe's free viewer for PDF files. PDF gives much finer control over placement and look of the text and images than you have with HTML. PDF files are much more compact than the equivalent bit map files because they contain PostScript ASCII text which is rendered in the viewer. Adobe sells tools to create PDF files from scanned images and word processing documents.
action
a method that is invoked when some specific type of event occurs, such as a mouse click or keystroke. It returns true if it was able to completely handle the event. If it cannot handle the event, it may invoke super.action to see if the superclass method can deal with it. If that too fails it can return false to indirectly request that the event object be given to the parent object's handleEvent method to deal with it. Normally an action method will return false. Unless it returns false, the event percolation will stop dead, and the event will not return back to the native GUI via the original peer object.
ActionListener
An interface that implements an actionPerformed(ActionEvent e) method to field the events generated when somebody clicks a button, or selects an item on a menu.
Activator
The Activator is now officially called the Java Plug-In, but the old name will be the one most people use for a while. See Java Plug-In.
ActiveX
Microsoft's Windows-specific non-Java technique for writing applets. ActiveX applets take considerably longer to download than the equivalent Java applets, however, they more fully exploit the features of Windows 95.
Ada
The US Department of Defense's language, Ada, has been ported to generate JVM code. It offers C++-like templates and extremely rigid type checking.
adapter
An adapter is one of the classic design patterns. It is also a class in Java that implements an interface with a set of dummy methods. You can then subclass the adapter class and override just the methods you need. If you implemented the interface directly, you would have to write all the dummy methods yourself. Most commonly an adapter is used to help you rapidly construct your own Listener class to field events. My extending an adapter class, with KeyAdapter, FocusAdapter, WindowAdapter etc. you don't have to write methods for events you are not interested in handling. See design patterns.
add
add a child component to a parent, e.g. add a button to a dialog box. See also remove.
addnotify
this means create a peer object for a component in the style the native supporting GUI likes. A component's addNotify method gets called when it has been added to a container. This has nothing whatsoever to do with notifying observers. See observer.
ADSL
Asymmetric Digital Subscriber Line technology, a high-speed transmission method design technique. The bandwidth is different in each direction, though logically full duplex. It runs about 500,000 bits per second. In contrast a T1 line that also runs over a copper pair is about three times faster at 1,554,000 bits per second. In contrast an cable modem is 28,000,000 bps, however you share that link with other subscribers. See Cobra.
advertisements
You can have advertisements on your site to generate revenue. I find it tacky and have so far avoided it. Unfortunately, there is still no other practical technique for generating revenue from a website. You can't even charge a penny admission. You can read up on how ads work at the BurstMedia FAQ.
Aelfred
A free Java-based XML parser. It takes a DTD definition document of the syntax of your specialised SGML/HTML-like language and then parses input written in your markup language. Takes 24K. See XML.
AFAIK
Internet jargon for As Far As I Know.
AFC
Microsoft's proprietary GUI interface for Java to the Windows GUI. The main disadvantage of using is that it is supported on only one platform. See IFC, JFC, Swing.
aglet
A mobile agent that conforms to a set of security restrictions. See mobile agent, Applet.
AIX
IBM's operating system for its RISC workstation. It supports Java via the Hursley Park compiler.
algebraic data types
Algebraic data types are found in functional languages like Miranda and Haskell. Pizza, a Java superset, also has them. What are they? If you find out, please tell me. Maybe they are rational fractions where you keep both a numerator and denominator.
algorithms
Algorithms are like computer programs, but expressed in a more general way. You have to fill in the details to convert them into working programs. They are general problem solving tools you can apply to particular problems, there are algorithms for sorting and organising for fast retrieval. There are standard algorithms for traversing trees, and discovering islands of connection in a graph of edges and nodes.
Author Title ISBN approx
cost
Notes

Donald Knuth Art Of Computer Programming 0-201-48541-9 $135 The classic book on algorithms. Volumes 1, 2 and 3. It is a dense, authorative, academic series of books. You probably would need some university level computer science or mathematics training to tackle it.

Mitchell Waite and Robert Lafore Data Structures & Algorithms in Java 1-57169-095-6 $35

Glen Rowe An Introduction to Data Structures and Algorithms With Java 0-13-857749-8 $47

Clifford A. Shaffer Practical Introduction to Data Structures and Algorithm Analysis : Java Edition 0-13-660911-2 $58

Scott Robert Ladd Java Algorithms 0-07-913696-6 $32

Thomas A. Standish Data Structures in Java 0-201-30564-X $53 It is an advanced book which would be tough slogging for someone without a CS degree.

Clemens Szyperski Component Software : Beyond Object-Oriented Programming 0-201-17888-5 $48 Discusses the pitfalls of componentware.

Alphaworks
An IBM subsidiary that makes an XML parser. It also makes a program that lets you produce executables for installing Java apps for a variety of platforms. See installation, XML.
Altavista Discovery
Digital/Altavista's search engine for the web, and also a personal search engine you can use on your own hard disks. It can be quite useful for finding the needle code you are looking for in a giant haystack.
amanuensis
An amanuensis is an intelligent scribe who helps you compose words or music. You don't have to give her all the details. She is quite capable of filling them in for you. I have written two amanuensis applets to help you write Java code. You give them just a few bits of information about what you want and they fill in the details generating the reams of code Java requires to specify the same thing.

See the File IO amanuensis to help you write code to open, read, write and close files.

See the Conversion amanuensis to help you convert any of the 16 basic types in Java into any of the others.

The Quoter Amanuensis helps you write HTML, especially HTML about HTML or Java. It converts HTML's reserved characters to their special & é &copy etc. forms.

The ISBN Amanuensis validates ISBN (International Standard Book Numbers) numbers by ensuring the check digit matches. Also inserts dashes in the right places. Used for tidying and proofreading references to ISBNs in HTML or other documenatation. Typical valid ISBNs look like this: 0-13-625666-X, 0-9600688-8-0 or 1-56592-269-7.

There is also the Pathways Amanuensis a simple personal psychological advisor.

Ther is also the Learn To Count program that teaches you how to count in Bahasa Indonesia, Binary, Decimal, Dutch (modern, old and banker's), English (British, North American and ordinals), Esperanto, French, German, Hexadecimal, Icelandic, Martian, Metric Prefixes (grams), Norwegian, Octal, Polish, RAM (bytes), Roman Numerals, Swedish or Tagalog. It will convert any number up to a 9 quintillion into words.

And last but not least, there is also Wassup a quasi-amanuensis to tell you about the Java system property environment.

Amazon logo
Amazon.com
An enormous online bookstore that carries many Java related books. If you visit them by clicking on the logo, I get a 5% commission on any books, tapes or CDs you buy. The main disadvantages of shopping this way, is, if you elect standard ground shipping, you can wait 4 to 10 weeks for delivery and you can peruse the entire books. The main advantage is the huge selection. If you click the logo, you will be taken to the store. To search by ISBN, click book search then ISBN when you get there or go directly to ISBN search. To do searches combining incomplete information about author, title etc. click book search then power search once you get there. See Personal Bookshelf.
Ameran
a company that provides JVM interpreters for small embedded computers. See JSpring.
animation
see double buffering.
anonymous classes
A type of inner class that has no name. You define it, and create an object of that type as a parameter all in one line. Used for creating simple delegate callback objects. The syntax is strange. It does not use the keywords class, implements or extends. You can refer to this of the outer class via MyOuterClass.this. You can refer to the outer class's methods by myOuterInstanceMethod() or MyOuterClass.this.myOuterInstanceMethod(); Anonymous inner classes are often used in setting up listeners. See this sample source code.. See inner class.
ANSI
The American National Standards Institute. The creators of the ASCII character set.
ANTLR
A parser, formerly known as PCCTS that generates Java source code. iDoc uses it. The official documentation I found quite daunting. I prodded Scott Stanchfield to write a tutorial based on the one he wrote for PCCTS.
API
Application Programmer Interface. The set of public methods a package presents to the world. In non-Java situations, it refers to the visible part of the code in some package you interact with.
appleseeding
Creative people enjoy cross-pollinating ideas from different spots on the space/time/belief-space continuum. Some ideas don't transplant well, hence Victor Hugo's notion that "Nothing is more powerful than an idea whose time has come." A extraordinarily creative person might plant 100,000 idea seeds over her lifetime. There is no time to plant each seed individually, wait to see if it sprouts, and then nurse it to maturity. If you want an orchard, you have to plant as many seeds as you can, and trust each individual seed to take care of itself. The term comes from the American legend of Johnny Appleseed, a man who spent his life planting appleseeds, leaving thousands of orchards in his wake. My Mom told me that inventors are not the people clever at figuring out how to do something, but those clever enough to perceive the need to do it. See seconder, optioning, pee, idea technology.
Applet
a partial Java application program designed to run inside the womb of a WEB browser, with help from some predefined support classes. To make them very safe to run, even when they were composed by teens with the morals or skill of Beavis and Butthead, Applets are severly restricted:
  1. They are not allowed to print.
  2. They are not allowed to write to serial ports.
  3. Applets are not permitted to read or write files. They are not even allowed to look in a directory or test for the existence of a file. There is loophole, if you have the user's co-operation. See this sample Applet.
  4. No talking to strangers. Applets may only communicate with the server they were spawned from. If they were loaded from a local disk, they can't talk to any webserver. They could send/receive email to/from a different host, but only via the home host. Signed Applets can bypass this restriction by doing a PrivilegeManager.enablePrivilege("UniversalConnect"); to turn on the ability to talk to any host.
  5. No calling native methods.
  6. No spawning external programs.
Standalone Java applications are not so limited. Exactly what the limitations are is controlled by the security manager in the browser. If the user installs an alternate security class, the Applet may have more powers. Signed applets in JDK 1.1 in IE4 are allowed to print. The security restrictions are controlled entirely by the browser. There is nothing to stop you from writing a non-conforming browser that has quite different security restrictions for Applets.
Programmers bitterly complain about these restrictions. The restrictions protect the end user from malicious web applets they might encounter on the web. Without such protection, vicious applets could destroy the user's hard disk, print reams of paper, phone out on a spare serial port and rack up long distance bills, go sniffing on the LAN for the company books... You don't want to give those powers to psychotic strangers -- those same people who stay up late at night writing viruses.
Applets are invoked to run in browsers by the <Applet...> tag. Applets won't work if you load them directly with your browser as if they were web pages! The HTML commands for firing up an Applet are exceedingly picky. It matters whether you have .class or not. I suggest you look at the files that come with the Conversion Amanunesis to see how to run an Applet/Application with/without jars, locally, on a web site, with various browsers and run times. Here is the basic structure:
HTML Tag Comments
<Applet
code="MyClass.class" The name of the class file for the Applet. Make sure the case and name exactly match the name of the *.java file, *.class file, and class name. For a class in a package this would have dots in it, e.g. cmp.MyPackage.Myclass.class, but it would not have any directory qualification. You are not allowed to specify an absolute URL or absolute fully qualified hard disk filename.
height="240" height of entire Applet display in pixels
width="330" width of entire Applet display in pixels
archive="Everything.jar,Sub/MoreStuff.zip" Resource file, classes etc. Your ARCHIVE parameter must have a list of the absolute or relative jar files, separated by commas. If you have too little or too much qualification, or if you fail to use the file naming conventions of your server, you will be in trouble. You are probably best to use absolute urls or fully qualified hard disk file names. Whether the archive is supposed to be relative to the current HTML directory, the CODEBASE, or all elements of the classpath is unclear.
codebase="http://mydomain.com/" I suspect CODEBASE is simply broken in the current implementations. Theoretically it is the absolute or relative URL/directory where class files are, like a one-element classpath. In practice, I have found your CODEBASE parameter must have an absolute http://-style reference to the base directory where the code is stored. For a local hard disk, the only thing I could get to work on NT with all browsers and Appletviewers is leaving the CODEBASE out entirely which causes the CODEBASE to default to the same directory as where the enclosing HTML page was loaded from. You may find for your platform you have to code it something like this: ///C|//MyDir/ or C:\MyDir\. I also further suspect that some browsers will take the a relative CODEBASE as relative to each element of the CLASSPATH, not relative to the current HTML directory.
vspace="10" pixel width of border above and below the Applet
hspace="10" pixel width of border left and right of the Applet
align="LEFT" how this Applet aligns, treated like a image
alt="Sorry no Java" what to display if no Java interpreter available
name="receiver" Name for this Applet so that other applets can communicate with it. Other applets would do a getAppletContext().getApplet("receiver") to get a handle on this Applet.
> Note all that stuff above inside the <Applet ... <
<param name="favouriteColour" value="orange"> The param statements are Java's ode to verbosity. They pass information to the Applet. There can be as many param statements as you like.
<img SRC="images/NoJava4U.jpg"> image to display if no Java interpreter available.
</Applet> and finally the ending tag for the
A minimal Applet invocation might look like this:
<APPLET CODE="MyApplet.class" WIDTH="330" HEIGHT="240"></APPLET>
Make sure you get your <s and >s in the right places. By adding the following method to your Applet, you can allow it be run either as an Applet or as an application. If your Applet were called MyApplet, here is the code to add to the MyApplet class to make it ALSO into an application: Your Applet can get hold of the parameters in the HTML. getParameter("favouriteColour") will return the String "orange". When you write an Applet often you will override some of the following methods: init(), start(), stop(), destroy() and paint(Graphics g). See application, aglet, servlet.
AppletViewer
A miniature browser used for testing Applets. You can't browse HTML with it, but you can run Applets. It insists on being given the name of an HTML file, not the class file directly. The other trick is passing it a CLASSPATH. You need to give it two -J commands! Note there may not be a space after the -J command there way there is after most switches.
application server
The real problem is that the term "application server" is overloaded to mean a lot of different things -- it can mean "transactional middleware server" (which is how many of the database companies want you to think of it), or it can refer to tools like Cold Fusion that provide an environment for hosting business objects and supporting client/server application development, or it can refer to systems like Dynamo that are designed specifically to serve dynamically generated content over the Web, and that provide frameworks for organizing and managing large numbers of application components in very large scale applications, for scalability, for session-tracking and user-profiling, for automatic session failover, etc. See servlet, Dynamo, dbAnywhere, Cold Fusion, EJB.
Archie
Internet speak for a program that will search the globe to find out which computers have copies of a program you want to download. An Archie sends requests to a few computers that maintain catalogs. It does not actually have to poll every computer in the world.
archive
In the context of ZIP files, archiving refers to collecting several files together in one carrier *.ZIP file, the way class.zip collects various classes in one file. Archiving does not necessarily imply compression, but rather often connotes uncompressed. See JAR, GZIP, ZIP.
arctangent
Java has two functions for computing arctangent: java.lang.Math.atan and atan2. They work in radians. The result of atan will always be range -pi/2 to +pi/2. The result of atan2 will be in in the range -pi to +pi in the quadrant consistent with the signs of the two arguments.
arguments
In the definition of a method, you describe the arguments to be passed as parameters. When you invoke the method, the data provided are called the parameters.
arity
In a tree structure, how many branches a node in the tree has. For an operator, how many operands it uses.
ARQ
Automatic Repeat Request. If a transmission is garbled, some modems can automatically request that the garbled block be resent. MNP and V.42 are examples of such error-correcting protocols.
array
A fixed length block of primitives or references. Java never stores blocks of repeating structures. It always creates blocks of references to separately stored structures. Novices make two common errors: failing to allocate space for the array and failing to allocate objects for each cell. Java automatically initialises arrays of primitives to 0 and arrays of references to null. It won't create any objects for you automatically. Here is how you would allocate an array of primitives:
Here is how you would allocate an array of objects. You can initialise an array to a list of values this way: Methods can return arrays. Usually the callee allocates them. However the caller could allocate them and pass them as parameters. See matrix, gotchas under array.
ASCII
The term ASCII has different meanings depending on context. Strictly speaking, ASCII (American Standard for Information Interchange) is a code that assigns the letters of the alphabet, digits and punctuation to the numbers 0 to 127. If I said, "That word processing file is vanilla ASCII", it means it contains no formatting characters -- just the letters A to Z, digits and punctuation. If I said "That file is ASCII not EBCDIC", it means your file encodes the letter A as the number 65, B as 66 etc., rather than some other method. If I said "That file is pure ASCII, no high bit characters" it means the file contains just the ordinary characters -- no accented letters or line drawing set. If I said "I'm going to send this to you in raw ASCII protocol" it means I will be just sending you the raw characters, with nothing extra to help detect or correct errors -- just the raw keystrokes.
Ask The Java Pro
a question answering service.
assembler
See JASM
assertions
Bertrand Meyer in Eiffel pioneered the use of structured assertions in a system he called Programming By Contract. These serve both to document the preconditions (require) on parameters coming into a method, and the guaranteed characteristics of the result (ensure). Unfortunately, Java still does not support them. They can be added with a the JaWa preprocessor. See JaWa.
association
In SQL, a many to many relationship between tables.
Assure
Assure is a tool that finds data race conditions, deadlocks and stalls in multithreaded Java programs. You simply run your program in the normal way using Assure, an instrumented JVM. Assure uses dynamic run-time analysis to find errors, the kind of synchronization errors that can be hard to find. Assure displays the results to you with errors pinpointed to the source line, with its own browser.
Asynchronous
Most modems used on personal computers are asynchronous. They send a character at a time rather than a message packet at a time. The luxury of sending a character at a time, means added overhead for start and stop bits.
astroturf
Astroturf is a durable artificial grass used in football stadiums. By extension, it refers to phony grass-roots letters, newsgroup postings or magazine articles lauding some company, (particularly Microsoft), or spreading FUD or outright lies about its competitors. See FUD.
AT command set
The Hayes modem commands all begin with the letters AT which means "Modem, may I please have your ATtention." Companies copying the Hayes command set, but not wishing to give Hayes a free plug, refer to it as AT compatible. see Hayes.
AU
a format for sound files that Java and Unix systems use. Applets play the files with Applet.getAudioClip and Applet.play methods. Applications use AudioPlayer.player.start(inputstream). Download Java source to generate *.AU files in RAM mathematically. It also converts *.AU files encoded with 8-bit mu-law back into 16-bit linear samples for mathematical analysis. Java can only play 8 bit, mu-law-encoded, 8000 Hz, one-channel (mono), AU files. There are other AU variants it cannot handle yet. How do you play sounds one after the other? How do you know when one has finished. You can estimate the time a sample will take to play by the sample count (or more roughly by the simple length of the file.) An AudioPlayer implementation might:
  1. Enqueue AU files to be played.
  2. Play all the AU files given to it simultaneously.
  3. Fail, perhaps annoying the user with a dialog box, if you give it more than one at a time.
You have to code defensively. See wav for information on converting Microsoft format to AU files. See wav, JMF.
Avalanche
Freestyle Software's Java Cryptography toolkit
AWT
Abstract Windowing Toolkit sometimes cheekily claimed to mean Another Widget Toolkit. It is a set of classes that let you write platform independent Java code that will hook into the native GUI systems on many different platforms.


CMP_home HTML Checked! award
CMP_home Canadian Mind Products You can get an updated copy of this page from http://mindprod.com/jglossa.html The Mining Company's
Focus on Java
Best of the Net Award