- Bali
- Bali is a proposed superset of Java. It takes ideas from various
other languages. The intent is to create a language for application
programmers that is terser, easier to read and maintain than standard
Java. Have a look at this essay to see some
of the ideas that might be incorporated.
- Balitools
- A Java authoring tool that focuses bypassing the colour-rendering
bugs in various browsers, and other cosmetics.
- BAMBA
- IBM's all-Java way of transmitting streaming audio and video over the web.
- bar codes
- Parallel long/short/missing lines, such as the UPC grocery
product labels, that encode product ids or other information.
They can be printed with ordinary ink, with printers or offset
presses. They can be read with various laser or LED scanners. See
the PeerNet Linear Barcode
Bean to create a variety of barcode styles in Java.
- base class
- "base class" in C++ is "superclass" in Javanese.
When a class extends a base class, to derive a new class with all the base's
variables and methods, plus some of its own, we call the new class the
subclass, and the base class the new class's "superclass". See
derived, subclass, superclass, extends, inherits.
- Baud
- measures how fast a modem changes the sounds it uses to encode information
to another modem. Since it can encode several bits of information per sound,
the Baud rate is usually much slower than the BPS rate. See the essay
on RS232C for a fuller explanation.
- BBS
- Bulletin Board System. A service, usually free, you
can phone with your modem and leave public or private messages for other
callers. Usually only one person at a time can use a BBS. Most BBSes also
let you download program files. Globally accessible websites have largely
replaced the BBS.
- beam
- Apple Newton computers can transfer information between them without needing
a wire joining them. They send infrared pulses. The two machines must be
with in a meter of each other for this to work well. You then might say
"Please beam me the project Polaris file." Beam is a reference
to the Star Trek transporter beam. The term is gradually coming to be used
for other types of electronic file transfer.
- Bean Dipping
- IBM's technique of adding features such as password security,
charting or version control to existing JavaBeans.
-
Bean Shell
- A platform independent scripting language written in Java.
- BeanBox
- Sun's tool for testing out a JavaBean to see if it conforms with
the conventions. When you go to JavaSoft to download it the
instructions say to click a button labeled Download Software,
but it is actually labelled continue. See JavaBean, Jar file.
When testing a bean, think carefully about the CLASSPATH you use. You
don't want to include anything that users of the bean might not have on
their CLASSPATH. The bean should be self-contained, bringing all the classes
its needs with it in the surrounding jar file. When the BeanBox complains about
a component, it may be that the real problem lies in something that component uses.
- BeanInfo
- A BeanInfo class describes the properties of a JavaBean, and
provides an icon for it. Writing a BeanInfo is pretty easy. See
this example heavily-commented Date_CABeanInfo.java source code. In
the comments are hidden many useful hints. Studying the example code
in the BeanBox is more helpful than reading the JavaBean spec. For
example, study the MoleculeEditor to provide a list of allowable
choices for a String property. For more complex PropertyEditors
based on implementing the java.beans.PropertyEditor interface or
extending the PropertyEditorSupport class see:
BDK\APIS\SUN\BEANS\EDITORS.
The key thing to understand is that there is no
glue between the JavaBean and the BeanInfo class other than the
naming convention. If your Bean is called Jim then the
corresponding BeanInfo class has to be called JimBeanInfo and
has to be stored in the same directory. There is glue in the other direction, via
the bean's beanClass passed to the various PropertyDescriptor constructors
in the BeanInfo code. Normally JavaBeans and their
corresponding BeanInfo classes are bundled up together with other
beans and dependent classes in a jar file. See JavaBean, Jar File,
Manifest, BeanBox.
- Beans
- See JavaBeans
- beautifier
- a program that tidies up Java source code to some standard
format. Marc W.F.
Meurrens maintains a list
of code beautifiers and pretty-printers. I am pretty happy with
SlickEdit since it is integrated into the editor, where it is
convenient to type quickly/sloppily and beautify frequently. I
does not rigidly follow Sun's conventions, but it is quite close.
See pretty-printer, coding standards, CBVan, SlickEdit, Emacs,
PCGrasp, Percolator, VasJava2HTML.
- beep
- Java does not have a built-in set of sounds. It ignores '\a' in
console output, though you can use \007. In JDK 1.1 You can make a
simple beep with java.awt.Toolkit.getDefaultToolkit().beep().
I have seen reports that
beep does not work properly on some platforms. In JDK 1.0.2 you can
use System.out.print("\007"); System.out.flush(); You can
also play au files. See AU.
- Bell
- AT&T created a series of modem standards used in the USA and Canada.
The Bell 103 standard is used for North American 300 BPS modems and 212A
is used for 1200 BPS modems. The 212A is similar to but incompatible with
the European CCITT V.22 standard.
- benchmark
- Comparing the speeds of different ways of doing the same thing using
different algorithms, different hardware, or different compilers.
- Bento
- The file format for persistent objects used by OpenDoc.
- between
- When an SQL or Java programmer asks for a number between 1
and 10, he includes the end points 1 and 10 as valid responses. When
talking about a random number between 0.0 and 1.0, 0 is included
but not 1. How logical! In normal English, sometimes the word
between excludes one or both of the end points. See random
number.
- bias
- an amount added to a number, usually to make all negative numbers positive.
- big-endian
- See endian
- BigDate
- Canadian Mind Products replacement for the notorious standard
Date class. BigDate converts back and forth between Julian (days
since 1970 Jan 01) and Gregorian (yyyy mm dd) forms. BigDate handles
dates from 999,999 BC to 999,999 AD. It handles the following
calendar anomalies:
- missing year 0.
- missing 10 days in 1582 from Oct 05 to Oct 14.
- the change in leap year rule calculation in 1600.
- leaps every 4 years, except every 100, except every 400.
Download source. BigDate differs
from Sun's Date in that it handles dates prior to 1970, and it uses
Julian day numbers relative to 1970 Jan 01 rather than millisecond
timestamps. BigDate uses 4, 5 or 6 digit years rather than 2-digit
years like Sun's Date. Month 01=January as is traditional, unlike
Sun's Date which uses 00=Jan. Similarly, the first of the month is
01 not 00 as in Sun's Date class.
For example here is how you could compute the day after a given date:
BigDate g = new BigDate (yyyy, mm, dd + 1, BigDate.NORMALIZE);
yyyy = g.getYYYY();
mm = g.getMM();
dd = g.getDD();
This second way is more verbose, but it does a check that yyyy, mm,
dd are valid and executes slightly faster.
BigDate g = new BigDate (yyyy, mm, dd);
g.setOrdinal(g.getOrdinal()+1);
yyyy = g.getYYYY();
mm = g.getMM();
dd = g.getDD();
There are many more examples in the TestDate.java class that comes with BigDate.
- binary
- Base two numbers, made up only of the digits zero and one.
Internally this in what computer chips use to calculate, where a
high voltage represents 1 and a low voltage 0. With one wire, you
have only two possibilities low and high, 0 and 1. With two wires
you can represent 4 possibilities, 00, 01, 10, 11. With three
wires you can represent 8 possibilities, 000, 001, 010, 011, 100,
101, 110, 111. You can assign these possibilities to the
integers: 0=000, 1=001, 2=010, 3=011, 4=100, 5=101, 6=110, 7=111.
The scheme works much like decimal arithmetic. The column values
are : ... 64 32 16 8 4 2 1 (i.e. 2^n). Thus 1011 is 1*8 + 0*4 + 2*1
+ 1*1 = 11 -- decimal eleven.
Binary is rather bulky to write out, so instead it is often
written in terser hexadecimal (hex) or sometimes octal.
Unfortunately there is no way in Java to include binary literals
in programs other that by encoding them in hex or the more old
fashioned octal.
When you realise that 255 = 1111_1111 in binary, 1024 =
100_0000_0000 and 65535 = 1111_1111_1111_1111, you might guess
why these numbers tend to come up so often in computing.
See the
Learn To Count Applet to sharpen your intuition on how
binary, hex and octal work. You should be able to deduce the
simple binary negation, addition and subtraction rules that the
computer circuitry uses. See octal, hexadecimal, literal.
- binary formats
- DataOutputStream puts out Java data in big-endian internal binary format.
Have a detailed look at these formats in this essay.
In contrast PrintStream.println and PrintStream.print put out data as human-readable
8-bit ASCII characters. See primitive, endian, println format.
- Binder
- In dbAnywhere, a Binder is a an object used to glue a GUI object
to the RelationView of the SQL database. It allows the database to
inform the GUI when the value has changed and vice versa. ProjBinders
deal with a single column. ListBinders deal with groups of columns.
ProjBinders allow you to get/set the data in the SQL column in any
conceivable format. ProjBinder looks after conversion to whatever
format that SQL uses. See ListLink, ProjLink, dbAnywhere.
- BinProlog
- a Prolog implementation written in Java.
- bis
- as in V.22 bis modem standard. Bis is a French word meaning "encore"
or "alternate". People shout "bis" at the end of an artist's
performance to demand more. We might translate it as "revised" or
"plus" to indicate a new, improved, expanded modem standard. See
also V.22 bis, V.32 bis and V.42 bis.
- BISS-AWT
- Peter C. Mehlitz of BISS has done some remarkable things with the
AWT. The demo I saw at the Java Colorado Software Summit Conference
was very impressive. There are three parts to the BISS package:
- It's a widget framework of portable (standard AWT based)
lightweights that completely coexist with other Components. This is
in the package "biss.awt". These include rich text components and
layout managers. It works much the way Swing does. Both BISS-AWT and
JFC-Swing are just another "add-on" on top of a plain AWT.
- It contains a small (but constantly enhanced) IDE, which also
serves as an example of how to use the widgets. The package
"biss.jde", mainly consists of a class browser and a graphical layout
tool.
- They re-implemented java.awt (currently with a native layer for
kaffe / Xlib), with the "high level" java.awt widgets built on top of
biss.awt (sounds somewhat recursive, but makes a very small code
base).
- bit
- Modems send information in a serial stream of zeros and ones. Each of these
zeros or ones is called a bit. Eight bits is enough to encode one character.
- BizTone
- A scheme for renting Java software applications. They are
automatically delivered and kept up-to-date over the Internet.
- block
- In Pascal blocks are subpieces of a method that have local variables.
Java for loops are considered new scope blocks where you can initialise
one local variable in the for loop. You can also define a block in Java
just by enclosing the code in { }. Local variables defined inside { } are
not known outside the block, though they are allocated when the method
starts, not when the block is entered. In other words there is no speed
penalty for declaring a local variable inside a loop. A new stack frame
is not started for each block. Smalltalk programmers us the term "block"
to mean a little fragment of code that you can store in a variable or pass
as a parameter. Even if statements can use blocks for the ifTrue and ifFalse
actions. Blocks also provide a slick way of invoking an enumeration of
a collection, running some code on each element of a set. In contrast to
Smalltalk, Java has a rather verbose way for requesting a piece of code
be executed on each element of a collection using the Enumeration class.
The term has quite a different used in datacommunications: Modern file
transfer protocols send data in blocks, or packets, rather than just a
byte at a time. Usually, the larger the block size the more efficient the
file transfer. This is because most file transfer protocols wait for an
acknowledgement from the other end after each block is sent, so larger
blocks mean fewer stops for handshaking. However having blocks too big
slows things down. This is because a single error means the whole block
must be re-transmitted. Not only do the blocks take longer to retransmit,
there is an increased change for error in each block.
- Blowfish
- A fast, compact, unpatented, public domain, block encryption
method invented by Bruce Schneier. The algorithm allows for a
variable length key up to 448 bits. It could be used in
conjuction with a slower public key method. Blowfish keys are
exchanged via public key method, then the bulk of the encryption
is done via Blowfish. See DES.
- Bluebird
- IBM's port of Warp to Java to run on network computers.
- Bluette
- A free RAD IDE by Hyung G.
Kim of South Korea. See RAD, IDE.
- BNF
- Backus Normal Form or Backus
Naur Form. A way of formally describing the grammar of
a language or set of commands. Each element in the language is
described in terms of its component elements, which in turn are
described by their components. There can be mandatory, optional or
repeating elements. Definitions of terms can be recursive. The term
BNF is loosely used to describe any scheme for describing a grammar
from Burroughs railway diagrams to LALR, though properly it
refers to Backus's original. It is useful mainly for language
lawyers. People understand a grammar best from a carefully chosen set
of examples. See YACC.
- Bongo
- Marímba's visual user interface builder and widget library in
Java and for Java. See Marímba.
- books
- For a top ten list of Java books see the Java Pages. See book stores.
- book
stores
- Clicking either logos or URLs below will take you as close as
possible to that bookstore's section on Java books. I currently
receive referral fees only from Amazon USA.
Be aware of additional costs when buying books online. These
include: shipping, exchange, foreign taxes, domestic GST/VAT,
additional shipping charges you pay on delivery, duty,
customs broker fees, and the lastest to nail me, a $5 collection
fee to pay for collecting cash for a $2.50 GST fee. You will
almost always be quite unpleasantly surprised when you add it all
up. Books online are usually slightly more expensive than buying
them locally. Further, delivery is 4 to 12 weeks unless you pay
extra.
The main advantages of online books are the wide selection, 24
hour service without leaving your home and the low warehouse and
staff overhead for the vendor. The main disadvantages are you
cannot browse the books, and you have to wait for them to be
delivered.
See books, Personal Bookshelf.
- Borland
- The makers of JBuilder. They have renamed themselves Inprise in hopes
the public will forget their good reputation with products like Delphi,
C++, Turbo Pascal, Quattro Pro and dBase.
Borneo
- A charting package with classes for: bargraphs, stacked bars,
histographs, auto-scroll trends, piecharts and transparent
buttons.
- BPS
- Bits Per Second. This is the speed of a modem. Roughly
speaking, divide this number by 10 to get the raw burst speed of the modem
in characters per second (cps). You will often see
the term Baud erroneously used as a synonym for BPS. To learn the difference,
see the essay on RS232C. A 1200 BPS modem can
send about 120 characters per second, a 2400 BPS, 240 characters. How close
to the theoretical speed you achieve depends on your protocol. Zoomit and
ZMODEM are very close to 100% efficient. XMODEM can be as low as 10% on
packet nets.
- BQM
- Business Quality Monitoring. A new protocol to
ensure that messages do not get lost between NT servers by issuing send
and forget messages.
- braces
- Braces, also known as curly braces, look like this {}. Java uses
them for surrounding the bodies of loops, methods and classes.
See parentheses, brackets.
- brackets
- Brackets, also known as square brackets, look like this []. Java uses
them for surrounding indexes for arrays.
See parentheses, braces.
- Bravo
- An interface for drawing text and graphics both to screen and printer
using a PostScript engine. There was great hoopla about it then
deafening silence. I can't even find a reference to it on
the Sun site. Brave New World rewrites history.
- break
- When a modem desperately wants to gain the attention of the other modem,
it can send a long string of 0s, perhaps 250 milliseconds -- a quarter
of a second. This is a pattern that could never occur naturally in data
because it is lacking start/stop bits. Break usually means "Hold everything,
stop the world, I want to get off."
- bridge
- See peer, design patterns.In datacommunications a bridge is a dumb
device to link together to LANs. It moves all messages from one net to
the other, independent of where the messages are destined. See router.
- browser
- A browser is a program to surf the web and run Java applets. How can
you find out which browser is running your Applet? This code came from
Dennis Brake dbrake@mitre.org.
public void init ()
{
if (getAppletContext().toString().startsWith ( "netscape.applet.MozillaAppletContext" ))
{
environment = NETSCAPE_BROWSER;
}
else if (getAppletContext().toString().startsWith ( "com.ms.applet.GenericAppletContext" ))
{
environment = MICROSOFT_BROWSER;
}
else if (getAppletContext().toString().startsWith ( "sunw.hotjava.tags.TagAppletPanel" ))
{
environment = HOTJAVA_BROWSER;
}
else if (getAppletContext().toString().startsWith ( "sun.applet.AppletViewer" ))
{
environment = APPLETVIEWER;
}
}
- BSOD
- Blue Screen Of Death. When
Microsoft NT crashes, it posts a text-mode register dump with
white text on a blue background.
- bubblegum
- The technical term for housekeeping code, particularly
mindless, verbose housekeeping code or glue code that really
should not clutter application specific code, but because of the
Java language design, cannot easily be hidden inside library
classes. See plumbing.
- builder
- See design patterns.
- BuildHTML
- BuildHTML will scan a directory tree of *.gif,*.jpg files and
build HTML pages with icons for all the files. See the docs or download the source.
- Business Java
- The full Java language, including the AWT and the enterprise
communications. There are subsets of it for small devices. See
Personal Java, Embedded Java, Windows CE.
- button
- labeled push-button e.g. an OK button.
- BYACC
- a parser based on YACC that generates Java source code. See parser.
- byte sex
- See endian