Java Glossary

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

Stuck in a frame? Click here to break out.

E

EBCDIC
An 8-bit code used on IBM mainframes instead of ASCII. It is a very strange code, with the letters not contiguous and large gaps of unassigned characters. It was designed to make it easy for mechanical conversion from 12-bit punch card code to 8-bit internal code. It is pronounced "eb'-suh-dick", "eb'-kuh-dick" or "eb'-see-dick". See the TRT class to convert ASCII <=> EBCDIC. Warning! There are many national variants of EBCDIC. See the table of national differences.
ECC
Error Correcting Code. Extra information appended to a message to: Error correcting codes are used in RAM, hard disks, DAT tapes, CD-ROMs and rarely in modem transmissions. They are used in some floppy backup programs. I invented an ECC scheme for floppies where the error correction codes were carefully distributed over the disk to avoid irreparable damage from radial or circular scratches and greasy thumbprints. Norton Utilities tried to patent it, but backed down when I challenged them.

Most memory sold now-a-days does not have even error detection logic, much less error correction. When you get an error, the program continues, but with wrong information. This may not be all that important if you are just playing a game, but it could be crucial if you are doing an income tax return. Parity memory is a very simple form of error detection without correction. Because of alpha particle emissions, memory can be expected to make errors every so often, even when it is functioning perfectly.

It may seem like magic, but this will give you the gist of how it works. Imagine I had ten slips of paper each with a number written on them. I made an eleventh slip with the sum of the numbers. I then hand out the slips to people in the audience. Then, at random we select a person and they destroy their slip without showing it to anyone. How would you reconstruct the missing slip from the information on the remaining ten? Hint: add up the remaining slips and compare it with the total.

The actual schemes use much more complicated math than simple addition, but work on the same general principle.

eclipse
See obscure.
EIA
Electronic Industries Association. An American standards body that created RS-232C -- a standard for which wires do what in the connection between a computer and a modem.
EIDE flaw
Many EIDE (Extended Integrated Drive Electronics) controllers, even on motherboards from major manufacturers like Intel, contain either of two flawed chip designs, the RZ-1000 or the CMD-640/CMD-640B. Both will subtly corrupt your data during simultaneous i/o. This is a far more serious problem than the famous "I am Pentium of Borg; you will be approximated" flaw in the Pentium floating point unit. Download the FAQ.
Eiffel
a language similar to Java that has multiple inheritance, genericity, and assertions (design by contract). There is a compiler that generates JVM byte codes and uses the AWT. You can get a student edition of Visual Eiffel for $100 from Sigco. The designer, Bertrand Meyer's home is Eiffel.com. See iContract.
EJB
Enterprize Java Beans. I attended a lecture at Java One on this and came away the with the impression the presenters were not even clear on what these were or what was their purpose in life. I think they amount to some vague handwaving about using JavaBeans on servers and middleware applications.
Electronic Library
A library of downloadable non-copyrighted electronic books.
Ellison, Larry
The CEO of Oracle, a company that makes SQL engines. He is known for evangelising Network Computers, centralising the control of software installation and maintenance.
EMACS JDE
The ancient and worshipped EMACS editor has been extended with LISP to create an IDE for Java development. Be careful about making any public unkind comments about it or the EMACS editor, or a swarm of fanatics will descend as if you had attacked Christian or Scientologist dogma.
Embedded Java
The full Business Java language with the enterprise communications and GUI stripped out of it. This is the sort of Java you might see on a smartcard. See Business Java, Personal Java, Windows CE.
enable
make a button display normally and start accepting clicks. Disabled components are visible, but typically shown dim, grayed out, ghosts or shadows to indicate they won't work if you click them.
enabled
Is the control or button capable of accepting mouse clicks? It might be visible, but temporarily grayed out to disable it.
encoding
Readers translate from various 8-bit byte streams to standard 16-bit Unicode to read. You can specify the sort of translation to use when you create the Reader. Just which translation schemes are supported is not documented, nor is there a documented way to find out just which ones are supported on your JVM. Here are some typically supported:
Encoding name Description
8859_1 Latin-1 ASCII (the default). This just takes the low order 8 bits and tacks on a high order 0 byte.
Big5 Chinese
Cp1250 .. Cp1258 Windows code pages. Code sets for various versions of Windows. For example, the Microsoft J++ JVM uses cp1252 for the English version of NT.
Default 7-bit ASCII (not the actual default!) Strips off the high order bit 7 and tacks on a high order 0 byte.
GB2312 Chinese
JIS Japanese
JIS0208 Japanese
KSC5601 Korean
SingleByte This does not expand low order eight-bits with high order zero as its name implies. It looks to be a complex encoding for some Asian language.
SJIS Shift JIS. Japanese. A Microsoft code that extends csHalfWidthKatakana to include kanji by adding a second byte when the value of the first byte is in the ranges 81-9F or E0-EF.
UTF8 counted strings
The best place to look for clues is in the IANA (Internet Assigned Numbers Authority) list of character set names at http://www.isi.edu/in-notes/iana/assignments/character-sets. Note that what Java and the HTML 4.0 specification call a "character encoding" is actually called a "character set" at IANA and in the HTTP proposed standard. Adam Dingle did the research on how these encodings work. See IANA.
endian
Java stores binary values internally and in files MSB (Most Significant Byte) first, i.e. high order part first. This is referred to as big-endian byte sex or sometimes network order. What do you do if your data files are in little-endian format as would be the case for most Windows-95 binary files? Read this essay. See binary formats.
endless loop
See loop, endless.
Ensuite
Lotus/IBM's mini office suite for Java, (formerly known as Kona), written as a set of Java applets. It is roughly comparable to Microsoft Works. It contains a word processor, mail program, spread sheet, browser, appointment scheduler, slide presentation maker. It is written in 100% pure Java so can run on any platform with 100% compatible file formats. It costs $50 for a single user copy and $1500 for a server license that lets you use it on all machines connected to that server. I saw a demo of it at the Colorado Summit. I was impressed with the snazzy graphics, simple user interface and surprisingly good response time. It makes extensive use of serialisation to save system state for Applet swapping or so that you can pick up right where you left off when you power up again. To run it properly you need a LAN, not just an Internet connection to your server.
enumerated types
Java does not have enumerated types the way Pascal and C++ do. There are two ways to get around the problem:
  1. Create a Vegetable class just to hold your collection of public static final int constants that encode the possibilities. In simple cases you don't bother with a separate Vegetable class for your constants. You just define them in the JuiceBar class. The disadvantages of this method are:
    • You just close your eyes to parameter type checking. To the compiler any int will do as a parameter to a method expecting a Vegetable code. It does not care if you pass a Vegetable code, or diameter in millimeters
    • You have to manually assign numbers to each option.
    • public class Vegetable {
        public static final int unknown  = 0;
        public static final int beet     = 1;
        public static final int brocolli = 2;
        public static final int carrot   = 3;
        } // end class Vegetable
      
      public class JuiceBar {
        public void mixIn (int v)
         { switch (v)
            {
            case Vegetable.brocolli: ... break;
            case Vegetable.carrot:   ... break;
            default:                 ...
            }
        } // end mixIn
        } // end class Juicebar
  2. Create a Vegetable class to contain your collection of various named static final objects to represent each possibility. The main problems with this method are:
    • Extra run time overhead.
    • You have to create a separate Vegetable class. You can't just piggyback the constants inside the JuiceBar class that uses them.
    • You can't use your possibility constants in a switch statement. You need to code with nested ifs and ==.
    • It is difficult to store data externally, especially if you add or delete possibilities and need to update existing databases.
    • public class Vegetable {
        protected Vegetable () { /* constructor has no fields to initialise */ }
        public static final Vegetable unknown  = new Vegetable();
        public static final Vegetable beet     = new Vegetable();
        public static final Vegetable brocolli = new Vegetable();
        public static final Vegetable carrot   = new Vegetable();
        } // end class Vegetable
      
      public class JuiceBar {
        public void mixIn (Vegetable v) { if (v == Vegetable.brocolli) ... }
        ...
        } // end class JuiceBar
