June 2002 Java News

Sunday, June 30, 2002

IBM's released Eclipse 2.0, a modular, open source integrated devlopement environment for Java and many other languages. New features in version 2.0 include:

Java 1.3 or later is required.

Sun's posted a maintenance release of Java Specification Request 67, Java APIs for XML Messaging. This has bnow been split into JAXM 1.1 and SAAJ 1.1. JAXM implements SOAP 1.1. SAAJ covers is an API for SOAP with Attachments that can be used by other specs like JAX-RPC without depending on the rest of JAXM.

Jason Hunter's updated his com.oreilly.servlet package to add a MultipartRequest file upload tool with pluggable file renaming logic.

Saturday, June 29, 2002

Sun's released version 1.0 of the Java 2 Enterprise Edition (J2EE) Management Specification and Reference Implementation 1.0. This defines "a management information model for the J2EE platform, the J2EE Management Model. The model is designed to be interoperable with many management systems and protocols. This specification includes standard mappings of the model to the Common Information Model (CIM), an SNMP Management Information Base (MIB), and to the Java object model through a server resident Enterprise JavaBeansTM (EJBTM) component, known as the J2EE Management EJB Component (MEJB). The MEJB provides interoperable remote access to the model from any standard J2EE application."

Sun's also released version 1.0 of the J2EE Deployment API Specification and Reference Implementation. This "defines standard APIs to enable a deployment of J2EE components and applications. It is intended to enable the development of platform-independent deployment tools. The J2EE Deployment Specification can be implemented as an extension to the J2EE 1.3 platform and will be a required component of the J2EE 1.4 platform."

Friday, June 28, 2002

I just had an experience that was shocking in its usability (and in a good way), a real man bites dog story. A couple of readers had pointed out to me that I'd made a silly mistake in two of the diagrams for Processing XML with Java. Since these diagrams had originally been drawn in Visio 5, and OpenOffice Draw wouldn't read my Visio documents, I pulled the Visio CD out of my CD binder, inserted it in my CD-ROM drive and dual-booted my new PC into Windows where I proceeded to install Visio.

What's so shocking about this? It's what I didn't have to do. At no point did Visio ask me for my name and serial number. At no point did I have to hunt through my disaster area of an office until I found the Visio manual and its associated serial number hiding under seven outdated manuals for various discontinued products and about a pound of cat dander. It just installed and worked. Of course, I am still using Visio 5. (It was the first version I bought, and given my limited needs I never saw much point to upgrading.) Now that Microsoft has acquired Visio, I somehow doubt that current versions are this customer friendly.

Sun's released verrsion 1.3 of JavaMail, a Java library for interacting with SMTP, POP, IMAP, and other mail systems. This is mostly a bug fix release. Java 1.1 or later is required. (Readers may recall that Sun was originally hopinng to move this release to require 1.2 or later, but apparently customer feedback convinced them to continue supporting 1.1.) The JavaBeans Activation Framework is required for JavaMail.

Sun's released version 1.0.2 of the JavaBeans Activation Framework (JAF). JAF enables developers "to determine the type of an arbitrary piece of data, encapsulate access to it, discover the operations available on it, and to instantiate the appropriate bean to perform said operation(s). For example, if a browser obtained a JPEG image, this framework would enable the browser to identify that stream of data as an JPEG image, and from that type, the browser could locate and instantiate an object that could manipulate, or view that image." This release fixes various bugs.

Thursday, June 27, 2002

Sun's released version 1.1.3 of JavaHelp, a "platform-independent, extensible help system that enables developers and authors to incorporate online help in applets, components, applications, operating systems, and devices. Authors can also use the JavaHelp software to deliver online documentation for the Web and corporate Intranet."

Sun's posted a patch for JAXP 1.2 that fixes "an incompatible operating mode in the XSLTC portion of JAXP."

Sun's posted the public review draft of the Java Servlet API 2.4 specification. Changes since version 2.3 include:

Comments are due by July 26.

Wednesday, June 26, 2002

The Jakarta Apache project has released JXPath 1.0, an open source XPath interpreter for Java. What is unique is that JXPath can apply XPath expressions to graphs of objects of non-XML types such as JavaBeans, Collections, arrays, Maps, Servlet contexts, and combinations thereof.

Tuesday, June 25, 2002

The Jakarta Apache Project's posted the third beta of Ant 1.5, the popular XML-based build tool for Java. Ant's been showing up more and more in my work so I decided it was finally time for me to learn it. Thus yesterday's project was to convert the makefile for Processing XML with Java over to Ant. Along the way I learned a few things:

Version 2.4.7 of the open source JBoss Enterprise JavaBeans application server has been released to fix a few bugs. JBoss includes JBossServer, an EJB container and JMX infrastructure, JBossMQ for JMS messaging, JBossMail for mail, JBossTX for JTA/JTS transactions, JBossSX for JAAS based security, JBossCX for JCA connectivity, and JBossCMP for CMP persistence. It integrates with the Apache Tomcat servlet container. JBoss is published under the LGPL.

