Java Glossary

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

Stuck in a frame? Click here to break out.

G

Galahad
A combination off-line/on-line newsreader, mailer, web browser. It lets you access both BIX.com and the Internet. It supports picons.
Gamelan
A web site that will help you find other Java-related material on the web.
Gandalf Supermodem
Gandalf, a Canadian company, was the first to produce a 9600 BPS modem that could work on dial-up phone lines. The modem contained more computing horsepower than most modern computers. It worked by playing chords of tones for 1/40 second. Averaging the signal over such a long time eliminated most of the effects of static. At the receiving end, Fast Fourier transforms analysed the chords back into the component tones. Most modern high speed modems have started with this idea and refined it. The ingenuity of modern modems such as the Telebit Trailblazer is extraordinary. The only problem is, all these schemes are proprietary, so different brands of modems cannot talk to each other.
garbage collection
In Java you explicitly create new objects with new, but you don't need to explicitly free them. From time to time the garbage collector chases all the references in all the objects to find all the "live" objects. Anything that can't be reached is "dead" and its space in reclaimed in one fell swoop. To nearly everyone's great surprise, the more dead objects there are, the more efficient automatic garbage collection becomes relative to the explicit schemes used in C++. Unfortunately, automatic garbage collection is not as efficient in its use of RAM as explicit freeing because dead objects are not immediately detected. Automatic garbage collection has the big advantage you can't screw it up.

With explicit freeing, you can accidentally free an object while some other reference is still pointing to it. Or you can forget to free it, and eventually clog memory with unused objects. There is nothing to stop you from writing your own explicit free allocators in Java that recycle objects in preference to creating new ones. These sorts of custom allocator would work well when objects are a standard size, when you don't build complex references to these objects, when the objects are short lived, when RAM is tight, and/or when there are large numbers of live objects at any one time.

There are many ways of classifying garabage collectors, e.g. conservative vs. fully accurate. Conservative collection assumes everything on the stack is a pointer, and tries to trace its descendants. Fully accurate ones determine first which are pointers and which are ints and floats. There are three main problems with conservative collectors:

  1. They take longer since the fool around chasing chains of objects that are not really chains.
  2. They can cause objects to be held onto that are actually dead, thus tying up memory needlessly.
  3. They might in, pathological circumstances, corrupt memory when false objects are marked as live.

A simple mark/sweep garbage collector (such as used in JDK 1.0 through 1.2) pauses from time to time to collect all the garbage. This creates a quite noticeable pause from time to time. A generational collector does the work in little bits more frequently.

The amount of ingenuity in the design of garbage collection algorithms is astounding. Jove, for example, uses a precise, multi-threaded, generational garbage collector. Sun's HotSpot claims to have a utterly state of the art garbage collector. See the Demon links.

Gates, William
The CEO of Microsoft. see J++.
GCJ
An optimiser for Java. Unravelling the acronym takes a little doing. GCJ stands for GCC Java. In unix, the command line name for the C compiler is 'cc'. GCC is the GNU cc. GNU itself stands recursively for: GNU Not Unix.
Gembuilder
a tool for managing JavaBeans. See JavaBeans, Java Studio.
genericity
C++ has templates. You instantiate versions of classes using some type as a parameter, e.g. a stack of ints and or a stack of floats or a stack of objects. In most other languages from Sather to Ada, templating is called genericity or parameterised types. Java does not yet have an equivalent. This issue of whether it should is hotly debated.
gespenstering
A technique of comparing two ram absolute image snapshots of an application in flight to generate the relocation exe header information. This technique allows the compiler to ignore the complications of relative addresses and pretend they are all absolute. It can also be used to get around crude copy protection schemes. The term comes from the German word for ghost, since one ram image is sort of ghostly shadow of the other.
GetRight GetRight
Headlight Software's program for downloading files by HTTP or FTP that will queue files to download in the background and resume interrupted connections. There are Windows/NT and Java versions of it.
Getting Started
How do you get started in Java? Here are the suggested steps.
  1. Download the JDK. See JDK for details.
  2. Print yourself a copy of the Java Cheat Sheet.
  3. Collect all the Documentation that is absolutely essential.
  4. Download SmartJ and SmartJC with Jikes.
  5. Write the HelloWorld application and get it going. See HelloWorld and CLASSPATH for help.
  6. Read the Applet entry in the Java glossary.
  7. See tutorials, and read up on how to write Java code.
  8. See the gotchas section of the Java glossary to warn you about the common pitfalls and to learn how to interpret compiler error messages.
  9. Post your beginner questions to comp.lang.java.help. But, before you post, check the Java glossary and the Java FAQs Frequently Asked Questions.
  10. Have a look at the Personal Bookshelf entry in the Java glossary. It will point you to places you can read text books free online, particularly Thinking in Java.
  11. Visit a computer bookstore and pick yourself a fat textbook on Java that tackles problems of interest to you at an appropriate difficultly level. See book stores to buy books online. It is better to browse in a real bookstore.
  12. Read the events essay.
  13. Check out IDE to consider an Integrated Development Environment, particularly a source debugger and class browser.
  14. Check out collections of source code to see how other people solve various Java problems.
  15. Give yourself a real project that has some emotional appeal for you. If you can't think of anything, see my list of student projects. You have to read then do, read then do. Just reading will get you nowhere.
  16. Read How to write Unmaintainable Code and carefully avoid following its advice.