JavaWorld Magazine did an article on various ways to kludge enumerations in Java. I wrote a proposal to properly build in two types of enumerations into the Java glossary. See "enumerations" in the Bali essay.
EOL
End Of Line. In Java, usually the end of line is marked by \n (0x0a). In native files, sometimes end of line is marked by \r\n 0x0d 0x0a. (e.g. in Windows systems which hark back to the teletype which had to be told separately to move the printhead to the left margin and one line down.) If you use a DataOutputStream, there will be no special marker unless you put one there. To code in a platform-independent way use:
String eol = System.getProperty("line.separator");
Note the spelling. 80% of programmers are under the delusion "separator" is spelled "seperator". The println, newLine and readLine methods should let you ignore the problem of local newline conventions. See properties.
EspressoGrinder
a Java compiler that implements a -obfuscate option to shroud the names of classes and variables in the object code. See shroud.
Essays
Here are some the essays associated with the Java Glossary. There are usually pointers to them from various entries but in case you missed them here is a list:
essential documentation
See the essential documentation section under Documentation.
event
I wrote an essay on JDK 1.0.2 events for the Java Developer's Journal. I wrote a similar essay on JDK 1.1 events. The essays track the life cycle of an event from creation to cremation. Jonathan Revusky translated the JDK 1.1 essayinto Spanish. Have a look at Richard Baldwin's instructional Baldwin's essays on events or Jan Newmarch's essay. See post.
event loop
You don't code an explicit event loop to read the event queue and dispatch events the way you do in Windows C++ or MacIntosh Pascal. The event loop plumbing is hidden. It does not start up until after your main function terminates!
exception handling
Exceptions let you handle unusual error conditions without cluttering your code with nested ifs after every method call. The basic syntax to handle an exception looks like this:
String myMethod()
{
try
{
return trickyMethod();
}
catch (IOException e) { return null; }
}
The basic Syntax to generate an exception looks like this:
String trickyMethod() throws IOException
{
int result = readAnotherChar();
if ( result < 0 ) throw new IOException("bad data");
return result;
}
Peter Haggar has written a most excellent tutorial on exceptions.
exemplar
This is James Coplien's term from C++ for an object used as a model to construct other objects. Objects that implement clone of the Cloneable interface can be cloned from an existing exemplar object.
exit
System.exit(int retcode) is a method to immediately terminate your application. Presumably the operating system will tidy up after you and dispose of all the native GUI resources you were using. Ironically programs don't even start processing events until the main routine has exited via return -- not via System.exit. System.exit shuts down all the event processing.
Expert's Exchange
Help and expert consulting for free.
expose
If a window is removed, which reveals one buried underneath it, we say the buried window is now "exposed". Typically this would result in the exposed window's paint routine being called. Sometimes the word uncover is used. See obscure.
broken_linkExpressO
a server CGI womb in which to run Java servlets. See servlet.
extend
When you derive a class from a base class we say the derived subclass extends the base class. An interface can also extend another interface. See also implement.
external modem
External modems come in their own small case with winking lights. The advantages over internal modems are:
  1. They are easier to troubleshoot.
  2. They can be used on any brand of computer.
  3. If they get into a snit a freeze up you can reset them without having to turn your whole computer off.
  4. They do not take up a slot inside your computer.
See internal.
extranet
A network of companies sharing proprietary information over the Internet.




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