Bernhard Bablok's Plotlib Toolkit 0.2.0 is a GPL'd Java library for plotting and printing mathematical functions and statistical data. It is based on the Java 2D API.

Monday, June 24, 2002

Slava Pestov's posted the second prerelease of version 4.1 of jEdit, an open source programmer's editor written in Java. jEdit's been my default editor on Windows for a year or so now, but since my move to Linux I've noticed some problems with non-ASCII characters that didn't occur in Windows. Possibly, this is a problem with either the fonts or with the Sun's JDK 1.3.1 for Linux. I need to investigate further.

Sun's posted a public review draft of the JavaServer Pages 2.0 Specification. Comments are due by July 29.

Sunday, June 23, 2002

My Linux desktop system is mostly working. I've been using it pretty much non-stop for the last week, and I haven't had to dual-boot into Windows once. I only had to boot-up my old Windows PC yesterday, and that was just to transfer a few extra files I'd forgotten to move when I first made the transition. I also had to use my Windows laptop once to run some configuration software for the print server that was Windows only.

The print server isn't working yet, but I'll probably get that fixed soon. The one remaining hiccup is the lack of a sensible backup strategy. For the moment I'm just copying my home directory onto one of my servers periodically. However, for as yet undetermined reasons that often fails before copying every last file. I really need a decent tape backup system. I have a very reliable, rather expensive SCSI DLT drive I've been using for the last couple of years; and I'd like to continue using it. However, it's dedicated to my Macs, and I haven't found any Linux backup software that can also back up Macs. In reverse, I haven't found any Mac backup software that can also back up Linux. :-( I'm beginning to believe this just isn't possible. Surely someone, somewhere, has a heterogeneous network of Macs and Unix boxes that they back up to a central server?

I've found that the typical response of the backup software companies is that they can back up anything that can be mounted on the local desktop, which simply isn't true. It ignores issues of file ownership, differing metadata, and incompatible file naming conventions between different systems. For instance, mounting the Linux disk on my Mac truncates long file names in a very ugly way. There needs to be client software on each system that understands the local conventions and can translate that into a byte stream the server can write to tape. I have that for the Mac. I have that for Linux. I have that for Windows. I just don't have anything that can do all three at once.

Generally these missives about switching to Linux attract e-mails from Windows and Mac users that essentially say, "Linux is too hard. If you just stuck with Windows/Mac, life would be easier." Well, actually, no it wouldn't. I admit that making the transition to a new system takes some real effort, but it is not fundamentally harder to get all this set up on Linux than it is on a Mac or Windows. It's just that this is what I happen to be doing right now. Let's look at a few examples:


On my new PC, Linux recognized and configured my onboard Ethernet automatically. Windows 2000 required a separate driver disk.


Sound did not work initially with either Windows or Linux. Getting it to work with Linux required a Google search to discover the correct arcana to put in my startup files. Getting it to work with Windows required loading the right driver from a CD, a process that crashed several times before it first worked. It also took me a while to realize that this was what I needed to do because the sound would play from the CD, just not from the computer.


My SGI 1600SW flat panel did not work at full resolution with either Windows 2000 or Linux out of the box. However, it did work on Windows 2000 once I installed the right drivers from the graphics card CD. Getting it to work with Linux required outside help and fiddling around with XF86 config lines I still don't understand. However, when I initially installed this monitor on my old NT box, it required a new video card, even though the SGI salesperson assured me it wouldn't.

The same model monitor also required a new Formac video card in my Mac. However, this card is not supported under Mac OS X. The monitor simply will not work under Mac OS X. Apple, Formac, and SGI all think I should replace my $2000 monitor with a new $2000 monitor just to upgrade the OS. They simply disagree about whether I should buy a new Apple $2000 monitor, a new Formac $2000 monitor, or a new SGI $2000 monitor.

DVD player

Much to my surprise, it was easier to play DVDs on Linux than Windows 2000. That is, it worked out of the box once I had the sound working. I did not need to install anything extra. Windows 2000 required extra software and drivers, and crashed several times while setting everything up.

My Macs can print to the LaserWriter fairly easily, but only because I have an extra $100 gateway to connect them to the LocalTalk network. None of them actually support the old Apple network protocols the printer uses. My old NT box can also print to the LaserWriter, but only because it has several hundred dollars of extra software that let it to talk to Apple computers and printers. My Windows 2000 laptop (two years old now) has never been able to print. My new Linux box has been able to print directly from the parallel port but not via the network.

The bottom line is that current computer hardware (and its interface to computer software) is far too complex. It also is far too incompatible with itself. This year's hardware rarely works with last year's hardware. Sometimes it can be forced to work, but that often requires substantial extra investment and effort.

This isn't just a problem in the computer world either. Most DVD players don't have coaxial outputs needed for a lot of perfectly good TVs. When I bought a DVD player a couple of weeks ago, I managed to find an adapter box so I didn't have to throw out my old TV; but it still ended up costing me $30 for the adapter box that I shouldn't have had to pay. When I gave my less technical brother a DVD player for Christmas, he ended up buying a new TV just to use the DVD. My cable box remote isn't working any more, but Cablevision doesn't have any new remotes that work with my old cable box.

Anything but the most generic systems are likely to require an expert to set up. Wise users do not attempt to upgrade their printers/networks/PCs/audio equipment/monitors until they absolutely have to. They put it off for as long as possible, and then replace everything at once. There is no upgrade market for PCs, not because users don't want bigger monitors/faster printers/better sound but because upgrading is too painful.

Saturday, June 22, 2002

Sun's posted a beta of the Java 2 Standard Edition 1.4.1 (a.k.a. JDK 1.4.1). Version 1.4.1 adds support for 64-bit application for the Intel Itanium processor. However, there's no JIT, and the Java Plug-in and Java Web Start are not yet supported. In addition the javac compiler is now thread safe, and contains several very picky fixes for conformance to the Java Language Specification, none of which seem likely to cause any major problems for existing code.

Bundled with this release you'll also find the first beta of Java Web Start 1.2. New features include customizable splash screens, one-click installation on Windows, support for Non-UTF-8 encoded JNLP files, and about ten bug fixes.

Sun's released version 2.2 of the Java Card Platform Specification and Java Card Development Kit. This is an API and library for running Java programs on smart cards and other devices with limited memory. New features include:

Friday, June 21, 2002

I'm pleased to announce that the second edition of XML in a Nutshell has been released and can now be found at fine computer bookstores everywhere including Amazon.com. Powells, Buy.com, and Barnes & Noble show it on back order; but presumably they'll get stocks soon. Amazon almost always sells out of their initial runs of my books within the first few hours of me announcing it here, but they generally get stock back in very quickly. The list price is $39.95, but Amazon has its usual 30% discount.

For those of you who've read and enjoyed the first edition, the obvious question is what's new? and is it worth shelling out another $30 to update? The latter question may depend on your pocketbook and just how dog-eared your copy of the first edition is, but I can tell you what's new.

The single biggest addition since the first edition is complete coverage of the W3C XML Schemas. Scott wrote a tutorial chapter and I wrote a reference chapter that together cover every last element and attribute in the language. Jeni Tennison did an excellent tech review of those chapters, and taught us many things about the schema spec that were far from obvious. I think the result is the most complete and accurate reference to the W3C XML Schema Language you'll find anywhere. I also wrote a new chapter about RDDL, the Resource Directory Description Language, an XML application based on modular XHTML that can be used for XML documents placed at the end of namespace URIs.

The remainder of the book is very similar to the first edition in overall structure and layout. However, we did rewrite every chapter to bring it up to date with the state of the art of XML in 2002. In the process, we added a lot of new and updated content to the existing chapters including:

Of course, we also corrected any mistakes we found along the way, or that had been pointed out to us by readers of the first edition. This includes the infamous bug on p. 35 that replaced ?, *, and + with *, *, and *. (FYI, I have no idea how that slipped in originally. Scott went through the drafts of the first edition and verified that it was correct right up through the final page proofs. Somewhere between the page proofs and the printer, the ? and + got changed asterisks.) Overall, though, I think the first edition was a pretty good book and this one's even better. If you're working with schemas, then I think you'll want a copy of the second edition immediately. If not, you may be able to hold out until the pages start falling out of the first edition (which may take awhile, O'Reilly uses pretty durable binding.) The second edition of XML in a Nutshell is $39.95 and is now or soon will be available at bookstores everywhere.