GhostScript
A free software PostScript rendering engine that lets you run PostScript programs and see the results on your screen or on a non-PostScript printer. It can also generate PDF files. There are two variants: Aladdin (most recent) and GNU (older but redistributable). There are front end GUIs too: GV (UNIX) and GSView (Windows).

The program is slightly more difficult to install than most, mainly because of vague documentation and the lack of an installer. Here are some hints for installing under Windows 9x or NT:

See PostScript.
GIF
A file format Java uses primarily for icons. Such files usually have a *.gif extension. They are superior to JPEG files for line art, though JPEG is better for photographs. GIF format was originated by Compuserve, who have done some sabre rattling demanding people stop using the format, but seemed to have calmed down again given the impossibility of prosecuting everyone using GIF files on their websites. You may display uncompressed GIF files without restriction, and you can even make them for commercial purposes without restriction. What you cannot do is make commercial compressed GIF files without directly or indirectly paying a royalty. What keeps GIF files alive (even though PNG is superior in every way) is a feature that Netscape added to them several years back -- animation. Animated GIFs contain several images that are displayed in rotation to create a simple repetitive animation. Java does not yet have support for animated GIFs. You have to take the GIFs apart yourself and animate them manually. See PNG, JPEG, WIF, image.
GIS
Geographic Information System. A database system for storing maps. You can create maps with various subsets of the information and various scales. The software automatically places labelling information so as not to overlap other labelling. See JShape.
global optimisation
Looking for an optimal solution by being willing to allow everything to change a little. It applies to single programs, groups of programs, or even groups of people. The global optimum is not necessarily the local optimum for each subsystem, but on average, it is better than if each subsystem sought its own purely local optimum.
global variable
Java does not support global, universally accessible variables. You can get the same sorts of effects with classes that have static variables, static {.. } style initialisation of static variables, or sometimes constants in the form of static final variables inside interfaces. Java avoids polluting the namespace by making you refer to such "globals" by preceding them with a class name, e.g. Math.PI, or MyClass.useCount, unless of course your class inherits or implements the class or interface that defines the "global".
Glossaries
If you can't find a word here, try one of these other glossaries.
GNU
A huge library of free source code that is a rich mine for modeling new Java classes.
GNUs
An advanced newsreader.
GoodHost
GoodHost is a mail server suite includes POP3, IMAP4, LMTP and SMTP protocol servers, and is based on an RDBMS message store which includes support for 8 RDBMS's including Oracle and Oracle's thin JDBC driver.
gopher
Internet speak for a character based program that lets you browse the directory trees of remote computers.
Gosling, James
James Gosling of Sun Microsystems along with Bill Joy are known as the fathers of Java. Mr. Gosling has authored or co-authored the following books:
Title ISBN approx cost
The Java Application Programming Interface
(Java Series) Vol 1.
0-201-63453-8 $41
The Java Application Programming Interface : Window Toolkit and Applets (Java Series) Vol 2. 0-201-63459-7 $41
The Java Language Specification (Java Series) (online) 0-201-63451-1 $40
The Java Programming Language (Java Series) 0-201-31006-6 $38
Gotchas
A gotcha is a nasty surprise in the Java language or the standard libraries. Some might call them bugs, some features. I have written an essay on them.
Graphics Object
The Graphics class is abstract. It is just a collection of specifications for low-level drawing methods. The graphics object also contains a reference to the area of ram where the bit image will be constructed and it also contains the current clipping region. It is used for all types of painting including placing components, canvas drawing, and laying out text.
GRASP
A free Java IDE
GregorianCalendar
Sun's replacement for the brain-damaged and now deprecated Date class. GregorianCalendar needs both time and date set before it will function properly, even for date-only functions.
GridBagLayout
Kagi's $30 shareware tool for writing GridBagLayout software visually. GridBagLayouts have so many parameters that interact in subtle ways, it can take hundreds of trial compilations to get just the right effect. With a WYSIWYG editor that does not require recompilation for each trial, you can greatly speed up the process. It requires JDK 1.2 and Swing. See GridBayLayout
GridBagLayout
The most complicated layout manager, that gives you fine control over placement of subcomponents. You position them on a rough grid and the layout manager snuggles them up to each other. You can specify margins for each component, and which side/corner of its cell it should squeeze up to. The most puzzling parameter is weightx (weighty) which controls which cells grow when the entire layout acquires more real estate. 0 means no growth. The growth algorithm works like this. First it searches each column for the biggest desired growth. This becomes the desired growth for that column. Then the extra real estate apportioned to the columns relative to the growth weights. The growth weights need not be normalised percentages, but they could be. weighty works in a similar way. Peter Haggar has written a most excellent tutorial.

If your GridBagLayout does not work, here are some things to check:

See Layout, GridBagger
GroupLens
A way of presenting to you the pick of the crop of newsgroup offerings based on the voting patterns of other people who have voted like you in the past.
GUI
Graphical User Interface. The windowing scheme such as X-Windows, Windows-95 or Mac OS that user interacts with using a mouse, keyboard and screen. David Anderson maintains a site on user interface design. Here are some books to help you create good GUI desgins:
GZIP
A file compressed with one of the unpatented ZLIB algorithms. Unlike a ZIP or JAR file, a GZIP file is a single stream, not broken up into members. You can create or read them with the classes in java.util.zip. GZIPOutputStream may often be combined with an ObjectOutputStream to compress serialised objects. See JAR, ZIP.


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