Opening up new ports to Java with javax.comm

One of the more interesting technologies to come out of Sun's Java Software Division recently has not had nearly the fanfare of Java3D, JFC, or even the 1.2 version of the JDK. I'm talking about the communications library: javax.comm....

My ENIGMAtic Java Ring

The Java Ring was a tremendous sensation at the JavaOne conference at Moscone last March. After the initial excitement of Java running on a ring had passed, the main question on developers' minds was: How do I program it? Even more...

Using threads with collections, Part 2

In this second part of his discussion on using threads with collections, Chuck McManis subsets a collection, discusses the issues that arise when multiple threads use it, and demonstrates, via a unique applet, what is going on inside...

Using threads with collections, Part 1

This first article in a two-part series defines the issues associated with multiple threads and collections, then describes a collection that starts off simple but gets much more complicated on the way to becoming thread-aware.

An in-depth look at Java's character type

Some aspects of the Java language look like C but differ in significant ways. One of the most fundamental of these is the representation of characters. What started for me as a simple question "Why is PrintStream, the stream used by...

A first look at Borland's JBuilder IDE

When Java was first released, Borland was one of the first companies to enter into the Java tools market. That entry consisted of some pasted-on attachments to their C++ product Borland C++ 5.0. This strategy was similar to the one...

A look at inner classes

Probably the most controversial change in JDK 1.1 was the introduction of inner classes. The controversy stems from the fact that most people consider inner classes to be a change to the Java language, and thus inappropriate to a...

Take an in-depth look at the Java Reflection API

When you are creating tools for a programming language that are written in that programming language, sometimes you have to look "under the covers." The process of inspecting components of the program for meta-information -- that is,...

Take a look inside Java classes

The Java language's safety features often make it difficult to get to information about a Java class other than what the Java virtual machine wants you to know. This month I'll take a look at class files with an eye toward...

Build an interpreter in Java -- Implement the execution engine

One of the nicer aspects of programming in Java is that once the foundation is solid, building upon it is easy. Now that we have our interpreted language parsed into Java objects, implementing the execution engine is straightforward....

How to build an interpreter in Java, Part 2: The structure

Constructing an interpreter in Java ties together many different programming techniques. Java object orientation makes implementing the interpreter both straightforward and easy to grasp by any programmer. Part 2 of this column looks...

How to build an interpreter in Java, Part 1: The BASICs

Complex applications include a large number of configuration options, and these applications often can be dynamically programmed using scripting languages (also known as macro languages). If you use Java to create an interpreter for a...

Lexical analysis, Part 2: Build an application

Building on the lessons gleaned from last month's article, learn how to convert human-readable text into machine-readable data using a StreamTokenizer in an actual application. (3,400 words)

Lexical analysis and Java: Part 1

Reading configuration information, interpreting parameters, and importing data are tasks that call for simple parsers in your Java application. Java provides some basic tools in the form of lexical analyzer classes to make this task...

Code reuse and object-oriented systems

The power of object-oriented systems lies in their promise of code reuse. This promise is predicated on the assertion that if you build generic objects they can be used and reused. Some people use the Java notion of "interfaces" to...

Container support for objects in Java 1.0.2

Many aspects of programming revolve around the organization of data structures. In the object-oriented world, organizing objects into containers has become a high art. This column will look at container support in Java 1.0.2 and will...

Not using garbage collection

Java is a garbage-collected run-time system, which frees the programmer from manually tracking allocation and deallocation of memory. However, as in manually managed systems, performance can be improved if you think ahead about the...