Java Glossary

Last updated 1998 June 16 Roedy Green ©1996-1998 Canadian Mind Products.

Stuck in a frame? Click here to break out.

M

Mach J
A Java virtual machine for mission crititcal applications. See JVM.
Macho
a dissassemble/decompiler. See dissassembler.
main
Standalone applications don't necessarily have init and start methods. They must have a public static void main routine to start things off. The main routine typically creates some object of the master class. It can't use any non-static variables or methods in the class with the implied this, since there is no this object. It typically quickly returns. Then the event loop processing starts. Even the static main method must live inside some class. There are no such thing as standalone static methods in Java.
mangle
See shroud.
manifest
A file part of a JAR file describing the contents of the JAR archive. It always has the name /META-INF/MANIFEST.MF. It contains entries like this:
Manifest-Version: 1.0

Name: business/awt/SillyBean.ser
Java-Bean: True
Depends-On: coffee.gif

Name: business/awt/FormattedTextField.class
Java-Bean: True
Depends-On: showit.gif
Depends-On: business/Misc.class
Digest-Algorithms: SHA MD5
SHA-Digest: mCQyjwVWo0+9PNad2fk43Y1slBE=
MD5-Digest: 1yipVh1g10c25ngRmDob+A==

The specification document is very loose about the format of a manifest file. Here are the rules I have gleaned from experimentation: It might be wise to review the MANIFEST.MF file generated by examining the JAR file with WinZip 6.3 or later. Unfortunately WinZip there are several problems in using WinZip to create jar files or to add files to them. See Jar file, Java Cannery.
Marímba
The makers of the Bongo visual interface builder and widget library and Castanet a system for distributed objects. See Bongo, Castanet.
mark
"Mark" is modem jargon for "one". See space.
marshal
The technique of passing procedure parameters and results for a remote procedure call. This is similar to the general process of serialisation. See RMI.
MassMail
Craig Manley's email program available with free source.
matrix
In Java, a matrix is an array of arrays. Each row of the array can even have a different number of columns. Here is the generalized way you would use declare and initialize a 3x5 rectangular matrix.
    // note how you never specify the array's size in its type declaration.
    int[][] mat;
    // for each row, allocate a slot for a pointer to an array
    mat = new int[3][];
    for (int i=0; i<3; i++)
        {
        // allocate an array for each row
        mat[i] = new int[5];
        for (int j=0; j<5; j++)
            mat[i][j] = i*j+100;
        }
When you have a matrix with all columns the same size, you can allocate all the space at once this way.
    int[][] mat = new int[3][5];
    for (int i=0; i<3; i++)
        for (int j=0; j<5; j++)
            mat[i][j] = i*j+100; 
If you fail to initialise the array, Java automatically initialises it for you to to zeroes. If you have a matrix of objects, and you fail to initialise, Java initialises it to nulls for you. It does not allocate empty objects at each grid point for you. You have to allocate the objects yourself like this:
    Cell[][] mat = new Cell[3][5];
    for (int i=0; i<3; i++)
        for (int j=0; j<5; j++)
            mat[i][j] = new Cell(i,j,100); 
Here is how you could create a triangular matrix:
    int[][] mat;
    // for each row, allocate a slot for a pointer to an array
    mat = new int[100][];
    for (int i=0; i<100; i++)
        {
        // allocate an array for each row
        mat[i] = new int[i+1];
        for (int j=0; j<=i; j++)
            mat[i][j] = i*j+100;
        }
You can initialise a matrix to a list of values this way:
    int[][] mat =
      {{11, 12, 13}, {21, 22, 21}, {31, 32, 33}};
With JDK 1.1, you can assign a matrix to a list of values this way:
    mat = new int[][]
      {{11, 12, 13}, {21, 22, 21}, {31, 32, 33}};