Thursday, June 20, 2002

Sun's posted a public review draft of the Enterprise JavaBeans 2.1 specification.

Sun's posted the public review draft of Java Specification Request 75 (JSR 75), PDA Profile for the J2ME Platform, in the Java Community Process. This profile describes "user interface and data storage APIs for small, resource-limited handheld devices. It is based on the Connected, Limited Device Configuration (CLDC)." Comments are due by July 18.

Sun's posted the public review draft of Java Specification Request 69 (JSR 69), Java OLAP Interface, in the Java Community Process. JOLAP is a pure Java API for J2EE that supports the creation and maintenance of OnLine Analytical Processing data and metadata. Comments are due by July 19.

Finally, Sun's posted the public review draft of Java Specification Request 130 (JSR 130), OSS IP Billing API, in the JCP. This profile describes "user interface and data storage APIs for small, resource-limited handheld devices. It is based on the Connected, Limited Device Configuration (CLDC)." Comments are due by July 19.

Wednesday, June 19, 2002

The Apache Jakarta Project has released POI 1.5.1, an open source Java library for "manipulating various file formats based upon Microsoft's OLE 2 Compound Document format. OLE 2 Compound Document Format based files include most Microsoft Office files such as XLS and DOC."

The Apache Jakarta Project has also released version 4.0.4 of Tomcat, the servlet container/JSP engine for the Apache web server and the official reference implementation of the Servlet 2.3 API and Java Server Pages 1.2. Version 4.0.4 is a bug fix release.

