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...


The basics of Java class loaders

Class loaders are one of the cornerstones of the Java virtual machine (JVM) architecture. They enable the JVM to load classes without knowing anything about the underlying file system semantics, and they allow applications to...


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...


Load More