In all these examples, you can use mat.length and mat[i].length to avoid repeating the constants that define the matrix's dimensions. See array, gotchas.
Maui
Lotus's codename for a project to port its SmartSuite project to Java.
MDI
Multiple Document Interface. Microsoft's windowing paradigm for a word processor having windows open on many different documents.
mediator
See design patterns.
megabyte
A megabyte is 2^20 = 1024 * 1024 = 1,048,576 bytes. Unfortunately hard disk makers usually short change you by 5%. Their megabytes typically have only 1,000,000 bytes them. The floppy disk makers cheat even more. A 2 mb diskette contains only 1.44 megabytes.
member variables
Variable part of a class or object, i.e. class or instance variables. Does not include local variables. See variables.
memento
See design patterns.
menu
pulldown list of actions the user can select across the top of a window.
menubar
a row of pulldown menus.
MerzScope
MerzCom's MerzScope is a mapping and navigating tool that allows you to produce dynamic graphical relational maps of any collection of Web pages and links. Surfers can navigate with a mouse click.
method
In other languages methods are called functions, subroutines or procedures. A method make take 0 or more parameters and may or may not produce a result. Java methods never return more than one result. All methods in Java are part of some class. There are no stand-alone methods, not even main.
method verification error
The compiler generates JVM byte codes. Before these are executed, the byte codes are verified both to make sure the compiler did its job correctly and to block malicious attempts to crash or bypass the security of the JVM interpreter. The verification analyes the code flow to ensure for example that you don't try to use an integer op code on a floating point operand, and that you consume all the stack items you create. It detects any attempts to forge pointers out of integers. If you get a method verification error, chances are your compiler has a bug. The other cause is that the *.class file has been corrupted.
metrics
the amount of space each letter of the character set takes up horizontally and vertically so that you can precisely compute how much space needed to display a given string of text. It also refers to measurement of object-oriented technology and its use. "Measurement" is interpreted widely to include such matters as cost estimation, test management, surveys of uptake of OO and industrial experience, provided these are to any extent quantitative.
MFJ
Media Framework for Java. See Intel Media Framework, Java Edition.
MIDI
Java does not officially support MIDI music files, but on some browsers this trick will work:
getAppletContext().showDocument(new URL(getCodeBase(),"test.mid"));
They would need a Midi player like Cresendo installed.
MIME
Multipurpose Internet Mail Extension. A technique for attaching files to Internet mail by converting raw binary files to printable ASCII. It is also a way of specifying the format of web documents and attached email documents. An ISP must set up the HTTP web server to send the MIME type along with a document. It usually derives this by looking at the file extension. If the web server fails to do this, often the file contents are just displayed as gibberish rather than properly acted on. Here are some common MIME types:
ExtensionMime TypeNotes
aif aiff aifcaudio/x-aiffsound
au sndaudio/basicstandard Internet/Java wave sound
avivideo/x-msvideoavi movie
bastext/plainBasic source
bin exeapplication/octet-streamexecutable program
bmpimage/bmpWindows image
docapplication/mswordMicrosoft Word document formatted.
etxtext/x-setext
evyapplication/envoyEnvoy
gifimage/gifstandard Internet icon image
gzapplication/x-gziptar gzip
html htmtext/htmlHTML, web browser
iefimage/iefimage
jpeg jpg jpeimage/jpegstardard Internet photo image
jsapplication/x-javascriptJavaScript
midaudio/midiCrescendo MIDI sound
mov qtvideo/quicktimeQuicktime movie player
movievideo/x-sgi-moviemovie
mpg mpeg mpevideo/mpegmpeg movie player
odaapplication/oda
pbmimage/x-portable-bitmapbitmap image
pdfapplication/pdfAdobe Acrobat Portable Document Format
pgmimage/x-portable-graymapgrayscale image
ppmimage/x-portable-pixmappixel image
ps eps aiapplication/postscriptAdobe PostScript, encapsulated PostScript
ra rm ramaudio/x-pn-realaudioReal Audio
rgbimage/x-rgbimage
rtfapplication/rtfrich text format
rtxtext/richtextrich text
ssi shtml
(htm html)
text/x-server-parsed-htmlserver side includes; web server expands embedded commands. Sometimes htm and html files are parsed for embedded commands too.
tarapplication/x-tarUnix tar archive
tiff tifimage/tiffimage
tsvtext/tab-separated-valuestab separated list
txt texttext/plaintext
vewapplication/groupwiseNovell GroupWise
w61application/wordperfect6.1WordPerfect
wavaudio/wavMicrosoft wave sound
wavaudio/x-wavMicrosoft wave sound
wp wpd wp5application/wordperfectWordPerfect 5
w60application/wordperfect6.0Worderfect 6
zipapplication/x-zip-compressedWinZip
MIPS
Mobile Internet Phone Services. A standard for Java to run in mobile phones, giving them access to specialised applications.
MNP
MNP stands for Microcom Network Protocol. In 1983 Microcom built error detection and correction into its modems. Many other brands of modems, to this day, are still incapable of detecting or correcting errors caused by static. Then Microcom magnanimously allowed other companies to use the same method. At present there are nine levels of MNP protocol, the bigger the number the better. If a level 5 modem and a level 9 modem talk, after negotiation, they will settle on using the level 5 protocol -- the highest level common to both. MNP is tricky. Sometimes you must manually assist the modems to find a common level. Most of Tymnet/BIX uses MNP level 4 modems. In some parts of the USA Tymnet is now supporting MNP level 5. If you connect with a MNP level 5 modem, its compression features will be wasted, but the error-correcting features will be activated. Datapac (Canada's packet net) does not use MNP at all. If you were to use your MNP modem on Datapac, none of its MNP error correction features could be activated. CCITT V.42 formalizes the MNP levels 1 to 4.
MNP Class 1
Lowest level of MNP performance. You will never see a modem with just MNP class 1. Level 1 uses an asynchronous byte-at-a-time half-duplex (ping pong back and forth, but never send-receive at the same time) method. The protocol efficiency is about 70%. A 2400 BPS modem will realize a throughput of about 1700 BPS.
MNP Class 2
Nearly all MNP modems have at least class 2 level support. Here the modems use an asynchronous byte-at-a-time, full-duplex (simultaneous send-receive) method. The protocol efficiency is about 84%. A 2400 BPS modem will realize a throughput of about 2000 BPS.
MNP Class 3
Here the modems use a synchronous bit-oriented full-duplex exchange. Synchronous implies longer bursts with the overhead of the start-stop bits removed. The protocol efficiency is about 108%. A 2400 BPS modem will realize a throughput of about 2600 BPS.
MNP Class 4
Here the modems improve on class 3 by adapting the size of the packets exchanged to suit the cleanliness of the line and the burstiness of the traffic. The cleaner the line, the bigger the packets. The protocol efficiency is about 120% on a clean line. A 2400 BPS modem will realize a throughput of about 2900 BPS. Tymnet/BIX uses MNP level 4. MNP-4 is the alternate error correcting protocol in CCITT V.42.
MNP Class 5
Here the modems improve on class 4 by compressing the data. The compression achieved will run from about 1.3:1 to 2:1. Pkzipped files will not compress at all. The protocol efficiency will average about 200%. A 2400 BPS modem will realize a throughput of about 4800 BPS. MNP-5 is not part of V.42bis.
MNP Class 6
These modems know how to switch over to V.29 or V.22 bis standard protocols when needed.
MNP class 7
These modems use a cleverer form of compression than class 5.
MNP Class 10
An enhancement to MNP that allows for cellular phone connections or other especially hostile transmission environments. MNP Class 10 modems can withstand crossing a cell boundary, and automatically adjust to changes in transmission quality dynamically during a call.
Moajar
Set of classes for for editing jar files. See jar file.
Mocha
Mobile Agents
Programs that can wander from machine to machine executing, taking state information along with them. Compare this with RMI where programs sit still, and object parameters and results are passed around.
Mocha is a Java disassembler for reverse engineering. Unfortunately the young Dutch author Hanpeter van Vliet died of cancer. See disassembler, Creama.
modal
A dialog box can be either modal or non-modal. A dialog box is modal if the user must first dismiss it before clicking elsewhere. Unfortunately, the code that invokes a dialog box does not automatically wait for the user to finish, the way it does in most other GUI interfaces.
Modern Minds
a company that makes Java tools, e.g. an animation applet that makes it look as though the image is being reflected off a moving water surface.
modulus

In Java you take the remainder with the % operator. In Java, the sign of the remainder follows the dividend, not the divisor. Be especially careful when corralling random numbers into a smaller range. Java division does have the Euclidian property. When you multiply the quotient by the divisor and add the remainder you get back to the dividend. Java division is truncated division.

Floored division is what you normally want when trying to figure out which bin an item belongs in. You can compute floored division as:

if (dividend >= 0) ? (dividend / divisor) : ((dividend-divisor+1) / divisor);

For computing how many fixed-size bins you need to contain N items, you want ceiled division, also known as the covered quotient. You can compute the covered quotient as:

if (dividend >= 0) ? ((dividend+divisor-1) / divisor) : (dividend / divisor);

Signs Division Modulus
+ + +7/+4=+1 +7%+4=+3
- + -7/+4=-1 -7%+4=-3
+ - +7/-4=-1 +7%-4=+3
- - -7/-4=+1 -7%-4=-3
See Bali.
monitor
Java uses monitors to co-ordinate threads to make sure they don't trip over each other accessing the same data. With monitors, you either lock objects, critical sections of code or you lock entire methods by declaring them synchronised. Monitors have hardware test and set support behind them to ensure a thread checks to see if a monitor is already locked and if not, seize the lock all in one non-interruptible atomic operation. Without atomicity, a thread might check see if the monitor is unlocked, and have some other thread grab the monitor before it gets a chance to lock it. Purists will point out that a monitor is not actually the lock, but rather the way that lock is used to protect critical sections of code. See semaphor, mutex, synchronized, condition variable.
Monmouth
a shrouder for Java to prevent disassembly. See shroud.
MOSAIC
The original hypertext browser for viewing text and graphics over the Internet. It has largely been replaced by Netscape.
Mozilla
The Netscape browser had a mascot, a Godzilla-like lizard called Mozilla. The company that distributes Netscape source code is called Mozilla.
MRU
Maximum Receive Unit. (PPP Only) The Maximum Receive Unit sets the maximum number of bytes that we are capable of receiving in one PPP packet. Generally, the bigger the better. Typically set to 1576 bytes. Setting it smaller helps if there a large number of scrambled packets, or if you need fast response time to single keystroke packets. See PPP, MRU.
MTU
Maximum Transmit Unit. (SLIP Only) is similar to MRU, except instead of setting receive packet size, it sets the maximum size of transmitted packages. See SLIP, MRU
MUD
Multi-User Dungeon. A game or virtual world where various players interact remotely. I believe it also refers to creating programs that act as your proxy in the virtual world while you are not present.
multicasting
Instead of sending an individual packet over the internet to each interested party, you send a single packet to a group of listeners. Oddly, RealAudio broadcasting and bulk mail don't make use of this feature.
multiple dispatch
The OO term for dynamic overloading, selecting which particular version of the method will be invoked depending on the types of several parameters at run time. Java overloading is handled purely at compile time. See single dispatch.
multiple inheritance
Java does not support multiple inheritance, allowing a class to extend more than one base class. It does however support implementing multiple "interfaces", which is similar to multiple inheritance but simpler and safer. See also interface.
MultiView
In dbAnywhere, a MultiView is the collection of all current RelationViews. See RelationView, dbAnywhere.
mutex
Mutually Exclusive. A alternate term for a monitor. See monitor, semaphore, synchronized.



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