IBM's alphaWorks has released MPEG-4 Video for the Java Media Framework, a plug-in that enables decoding of MPEG-4 video in Java. JMF 2.1.1 is required.

 Smyle (Storage that Makes Your Life Easier) is an open source hierachical/relational database written in and for Java. It is deliberately and aggressively not based on SQL.

Francois Beausoleil's Java GUI Builder 0.4a reads XML descriptions of GUIs to figure out what to draw on the screen. This is published under the GPL.

The JDistro Project has posted version 0.2.2. The JDistro Project is attempting to build a Java distribution (in the Linux sense of the word). The main subprojects are Wharf, the application launcher, and Korte, a desktop with document management and access to remote applications. Version 0.2.2 adds an icon dock, undecorated frames, icon types, and a categorized menu in the wharf.

Tuesday, June 18, 2002

From the "I didn't think you could do that in Java!" department comes Ron Breukelaar's KutttPech 0.3, an MPEG-player written in Java that can play MPEG-1 within a browser without downloading any plug-ins. It plays Layer 2 audio on most browsers with Java 1.1 or 1.2 and on all browsers with 1.3. It can cut P-FRAMES and B-FRAMES if the machine is too slow to handle them, so as to maintain a small lag. It can also run outside a browser as an application. KutttPech is also published under the GPL.

jregex 1.2_01 is an open source regular expression library for Java that supports Perl 5.6 regexp syntax, Unicode, named groups, incomplete matching, and more. It runs on Java 1.1 and later.

 Anthony Eden's FormProc 1.0 is an open source Java library for handling and validating forms, including Web forms. Forms are represented as objects which manage a collection of form elements. Submitted data can be validated through several mechanisms including regular expressions, BSF-supported scripting languages, and custom Java classes.

Sebastiano Vigna's released version 1.2 of fastUtil, a library of type-specialized Java hash maps and sets with a small memory footprint, which feature faster access and insertion than the standard Java implementations. The classes implement their standard counterpart interfaces (e.g., java.util.Map for maps) and can be plugged into existing code. fastUtil is published under the GPL.

Monday, June 17, 2002

IntelliJ's IDEA certainly has its partisans. From the e-mail I received over the weekend, you'd think I'd insulted the Macintosh (well maybe not quite that bad, but close.) I did finally manage to turn off the annoying pop-up and play around with it some more this weekend. It's a fairly nice editor, and the JUnit integration is convenient. The immediate feedback of where my code has bugs is very useful. I do wish the scroll wheel worked, but that's more an issue with the JDK 1.3 than with IDEA itself.

However, the popups continue to annoy me. A lot of correspondents did not really understand the problem. It was not that the popup appeared in the first place. It was that it continued to appear even after I'd told it to go away; and after a solid day of working with IDEA I can say that this is far more than just an isolated problem with one pop-up. The refusal of windows of various types to stay down when I tell them to stay down appears to be a consistent theme in IDEA. For instance, the errors window after a build has to be closed at least three separate times before it stays down. Why? I've seen the errors. I've read them. I closed the window to get it out of my way, so I can fix them. Why does IDEA Immmediately popup the same window again before I've had two seconds to do anything? And then why does it pop up the same text in a different window a third time? I don't understand the logic here. Similar problems are endemic in the various sidebars, though I normally only have to close them twice before they realize they should stay closed. Still, that's one time too many. When I close a window I expect it to stay closed until I open it again.

I also spent a day working with Eclipse 2.0. It also seems to be a solid choice. It has some features that IDEA doesn't and doesn't have some features that IDEA does have. I can't say there's an obvious choice between the two, except that Eclipse is free and IDEA isn't; but both products could learn something from each other and from NetBeans (which has some wizards for creating new classes that I really like as well as the best support for JavaDoc). Of course, I haven't pushed any of these environments with my real torture tests yet, like debugging a multithreaded application. There are also some serious and obvious bugs in all of these, that say to me they're not ready for release. But since I'm using betas of both Eclipse and NetBeans, I'll withhold judgement until final release.

Cayenne 1.0a1 (Alpha) is an open source object-relational persistence framework written in Java. Cayenne is published under the very liberal Apache license.

 PDFGo 1.0.2 is a $449 payware pure Java library that can parse and display PDF files.

Sunday, June 16, 2002

The Legion of the Bouncy Castle has released version 1.14 of the Bouncy Castle Java Cryptography API, an open source, clean-room implementation of the Java Cryptography Extension (JCE). It supports X.509 certificates, PKCS12, S/MIME, CMS, PKCS7, and lots of other juicy acronyms. It also includes its own light-weight crypto API that works in Java 1.0 and later, and does not depend on the JCE. Personally, I've always found the JCE to be a bit of a mess. Making it compatible with U.S. law made it a lot more complex than it otherwise would have needed to be. Thus, this lightweight API feels like a breath of fresh air.

