EditorialGlobal Analysis

This issue contains a mix of columns, a review, and three in-depth articles. In addition, there are several important Letters to the Editor highlighting some errors in a recent guest column ("Poorly Designed Features of C++ Constructors," Journal of Object-Oriented Programming, (13)11: 4–10, March 2001). These letters also clarify some issues related to the important subject of C++ constructors.

Dominique Colnet and Olivier Zendra have written this month's Eiffel column. They focus on how global system analysis has been used effectively to produce a highly successful open source implementation of Eiffel. The compiler itself utilizes an object-oriented (OO) architecture and features dynamic dispatch in contrast to the more usual conditional dispatch. The efficiency of this compiler is evident by the benchmark of being able to read, parse, analyze, and verify 80,000 lines of Eiffel code, as well as generate and write the intermediate C code in about 6 seconds on a 550 MHz Pentium 3 processor.

Andrew Koenig and Barbara Moo continue their outstanding series "Rethinking How To Teach C++, Part 7: Payback time."

We also feature three in-depth articles in this issue. Thomas Kühne's article "A SmallTalk for Students—A Giant Leap for Studentkind, Part 1" describes the desirable properties of a beginner's OO programming language and environment. Smalltalk is then compared to other languages to determine how well the languages provide support for these properties. Anyone learning or teaching OO will find this article of interest.

Chung-Yeung Pang's article "A Design Pattern for Type Extension With Facets and Decorators" presents a design pattern for type extension. The pattern separates the implementation of the usage requirement extensions from the implementation of the actual object.

The article "Dynamic Java Program Corpus Analysis, Part 1"—by Chung-Chien Hwang, Shih-Kun Huang, Min-Shong Lin, and Deng-Jyi Chen—discusses the optimization of Java runtime systems using a pattern-based profiler.

It has been known for a long time that Java class files can be decompiled, sometimes producing the exact source code that produced the class files. For this reason, obfuscators have become increasingly important in order to protect the intellectual property encapsulated in the Java sources associated with a suite of class files. Two important Java obfuscators are reviewed in this issue.

I hope you enjoy this issue.