"If you have ever spent time writing your own parsing code, you may find this tool
Every Java developer is familiar with "Javac" the Java compiler, but it's time more folks
discovered "JavaCC," a powerful recursive descent parser generator from the SunTest division
of Sun Microsystems. If you have ever spent time writing your own parsing code, you may find this tool useful.
Your grammar is defined in a file along with parser settings, such as the amount of lookahead, the case
sensitivity of the lexical analysis, and the handling of Unicode characters. JavaCC generates a Java
parser for your grammar and allows you to intersperse Java code within the parser itself, facilitating
the manipulation of the tokens during parsing.
Tokens are parsed into an instance of a "Token" class, which exposes a public instance
variable of type java.lang.String. This variable, a string representation of the parsed
token, is readily accessible to the developer and can be modified or utilized in whatever ways you
If you feel unsure about how to get started, you may want to have a look at the example grammars
that the JavaCC team has provided with the tool. These include multiple versions of Java, HTML,
CORBA 2.0-IDL, and even one for JavaCC itself. These are great ways to start learning about how
to create your own grammar files for use with JavaCC.
Finally, there are useful debugging and error reporting features provided to help you locate problems
as you go. JavaCC has been certified 100% Pure and is freely available from Sun. Have a look at
Danny Malks is a Java Consultant for Sun Microsystem's Java Design Center in McLean, VA.
Competition Is No Match for InstallAnywhere
"...the most full-featured cross-platform installer on the market today."
As any developer who has tried to deploy a Java application knows, it isn't so easy to get a
"write once, run anywhere" Java application to run on the numerous operating systems
available in the marketplace. InstallAnywhere from Zero G Software
(http://www.ZeroG.com) makes these problems go away with the
most full-featured cross-platform installer on the market today.
The product, written in Java, is cross-platform through-and-through. Instead of specifying a default
installation directory in a Windows-like "C:\" format as InstallShield's Java Edition
requires, InstallAnywhere allows more generic constructs like "Programs Folder (Platform Default)" and "Boot drive." In case you do need to get down into platform details, InstallAnywhere facilitates that as well, allowing custom Registry entries, access to platform-specific folders, targeting of particular files or folders to specific platforms, and even the ability to execute native code during the installation.
Features like automatic classpath and "main" class detection make building a
successful installer nearly foolproof. Once you've built an installer, InstallAnywhere's LaunchAnywhere
technology takes over, turning your Java application into a double-clickable icon as familiar to end
users as any native application. LaunchAnywhere does a lot more, too: finding Java VMs automatically
even if they've been moved or upgraded, setting custom icons, and mapping documents to your application.
There are competitors in this market, most notably InstallShield's Java Edition and Marimba's Castanet,
but neither matches InstallAnywhere's feature completeness and ability to target platforms other
developers seem to have forgotten about, most notably Mac OS. It's not hard to see why major players
in the Java industry such as Sun and IBM have chosen InstallAnywhere as their Java application
deployment tool. Whether deploying software over the Web, or via traditional media such as CD-ROM,
InstallAnywhere is the perfect choice.
Adam Fingerman is a Java Consultant in CA.
Significantly Improved Quality
"WebLogic's Tengah Application server is, put simply, the best application server software
I have ever worked with."
Weblogic's Tengah Application server is, put simply, the best application server software I have ever
worked with. Weblogic
(http://www.weblogic.com)was actually the first Java company. In the
pioneering days of JDBC, Weblogic provided the first JDBC drivers as well as three-tiered drivers that
allowed Applets to access relational databases. Tengah provides robust connectivity to Relational Databases,
as well as the fastest Java Servlet API-compliant Web server, a central management system for RMI, the
first Enterprise JavaBean-compliant server, and HTTP tunneling for proxied access to data. Weblogic
provides all of this and also includes phone and email support with an incredibly fast turn-around time.
I have been developing Java applications for more than two years. Weblogic's products have significantly
improved the quality of the solutions I've implemented.
Simplify Deployment and Lower Costs
"Mocha is a good example of how Java technology simplifies deployment, lowers cost, and
justifies a thin client architecture."
(http://www.mochasoft.dk) Mocha Telnet, TN5250, and TN3270 is a simple
Java applet/application that provides anyone with a Web browser telnet or 5250/3270 terminal emulation.
Mocha uses relatively simple Java networking APIs to provide an inexpensive alternative to purchasing
and installing terminal emulators on each PC that needs access to a server, mainframe, or minicomputer.
Mocha can be deployed by placing the necessary files on your Web server and sending the URL to any users
that need access. Mocha is a good example of how Java technology simplifies deployment, lowers cost,
and justifies a thin-client architecture.
Russell Castagnaro is the Chief Technical Architect and Java Practice Leader for DataHouse,
Inc. in Honolulu, HI.
VisualAge for Java's Proven Strengths
"IBM has put together a powerful, easy to use, extendible Java development tool."
Get ready to rediscover the pleasures of Java programming as they were meant to be! With the release
of the long awaited 2.0 version, VisualAge for Java
(http://www.software.ibm.com/ad/vajava/), gets my vote as the Premier Integrated Development Environment
(IDE) on the market today. Building on the proven strengths of its VisualAge Smalltalk product line, IBM
has put together a powerful, easy-to-use, extendible Java development tool. At the very least, this tool
will remove much of the tedious aspect of writing Java code, and will probably change the way that developers
think about their craft.
Too numerous to list in their entirety, key features of the tool include Incremental Compilation, extensive
code wizards, integrated version control support (even built into the entry-level product!), an excellent
plethora of browsing, searching, cross-referencing and editing windows, support for Java Beans, industry
leading Visual Programming capabilities, open APIs to extend the tools facilities, pleasing visual aesthetics,
powerful debugging features, and support for accessing legacy systems of many flavors. Integrated is
definitely the keyword, providing developers with an environment that effectively supports their single
goal of rapidly writing maintainable, well designed object-oriented Java systems.
Roger Spall is a Senior Consultant/Trainer at The Object People in Ontario, Canada.
A Promising Object-Oriented Framework: IBM
"Without a doubt, the most promising object-oriented framework is IBM SanFrancisco."
From the dawn of software engineering, there has been much effort focused on minimizing software
development time and cost. Over the years, several paradigms have been introduced and today the object
paradigm is the most promising. With collections of business objects integrated into one or more
frameworks the application development becomes a little different than the traditional approach.
Developing applications out of business objects organized in frameworks is very promising and represents
the way applications are expected to be built in the future. Because developers will only have to adapt
the business objects to their special needs, the development time and cost will decrease dramatically.
Without a doubt, the most promising object-oriented framework is IBM SanFrancisco
(http://www.ibm.com/Java/Sanfrancisco/). It is implemented on the Java platform and uses Java RMI
as the communication protocol. The functionality of SanFrancisco is implemented in three layers: the
foundation and utilities, common business objects, and core business processes. The framework is fully
customizable. Although development is not complete, it is already used in several large companies.
We believe that business objects and frameworks will be important and IBM SanFrancisco is far beyond the
competition. Therefore I choose SanFrancisco for the best development product that surfaced this year.
Promoting the Network Computing Approach
"Lotus eSuite is a good way to set standards in Java-based business productivy tools."
Although some projects for converting mainstream user productivity applications to Java have failed,
Lotus eSuite has a good chance to be the first
successful product. In contrast to other developers (e.g., Corel), Lotus did not port the existing
Windows applications but started the development from scratch. The eSuite product line consists of
the eSuite WorkPlace and the eSuite DevPack. The WorkPlace is a collection of business productivity
applets and system services. Even more important is the DevPack, which is a set of programmable end
user applets that developers can use for their applications in a component fashion. The eSuite promoted
the network computing approach where the applications and the data are stored separately on the server.
This approach has several advantages (and disadvantages) compared to the fat client. Lotus eSuite is a
good way to set standards in Java-based business productivity tools.
Matjaz B. Juric is a Researcher at the University of Maribor in Slovenia.
Visual Café Has the Ear of Developers
"Visual Café is one tool that comes closest to matching the astonishing versatility of
the Java language for the Java developer."
When you think of versatility in a tool, you think of applying it to many different types of sizes and
tasks. Symantec's Visual Café
(http://www.symantec.com/domain/cafe/) is one tool that comes closest to matching the astonishing
versatility of the Java language for the Java developer. It may not cover the area of embedded Java as
well as Sun, and it tails off at the high end where tools like Progress Software's Apptivity have focused
on distributed system architectures, but for the large middle ground where the majority of Java developers
play, Visual Café is the undisputed frontrunner.
Symantec has always focused on getting its foundation in order first for its tools, and
Visual Café is no exception. Its Café tool was the best tool on the market when it arrived,
and adding a visual front end to it brought it an even larger audience. By keeping in step with JDK 1.1
support, as well as the evolving JavaBeans and Enterprise JavaBeans specifications, users of Visual Café
have stayed as close to the bleeding edge as many would consider safe.
Visual Café plays well in the corporate world but mainly on medium-sized projects. Once it
builds more bridges to enterprise-level Middleware, it could help Java in its quest to show how it can be
as much an enterprise player as C++ is. Moving Java is more than a task for one single company, but if
anyone has the leverage and the ear of developers to make it happen, it's Symantec.
John Brugge is a Senior Staff Specialist at Compuware Corporation in Madison, WI.
The Maturing of Java's GUI Capability
"Swing represents the maturing of Java's GUI capability, and should allow commercial quality
interfaces to be developed."
The 1998 Java Market saw the release of Swing, the GUI toolkit classes that are designed to replace the
Abstract Window Toolkit (AWT). Swing is 100% Java, which allows it to overcome many of the problems
associated with the AWT. Because there are no underlying peer components, GUIs no longer have subtle
differences in behavior between platforms. It is no longer limited to supporting components found on
every platform—Swing has a rich set of components, including trees, tables, toolbars, and split
panes. Best of all, because everything is written in Java, you can adapt most aspects of the components'
appearance and behavior. One impressive feature is its ability to change the look-and-feel of GUIs. In
general, the design of Swing is excellent, and leagues ahead of any third-party GUI toolkit that I have
seen. The speed of Swing is still acceptable even on older PCs (100 MHz Pentiums), and Sun is still
tweaking its performance. Swing represents the maturing of Java's GUI capability, and should allow
commercial quality interfaces to be developed. The development of new JIT compilers is making performance
less of an issue-in my opinion, the major barrier to developing commercial quality applications is the
excessive number of bugs in the JDK.
Download the JFC (including Swing) at:
Alex McManus is a Researcher at the University of Wales, Aberystwyth in the UK.
So Many Platforms!
"The thing that blows me away is that it works on so many platforms."
Kaffe (http://www.kaffe.org) is my Java product choice. It's a
complete implementation of PersonalJava 1.1, and one edition of it is free software (licensed under the
GNU GPL). The thing that blows me away is that it works on so many platforms. Kaffe's AWT has a rather
nice look to it, too. Kaffe is divided into two product lines: the OpenVM Desktop Edition (free) and the
OpenVM Custom Edition (non-free), which is targeted at embedded system developers. While everyone is
talking about Java for embedded systems, Transvirtual is bringing a product to market, and providing
some excellent free software at the same time. Hot damn!
Brian Jepson is a Programmer/Consultant in Providence, RI.
One Tool Can Make a Difference
"I tell every client I work with to use one simple tool—the tool is JUnit."
Every client I have uses different tools: IDEs, modeling tools, visual this and thats. But I tell every
client I work with to use one simple tool that can make a huge difference to productivity and quality. The
tool is JUnit—a simple testing framework developed by Erich Gamma and Kent Beck. It's easy to integrate
with your environment, easy to use, and inexpensive (in fact, free!). The tool helps you build and run
tests that dramatically reduce the time it takes to find bugs. It is certainly the most useful tool I use.
See Java Report ("Test-Infected: Programmers Love Writing Tests," Vol. 3, No. 7, 1998), and
download the framework from
Martin Fowler is an Independent Consultant in Melrose, MA.
Getting to the Heart of Java
"It is a welcome complement to Sun's official specification."
Inside the Java Virtual Machine, by Bill Venners, publisher: McGraw-Hill/ISBN: 0-07-913248-0
In this superb piece of work, Bill Venners explains in detail the workings of the Java virtual machine
(JVM) by presenting possible implementations of many parts of that intricate piece of software. It is
therefore a welcome complement to Sun's official specification. Each concept is clearly presented,
often with the help of sample code. The accompanying CD also contains enlightening demos about the
inner workings of the virtual machine. This book will be greatly appreciated not only by VM implementers,
but also by anyone just curious to understand a component that is at the very heart of Java.
Antoine Trux is a Project Manager at Nokia Research Center in Helsinki, Finland.