JGAP 0.2 is an open source genetic algorithms package written in Java. It is published under the LGPL.

Slava Pestov's released version 4.0.3 of jEdit to fix one nasty bug that got introduced in 4.0.2 last week. jEdit is an open source text editor written in Java. I use it as my primary text editor on Windows.

Pestov's also posted the first prerelease of jEdit 4.1. New features in 4.1 include:

Friday, June 14, 2002

Over the last couple of days I tried out two new IDEs, both in beta, Eclipse 2.0 and what will probably be IDEA 3.0, though the version numbering isn't certain yet. I downloaded Eclipse first and tried to install it; but it turned out to require either Motif (which I don't have) or Gnome 2.0 (which hasn't been released yet, and which I also don't have). So Eclipse is ruled out, at least for now. I may revisit it in six months after Gnome 2.0 is released. Eclipse also runs on Windows, but I'm rapidly weaning myself off of that platform. Update: Franklin Chen tells me that Eclipse comes with Motif, so maybe I need to try it again. I knew I didn't have Motif so I didn't download the Motif-based installer. And Ottone Maurizio Grasso tells me I don't need all of Gnome 2.0, just libgtk 2.0, which still isn't part of my distro, but perhaps I could install it? Is it likely to get in the way of any of my existing software?

For IDEA, Brien Voorhees suggested I register for the early access program so I could try out the version with the latest features, especially since this release included some of the JavaDoc support I wanted. It seemed simple enough, so I registered and downloaded IDEA Ariadna 629 on Linux; and I begin by setting up my project. Pleasantly, unlike almost every other IDE I've ever tried, IDEA did not want me to put all my files somewhere in its directory structure. It was happy to read them from wherever I stored them. So I set up the project and began typing its first class:

package com.elharo.xml;

public class Node {

  public Document getDocument() {



And then things got weird. I haven't written the Document class yet. I've barely begun this project that's going to involve dozens of classes that reference each other. And yet IDEA keeps popping up this annoying little blue box insisting that I press Alt+Enter to choose javax.swing.text.Document or some such. I don't want to do that. That's not what this method is going to return. But IDEA just won't shut up! Every time I do or type anything that damned blue box pops up again! It is one of the most annoying things I have ever seen in an IDE. I know this code won't compile yet. I just started it. I don't need to be reminded of that constantly. I don't like pop-ups on web pages, and I certainly don't want to see them in my IDE. I tried turning off all the code completion features, but the blue box kept popping up. I can't put up with this. This alone is enough to stop me from using, buying, or recommending IDEA. There may be other good features in it, but I can't get past this.

This morning, Guillaume Laforge showed me where I could turn off that damned pop-up, so I may be able to continue. How to do it is far from obvious. But there should be a way to banish a particular pop-up once and for all, without necessarily turning them all off. In fact, if I ignore the IDE's suggestions, the pop-up should go away quickly and silently and never come back. The IDE is not smarter than I am. Hell, it isn't smarter than my cat Marjorie (shown below inspecting some code she wrote). It should not pretend that it is.

Marjorie the kitten inspects her work
Thursday, June 13, 2002

The Aegis VM Project is "an on-going effort to develop a lightweight, secure virtual machine for executing Java bytecode. The VM is intended to be an extension framework for applications or devices that dynamically load and execute untrusted extensions." The current 0.1.0 release supports all bytecode instructions, dynamic loading of native libraries, and interoperability with the GNU Classpath class library.

Mango is "a generic Java library consisting of a number of iterators, algorithms, and functions, loosely inspired by the C++ Standard Library." Iterators include bounded iterators and predicate iterators. Agorithmms include count, countIf, find, findIf, forEach, remove, and removeIf. Mango is published under the GPL.

Teodor Danciu's LGPL'd JasperReports 0.3.2   is a report-generating Java library. XML report templates are used to generate ready to print documents using data from customizable data sources, including JDBC. The output can be delivered to the screen, printer, or stored in XML or PDF format.

Peter Graves' j 0.15.2 is an open source, multiwindow programmer's editor written in pure Java. It can syntax color Java, C, C++, XML, HTML, CSS, JavaScript, Lisp, Perl, PHP, Python, Tcl/Tk, Verilog, and VHDL code. Features include automatic indentation, directory buffers, regular expressions, multifile find and replace, autosave and crash recovery, undo/redo, FTP/HTTP support, customizable keyboard mappings and themes. j is published under the GPL.

Christopher K. St. John's MinTC 0.7 alpha, a special-purpose Java servlet container designed to run from inside an application's jar file. It requires no local file system access, and can execute servlets and serve static content from within the jar. It is derived from Tomcat 4, but isn't a general purpose replacement for Tomcat.

Gaudenz Alde has released version 1.0.5 of JGraph, an open source graph component for Swing that requires Java 1.3 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. This release adds some small new features and fixes a couple of bugs. JGraph is published under the LGPL.

The Apache Jakarta Project has released log4j 1.2.4, an open source logging package for Java that allows developers to enable logging at runtime without modifying the application binary. Version 1.2.4 fixes a few bugs.

Sun's posted the Java XML Pack Summer 02 Release, a bundle of various XML related technologies including the next version of the Java API for XML Processing, JAXP 1.2. This release includes:

The big new feature in JAXP 1.2 is W3C XML Schema Language support. This release also makes the move from Crimson to Xerces-2 as the defualt implementation.

Sun has also released the Java Web Services Developer Pack (Java WSDP). This pack bundles together all of the above plus several more APIs inlcuding:

Wednesday, June 12, 2002

The NetBeans Project has released version 3.3.2 of NetBeans, a mostly open source integrated development environment (IDE) for Java. I downloaded this and checked it out yesterday. It's getting better. In fact, I would say that this version qualifies as almost usable, but it's not there yet. There are still some noticeable bugs, though perhaps not as many or as obvious as in 3.2. For one example, I saw that buttons sometimes got labeled with the variable names rather than their labels.

The biggest problem is that the user interface was frequently confusing and often did not let me do simple things like choosing the directory to put my files in. And many parts of the GUI need serious work. The file chooser dialog is as nasty as most Swing based file choosers. (Check out jEdit 4.0 for an example of a Swing based file chooser that's at least adequate, though still far from perfect.) And dialog boxes frequently required horizontal and vertical scrolling. Even worse, the vertical scroll bar was often off the screen so I had to scroll the horizontal bar to find the vertical scroll bar!

I'm still looking for a plausible IDE for Java. Several people have suggested IntelliJ's $395 payware IDEA. I may try that next. IBM's open source Eclipse has also been suggested, though version 1.0 appears to be missing several of the features I need. Version 2.0 is due out at the end of the month, and seems likely to add them.

Sun's also recently released one other contender, Sun ONE Studio 4 (a.k.a. Forte for Java 4.0). This ranges from free to $1995 payware depending on version. However, since this is based on the Netbeans code base I suspect it shares many of that platform's bugs. Java 1.3.1 or later is required.

Tuesday, June 11, 2002

You may have missed it in yesterday's media coverage of possible "dirty-bomb" attacks on a U.S. city, but there was another component to the story that was every bit as frightening, and unlike a dirty bomb attack, this one has already happened. The Bush administration has decided that it can arrest U.S. citizens and hold them indefinitely without trial or charge. They were already doing this with non-citizens, of course. This is done completely within the Executive branch with no review by the courts or Congress. I have little doubt that if this isn't met with a broad public outcry, it will soon be extended to anyone the administration chooses to label an enemy of the state; and as anyone with even a small knowledge of history knows, people labeled enemies of the state are far more often just enemies of the people in charge.

The legal justification is based on a bad Supreme Court decision form World War II. (Remember, that's the same court that decided it was OK to lock up Japanese-Americans in concentration camps.) The whole situation also violates Bush's promise that military tribunals would not be applied to American citizens; though, honestly, the distinction between citizens and non-citizens is a problem in itself. The right to a fair trial should be inalienable for everyone, regardless of citizenship or national origin. If there is actually evidence that Padilla did what the administration says he did, then he should be charged and tried. Otherwise, he should be set free.

Sun's posted the proposed final draft of Java Specification Request 135, Mobile Media API for the J2ME Platform 1.0. This JSR proposes a small-footprint API for basic audio and multimedia resources.

Gaudenz Alder's JGraphpad 1.1.1 is a Swing-based diagram editor that supports XML, drag and drop, zoom, automatic layout, print support, and so forth.

The Object Refinery has posted version 0.9.0 of the JFreeChart open source library. JFreeChart can produce pie charts, line charts, various kinds of bar charts, XY plots and scatter plots, time series, high/low/open/close charts, candle stick charts, and combination charts. Version 0.9.0 adds Gantt, area, horizontal 3D bar, and thermometer charts; logarithmic axes; and fixes various bugs.

Monday, June 10, 2002

Stuart Swerdloff and Daniel Cardin suggested I look at an external print server that would allow me to connect the parallel port of the printer to my Ethernet network. After further research, that seems like a good idea. The ones I'm considering include:

Does anybody have any experience with any of these? In particular, does anyone know if these work with a PostScript-based Personal LaserWriter NTR? I don't know how these things really work when it comes to communicating with the printer. Do they need to have any sort of printer driver or PPD for the model they're attached to? Or is that all handled between the printer and the computer while the server just passes information received over TCP/AppleTalk/NetBEUI to the parallel port? (Note: I ruled out a couple of options including the NetGear PS110 and the Connectronics PocketPro 100 because they didn't advertise support for AppleTalk.)

Sebastiano Vigna's fastUtil 1.11 provides type-specialized Java hash maps and sets with a small memory footprint, which feature faster access and insertion than the standard Java implementations. The classes implement their standard counterpart interfaces (e.g., java.util.Map for maps) and can be plugged into existing code. fastUtil is published under the GPL.

JFreeReport 0.7.3 is a report generator that takes JTable data and sends reports to the screen (print preview), the printer, or an Acrobat PDF file. Support is included for report headers and footers, grouping, functions etc. This release enhances the print preview frame to support larger reports, supports embedded TrueType fonts in PDF output, and reorganizes the element classes. JFreeReport is published under the GNU Lesser General Public Licence.

Sunday, June 9, 2002

Slava Pestov's released jEdit 4.0.2, an open source text editor written in Java. I use it as my primary text editor on Windows. This release fixes various small bugs here and there.

JFtp 0.88 is an open source GUI FTP client written in Java. Features include recursive directory upload, automatic download resumption, and the ability to recognize broken directory names.

Saturday, June 8, 2002

I was mucking around with my ten-year old Apple printer yesterday, trying to figure out how much power it drew so I could see what I could replace it with without blowing a circuit breaker, when I noticed a couple of ports on the back I'd never paid much attention to before:

Backside of an Apple Personal LaserWriter NTR

A quick hunt through the Apple knowledge base later, I discovered that this printer can actually be connected to a PC over a serial or parallel cable simultaneously with the AppleTalk connection. Today I stopped in at DataVision and picked up a 10 meter parallel cable. I plugged the DB-25 end into the parallel port on my Linux box and the Centronics 36 connector to the Personal LaserWriter and turned both on. What happened next will be no surprise to anyone who's ever worked with Linux: it still wouldn't print. LPRng couldn't recognize the printer and the Mandrake PrintTool kept wandering off into never-never land, which is still one step better than the netatalk mess from a couple of days ago when my entire computer hung repeatedly.

Never one to know when I'm beaten I tried switching back from LPRng to CUPS. Surprisingly, CUPS did recognize my printer even though LPRng hadn't. I tried the test page and a distressingly long time later, it rumbled out of the printer! Of course now I have a rather obstrusive parallel cable snaking down the hallway from my office into the bedroom where the printer lives, and I have a funny feeling my wife Beth isn't going to take too kindly to that when she gets back later today.

Parallel cable

However, my initial experiments do seem to indicate that I can disconnect the cable from the printer, print a bunch of files, and then still have them queued up when I plug the printer back in, so this is at least a reasonable temporary workaround until I get around to buying a modern printer that actually speaks TCP/IP and Ethernet. (I've been browser-window-shopping a few HP models, but I was a little surprised to discover that HP does not officially support Linux for its printers, even thoguh it supports HP/UX and Solaris.) For now, I think I'll stick with the printer I've got; but the next time it needs to go to the shop, I'll probably just replace it instead.

The last remaining must-have item before I can switch my main work onto this machine is a backup system. There've been a few suggestions, but so far nobody's pointed me at one that can handle Windows, Mac, and Linux off a single server's tape drive. Most backup software is only really capable of handling one OS, or perhaps one OS+Windows. I suspect this may be because there are very few programmers in the world who actually understand more than one OS at the level of detail needed to write backup software.

IBM's alphaWorks has released the Java Record Object Model (JROM), "a tool that provides an in-memory tree representation of instances of structured, typed information and that is based on the XML Schema data type system. JROM values either are typed, simple values for first-level data, or they are complex values that can contain an arbitrary number of elements and attributes."

Friday, June 7, 2002

Sun's posted the Java 2 Standard Edition Software Developer Kit 1.4.0_01 for Linux, Solaris, and Windows. This is a bug fix release of the JDK 1.4 Some of the bugs fixed seem pretty major. One thing they don't mention is whether or not they upgraded the bundled copy of Xalan to the latest version. Does anyone happen to know?

After wasting half a day yesterday, I've given up on netatalk. I never was able to get it to print to my Apple LaserWriter. It kept complaining about a missing /usr/share/pagecount.ps or some such. Worse yet, it was horribly unstable. Both the version bundled with Mandrake 8.2 and the latest version I downloaded from Sourceforge hung my Linux box completely every five to twenty minutes or so. I may have to break down and buy a modern printer that runs on TCP/IP and speaks LPR natively. I've wanted a new printer for years. The problem is I don't really have either the space to put it in or the amps to power it. :-(

Gaudenz Alde has released version 1.0.4 of JGraph, an open source graph component for Swing that requires Java 1.3 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. JGraph is published under the LGPL.

Jesper Pedersen's open source  EJBCreator 0.5.1 generates Enterprise JavaBeans source code based on input from the user. It can produce source code skeletons for Entity beans, Session beans, Session Synchronized beans, Message-driven beans, Value objects, primary keys, Ant build files, JUnit TestCases, and ejb-jar.xml files.

Thursday, June 6, 2002

Yesterday I succeeded in getting my new Linux box to recognize the onboard SiS 7012 chip set. Apparently Mandrake 8.2 doesn't recognize this hardware, but drivers are available, including the AC97 Intel 810 generic drivers. The remaining two things I have to do before I can move my main workstation files onto this system are figuring out how to connect it to my Apple PostScript network printer and design a reasonable backup strategy for the system.

For the printer, I hope netatalk is going to suffice. I installed it from the Mandrake CDs and started sharing files with my Macs very easily. In fact, this was significantly simpler than doing the same thing in Windows. I also verified that I could see the printer on the network. However, at that point the system crashed and required a hard reboot. This particular PC crashes a lot more than just about any system I've used for years, both when booted into Linux and Windows 2000. Thus, I half-suspect a hardware problem. However, it only seems to happen when I'm mucking around with drivers and installations so maybe it's not the hardware.

I'm not sure what I'm going to do for backup yet. I have a SCSI DLT tape drive connected to my Mac, and I'd like to use it to back up the Linux system too, but Retrospect doesn't have any Linux client software. Simply mounting the Linux disks on the Mac won't work because the Mac can't see any filenames longer than 32 characters and probably can't maintain file permissions, symlinks, and other Unix metadata. I could move the tape drive to my Qube server which has a SCSI, but the Unix backup software doesn't speak Mac. I'd have the same file metadata problem in reverse. This needs some more thought. If anyone can point me to backup software that runs on Linux or a Mac, supports DLT SCSI drives, and can back up Linux, Windows, and Mac client systems I'd appreciate it.

The Apache Jakarta Project has posted a beta of Tomcat 4.1.3, the open source servlet container/Java Server Page engine and reference implementation of the servlet and JSP APIs. Version 4.1.3 has rewritten the SSI servlet, adds an Ant based JSP compiler, fixes various problems in the administration Web app as well as assorted other bugs.

Robert Oloffson's Java Memory Profiler 0.17 (JMP) uses the Java Virtual machine Profiling Interface (JVMPI) interface to track objects and method times in a JVM . It uses a GTK+ interface to display statistics. The current instance count and the total amount of memory for each class is shown as is the total time spent in each method. JMP is written in C for Linux.

Ernst de Haan's JUMP 0.1 (The JUMP Ultimate Math Package) is a Java-based extensible high-precision math package that does caculations based on fractions, which it can convert to floating point numbers and BigDecimals.

Israel Olalla's Jcrontab 1.0  is an open source Java system that automatically executes certain programs at certain times. It includes a load-on-startup servlet that can be integrated with application servers (Tomcat, resin, Jetty, etc.). It reads and stores the crontab table from a file but is designed to include EJB and other DataSources. It includes a minimal Web interface.

Wednesday, June 5, 2002

Over the last couple of weeks I've done the initial author review and made a number of changes to Processing XML with Java. All the chapters have been rewritten. Some of the most significant changes include:

In addition, there were many minor edits, corrections, and clarifications throughout. Thanks are due to everyone who sent in comments and suggestions, especially the technical reviewers Mike Champion, Robert W. Husted, Anne T. Manes, Ron Weber, and John Wegis.

Tuesday, June 4, 2002

The Apache Jakarta Project has posted the second beta of Ant 1.5, the popular Java-based build tool.

Sun's posted a draft of Java Management Extensions 1.1.1 (JMX), a maintenance release of Java Specification Request 3 (JSR-3), in the Java Community Process.

Monday, June 3, 2002

Jaim 0.2 is a Java library that implements the AOL TOC Instant Messaging protocol. Version 0.2 adds send rate limiting and fixes a bug in the normalise function. Jaim is published under the GPL.

 FreeMarker 1.7.5 allows Java servlets to keep graphic design separate from application logic, by encapsulating HTML in templates. FreeMarker is published under the LGPL.

Java Coding Standard Checker (JCSC) checks programs for compliance with coding conventions and signs of bad coding. It is currently in beta.

OpenEJB 0.8 Beta 2 has been posted. This is an open source Enterprise JavaBeans (EJB) Container System and EJB Server. It includes EJB Servers for both local and remote access.

IBM has posted a beta of their Java 1.4 Software Development Kit for AIX. This is a port of Sun's Java 2 SDK, Standard Edition, Version 1.4.0.

Older news:

JanuaryJanuary, 2002January, 2001January, 2000January, 1999January, 1998
FebruaryFebruary, 2002February, 2001February, 2000February, 1999February, 1998
MarchMarch, 2002March, 2001March, 2000March, 1999March, 1998
April April, 2002April, 2001April, 2000April, 1999April, 1998
MayMay, 2002May, 2001May, 2000May, 1999May, 1998
June June, 2002June, 2001June, 2000June, 1999June, 1998
July July, 2002July, 2001July, 2000July, 1999July, 1998
August August, 2002August, 2001August, 2000August, 1999August, 1998
September September, 2002September, 2001September, 2000September, 1999September, 1998
October October, 2002October, 2001October, 2000October, 1999October, 1998
November November, 2002November, 2001November, 2000November, 1999November, 1998
December December, 2002December, 2001December, 2000December, 1999December, 1998

[ Cafe au Lait | Books | Trade Shows | FAQ | Tutorial | User Groups ]

Copyright 2002 Elliotte Rusty Harold
Last Modified June 10, 2002