February, 2006 Java News

Tuesday, February 28, 2006 (Permalink)

Kirill Grouchnikov has released the Substance look-and-feel 2.2. "The goal of this project is to provide a modern Java look & feel that combines graphic ideas from Windows XP / Vista and MacOS 10.4." That sounds sort of like mixing a truly excellent Cabernet with a quite nice carton of milk. Java 5 or later is required.

Monday, February 27, 2006 (Permalink)

Tomorrow, Tuesday, February 28, I'll be at the New York PHP Users Group to talk about RSS, Atom, OPML, and All That. The meeting starts at 6:30 P.M. You need to RSVP online to attend. Hope to see you there!


BenQ Corporation has posted the early draft review of JSR-259 Ad Hoc Networking API. According to the draft,

Ad Hoc Networking API JSR proposal enables communication between mobile devices in a peer-to-peer ad hoc network environment. It will be an optional package for the J2ME configurations CDC and CLDC and mainly targeted for MIDP devices. Scope of this JSR is to provide a generic mobile ad hoc communication mechanism, which hide the actual architecture and complexity from the developers. This JSR will not define and imply any concrete ad hoc networking implementation and mechanism but will be generic enough to support different implementations. It is up to the implementing party to realize to API based on one or more available stack enabling ad hoc networking. The JSR will not define any user defined behavior or user interface but leaves them to be defined by the actual implementation of the API.

Possible underlying protocols include Zeroconf, UPnP, and JXTA. Comments are due by March 1.

Saturday, February 25, 2006 (Permalink)

Linus Tolke has posted ArgoUML 0.20, an open source UML modeling tool written in Java. This release adds support for UML 1.4, Sequence Diagrams, and AndroMDA. ArgoUML is published under the BSD license.

Friday, February 24, 2006 (Permalink)

Apple has posted the sixth beta of Java 5 (Tiger) Release 4 for Mac OS X 10.4 (Tiger) on the Apple Developer Connection (first born child required). This is based on Sun's J2SE 1.5.0_06. Most importantly it finally makes Java 1.5 the default instead of 1.4. This release is compatible with the Intel Macs.

Thursday, February 23, 2006 (Permalink)

David Hovemeyer and Bill Pugh have posted FindBugs 0.9.5, an automated open source tool for finding potential bugs in Java code. New detectors in this release include:

  • VarArgs Problems
  • FindSqlInjection
  • Comparators that don't implement serializable
  • Methods not overridden due to eponymously typed arguments from different packages

I tested this out on XOM. Almost all the bugs it found were false positives, though it did find one place where I could change catch (Exception ex) to several more specific catch clauses for individual runtime exceptions. That's not really a bug, but it is a good idea. Hmm, on further experiment it seems I can remove the try-catch block completely. That means either:

A. I don't need it.

or

B. There's a missing test case somewhere.

It looks like Clover had noted this too. I'll have to investigate further. It found similar issues in a couple of other classes. If I hadn't used this tool frequently in the past, it would have found more.

Wednesday, February 22, 2006 (Permalink)

The final draft of the second edition of Java I/O is done and off to production. This is one of my personal favorite books, and it's been overdue for an update for several years now. It still has to go through layout, copy edit, indexing, and printing, so it will be a couple of months yet before it arrives on store shelves. However, in the meantime, I've posted the example code. There's a lot of new content here to explore. (The previous edition was circa Java 1.1 and 1.2.) Most obviously there are three and a half new chapters covering the java.nio packages, including channels, buffers, and non-blocking I/O. There's also a lot of new material from Java 5 and Java 6 including printf(). However for me the most intriguing new material came at the end of the book where I wrote extensively about how to talk to various small devices including USB, Bluetooth, and anything that supports J2ME and the Generic Connection Framework. I'll have more to say about that in the not too distant future. In the meantime, check out the examples; and should you happen to notice any bugs that escaped the tech editors, it's not too late to fix them.

Tuesday, February 21, 2006 (Permalink)

The Eclipse Project has posted the fifth milestone of Eclipse 3.2, an open source integrated development environment (IDE) for Java. It also doubles as a base platform for your own applications, an alternative to the AWT and Swing, and a powerful floor wax and dessert topping. Most importantly this milestone adds support for Java 6 Mustang and X86 Macs. Other new features include:

  • Much less memory needed
  • Flagging of method parameter assignments as a code smell
  • Flagging of switch case fall through as a code smell
  • The JUnit view can show multiple concurrent test runs
  • Refactoring scripts
  • JAR file export with refactorings
  • Introduce Indirection refactoring
  • The code cleanup wizard now removes unnecessary blocks and casts and adds a serialVersionUID to Serializable and Externalizable classes
  • Quick fix multiple problems at once
  • Quick fix for raw type accesses

On the other hand they've added one very nasty "quick break", Remove brackets. This is a very bad idea. I have to go file a bug on this one. There. Done. Almost equally unwise is a quick assist to autogenerate hashCode() and equals() methods. I'm sorry, but these methods are just too tricky to expect a computer to get right. (Then again, they're so tricky that most humans don't get them right either most of the time.)

SWT has also been much improved with

  • ExpandBar widget
  • Bullets in StyledText
  • Embedded objects in StyledText
  • Background images for controls
  • Dragging text

There's quite a bit more. This is really quite an impressive milestone.

Monday, February 20, 2006 (Permalink)

Websina has released BugZero 4.3, a $1299 payware (+$300 for maintenance) Web-based bug tracking system that supports multiple projects, group-based access, automatic bug assignment, file attachment, email notification, and metric reports. Bug Zero is written in Java and can run on top of various backend databases including MySQL. 4.3 adds assorted minor features including a full text listing format of the query result.

Sunday, February 19, 2006 (Permalink)

Robert Oloffson has posted version 0.50 of Java Memory Profiler (JMP). 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. 0.50 fixes bugs. JMP is written in C for Linux.


Atlassian has released version 3.5.1 of JIRA, a $1200-$4800 payware J2EE-based bug tracking and project management server application. 3.5.1 is a bug fix release. I've been using Jira lately with Jaxen and Apache. It's a definite improvement over Bugzilla. I'm not sure it really does anything that Bugzilla doesn't do (at least not anything I use) but the user interface is about a hundred times cleaner.

Saturday, February 18, 2006 (Permalink)

Sun's posted the first official beta release of Java 6 Mustang. I've been following along with the weekly builds, and so far they seem solid. Among other new features, this release includes a new Smart Card I/O API. That sounds useful, but I question why it's in the core instead of being a standard extension. It is a javax package. Does that qualify as an extension implementers are allowed to drop, even if it's bundled with Java 6? I'm not sure.

Friday, February 17, 2006 (Permalink)

Jonathan Knudsen and I are trying to figure out if HTTP headers sent and received by MIDlets are reliable or not. That is, will phone company proxy servers ever remove or change the headers fields. We're eespecially interested in Content-length, but the general question is of interest too. If anyone has seen a phone company proxy server change or delete an HTTP header on its way to or from your MIDLet, could you please send me details? Jonathan thinks he's seen this happen, but he doesn't remember the details any more. Thanks.

Thursday, February 16, 2006 (Permalink)

Kent Beck and David Saff have released JUnit 4.0. JUnit 4 takes advantage of Java 5 features like annotations, varargs, and generics to simplify unit testing still further. If you're committed to Java 5, then JUnit 4 is big leap forward. Unfortunately while JUnit 4 is backward and forwards compatible with JUnit 3 test suites and test runners, it's completely incompatible with Java 1.4 and earlier so I'm afraid most of us will be sticking with JUnit 3 for some years to come.

The JUnit web site has not yet been updated. Until it is, the article I wrote for developerWorks is probably the best introduction to this version. I think it's mostly still accurate.

Wednesday, February 15, 2006 (Permalink)

My editor Mike Loukides just noticed that Sun no longer seems to make available the Java Communications API for Windows, only Linux and Solaris. This didn't use to be the case. Are the older versions for Windows available anywhere? Or are there any third party implementations? If anyone knows of anything, could you please drop me a line? Thanks. Note: I'm only interested in actual implementations of the Java Communications API, not alternative APIs for talking to the serial and parallel port such as RXTX. Update: that was fast. Ulf Dittmer found it here. Stephen Drye notes that the IBM Development Package for Eclipse includes a Windows javax.comm implementation. Update to the update: I can't seem to find that. The docs refer to it, but the file doesn't seem to be included in the archive.

Tuesday, February 14, 2006 (Permalink)

Sun has released the finished version of JSR 211, Content Handler API for J2ME. This brings to J23mE some of the vision of content handlers that was hyped in the early days of java, but never really surfaced. In this incarnation it lets developers register Java applications to handle particular MIME types, invoke Java applications via a URL, and invoke native applications from Java programs and vice versa.


Sun has posted the final versions of four Java 2 Micro Edition (J2ME) specifications. These are

Version 1.1 updates the various device profiles to Java 1.4.

Monday, February 13, 2006 (Permalink)

Nathan Fiedler has released version 3.7 of JSwat, a graphical, stand-alone Java debugger built on top of the Java Platform Debugger Architecture. Features include breakpoints, source code viewing, single-stepping, watching variables, viewing stack frames, and printing variables. Version 3.7 adds several small features and fixes bugs. JSwat is now published under the Sun Public License. (It was previously published under the GPL.)


Achim Westermann has released JChart2D 1.1.0, a thread-safe, libré (LGPL) Swing widget for drawing x-y plots. new features in this release include viewports, run-time configuration by popup menus for traces and charts, and flexible rendering of traces by discs, polylines, and filled polygons.


Frederic Lavigne posted version 6.2 of his Skin Look And Feel for Java. SkinLF allows Java developers to use Skins (GTK and KDE themes) in their Swing applications. This release supports theming text component borders and JDK 1.4 frame decoration. It also provides theme converters to port themes written for other skin engines to SkinLF themepacks. This is a bug fix release. Java 2 is required.

Sunday, February 12, 2006 (Permalink)

Kohsuke Kawaguchi has released , an open source continuous integration system. Hudson is based on servlets and requires a Java Servlet 2.4 or later container.

That last bit is a deal breaker for me. I thought I might try this out until I read that I'd have to deploy it on top of Tomcat. I wonder when Sun's going to realize how badly Tomcat and servlet deployment are crippling products higher up in the stack. It's not just Tomcat either, though some other servlet containers might be marginally better. Servlets took the worst single part of Java, the classpath, and multiplied its complexities a thousandfold when moving from the client to the server. These days I won't even consider a Java product that runs on top of a web server. PHP makes my life simpler. For instance, I never have to worry about restarting PHP just because I've rebooted the server. Yes, I know there are experts out there who can make servlets work, but why should I have to waste my life twiddling config files for hours just to get a basic Hello World program to run at the right URL? Unlike Java, PHP just works. Sure the PHP language is inferior to Java; but deploying PHP apps is so much easier, that doesn't much matter.

Sadly the programmers who designed Java never knew or never cared much about human interface factors which is why to this day we are still struggling with the classpath, an inability to create double clickable applications, an incomprehensible security model, and server side deployments from hell. A beautiful language doesn't matter much when you can't actually deploy the programs you've written.

Friday, February 10, 2006 (Permalink)

verson 2.1.2 of BlueJ , a free integrated development environment (IDE) for Java aimed at education, has been released. 2.1.2 is a bug fix release.

Thursday, February 9, 2006 (Permalink)

I've posted the notes from yesterfay's talk to Capital District Java Developer's Network on the subject of Measuring JUnit Code Coverage.


Cedric Beust has released TestNG 4.5, an open source testing (unit, functional, and integration) framework based on annotations. Version 4.5 adds some small features and fixes bugs. TestNG is released under the Apache Software License. Java 1.4 or later is required.


IBM's alphaWorks has released version 1.2.8 of the IBM Toolkit for MPEG-4, a Java class library for working with MPEG-4 video and audio. Version 1.2.8 improves handling of MP3 and M4V files and fixes bugs.

Wednesday, February 8, 2006 (Permalink)

Cenqua has released Clover 1.3.12, a $250 payware unit test coverage tool. 1.3.12 "is a bugfix release. It addresses a problem that prevented Clover-instrumented classes from loading correctly in JBoss 3.x under some conditions. It also includes various minor improvements and bugfixes." Clover modifies the source code to enable it to follow which statements are executed when, and keeps a running count of how many times each statement is executed during the test suite. Any statement that executes zero times is not being tested. I use Clover with Ant, but there are also versions for NetBeans, Eclipse, IntelliJ IDEA, and Oracle JDeveloper 10g. Clover can generate test coverage reports in XML, HTML, PDF, or via a Swing Viewer. Java 1.2 or later is required.

As usual I tested this release on XOM. I've been doing some updates on XOM lately, so I was curious to see how the code coverage was holding up. Externally the changes since the 1.1 release in November are quite minor, but internally I'd completely rewritten one class, and made very significant changes in several others since the last time I measured the coverage. A few things I noticed:

  • Element.attributeIterator can probably skip a hasNext check if I trust Jaxen
  • I'm missing a test for serializing elements whose namespace prefix is xml (or perhaps I'm making an unnecessary test for that).
  • I need some tests for serializing three or more consecutive text nodes when using NFC.
  • I seem to be missing some very important tests for serializing additional namespace declarations. That's very surprising. I'm pretty sure I have such tests. More likely some of the changes I recently made mean that's happening elsewhere in the code base now, and the apparently untested code is dead code I can eliminate.
  • Likewise, there's some either dead or untested code in the DOMConverter.convert() method. This was one of the major changes since the last release.
  • DOMConvert.convert(Attr attribute, NodeFactory factory) is completely untested. That's very surprising. This is probably a real bug (though in new code, not old code).
  • DOMConvert.convert(Element, NodeFactory) has an untested block that might be dead code.

They're a few other places that appear to be minor uncovered fragments, nothing too shocking. I'll have to look into these in more detail. Bottom line: if it isn't tested, it is buggy.


If anyone would like to hear more about this subject, tonight I'll be in Albany to talk to the Capital District Java Developer's Network on the subject of Measuring JUnit Code Coverage. The meeting starts at 6:00. If Albany's a little far for you, I'd be glad to repeat this talk for other user groups, conferences, or companies. Just drop me a line. I'll post the notes here tomorrow.

Tuesday, February 7, 2006 (Permalink)

JetBrains has released IntelliJ IDEA 5.1, a popular $499 payware integrated development environment for Java that runs on Windows, Mac OS X, Linux, and Unix. New features include enhanced internationalization tools, JSP debugging in WebSphere 5.1, and new actions for auto-creating new application, module, and project components. Upgrades from 5.0 are free. From other version upgrades cost $299.


The Big Faceless Organization has released the Big Faceless PDF Library 2.6.6, a $700 payware (more if you want support) Java class library for creating PDF documents. The $1300 Extended Edition adds the AcroForms support, digital signatures, and the ability to import and edit and existing PDF documents. Version 2.6.6 can extract XFA data from a form and set a form's values based on an XFA dataset object.

Monday, February 6, 2006 (Permalink)

Christof Dallermassl has posted GPSMap 0.5, a free-as-in-speech (LGPL) Java library and application for plotting NMEA data on maps it downloads from the Expedia map servers. "It consists of different modules that may be used as a programmer's framework or as an application. The main application is GPSylon. A smaller command line tool (demonstration of the gpsinput library) is named GPSTool. The library that is used to communicate with the gps device can be used independently and is provided as a separate jar file (since version 0.5)." GPSMap can talk to increasingly uncommon serial port GPS units. It may work with Bluetooth or USB if you can map that to a serial port first, though I've never had any luck with that myself. I've actually been working on USB and Bluetooth GPS devices lately. Expanding this library to cover Bluetooth more directly probably wouldn't be hard, though it would need a JSR-82 stack, and those aren't cheap. However Java USB support is pretty pathetic at this opoint in time. It only works on Linux, and then only if you run as root. :-(

Saturday, February 4, 2006 (Permalink)

Mantis 1.0, a free-as-in-speech (GPL) bug tracking system based on PHP and MySQL, has been released.


Atlassian has released version 3.5 of JIRA, a $1200-$4800 payware J2EE-based bug tracking and project management server application. Version 3.5 adds bulk workflow transitions, a FogBugz importer, a charting plugin, Microsoft Word Export, and a Component Lead notification type. I've been using Jira lately with Jaxen and Apache. It's a definite improvement over Bugzilla. I'm not sure it really does anything that Bugzilla doesn't do (at least not anything I use) but the user interface is about a hundred times cleaner.

Friday, February 3, 2006 (Permalink)

Martin Auer has released UMLet 6, "an open-source lightweight Java tool for rapidly drawing UML diagrams, with a focus on a sound and pop-up-free user interface." It can export diagrams to SVG, JPEG, EPS, and PDF formats and can be used as an Eclipse plugin. This release adds some new diagram types. UMLet is published under the GPL. Java 1.5 is required.

Thursday, February 2, 2006 (Permalink)

Sun has released NetBeans 5.0, an Integrated Development Environment (IDE) for Java. versoon 5.0 "introduces comprehensive support for developing IDE modules and rich client applications based on the NetBeans platform, the new intuitive GUI builder Matisse, new and redesigned CVS support, Sun Application Server 8.2, Weblogic9 and JBoss 4 support, and a lot of editor enhancements."

On the plus side, version 5.0 finally puts the menu bar in the right place; the CVS integration seems to be much improved; and unlike Eclipse it will run on Intel Macs. NetBeans is catching up. In a few ways it's superior to Eclipse; but overall I don't think it's quite there yet. Eclipse or IntelliJ IDEA still seem like the superior choice for most users. Netbeans is available for Windows, Linux, Mac OS X, and Solaris. Java 1.4.2 or later is required.


Older news:

200620052004200320022001200019991998
January, 2006 January, 2005 January, 2004 January, 2003 January, 2002 January, 2001 January, 2000 January, 1999 January, 1998
February, 2005 February, 2004 February, 2003 February, 2002 February, 2001 February, 2000 February, 1999 February, 1998
March, 2005 March, 2004 March, 2003 March, 2002 March, 2001 March, 2000 March, 1999 March, 1998
April, 2005 April, 2004 April, 2003 April, 2002 April, 2001 April, 2000 April, 1999 April, 1998
May, 2005 May, 2004 May, 2003 May, 2002 May, 2001 May, 2000 May, 1999 May, 1998
June, 2005 June, 2004 June, 2003 June, 2002 June, 2001 June, 2000 June, 1999 June, 1998
July, 2005 July, 2004 July, 2003 July, 2002 July, 2001 July, 2000 July, 1999 July, 1998
August, 2005 August, 2004 August, 2003 August, 2002 August, 2001 August, 2000 August, 1999 August, 1998
September, 2005 September, 2004 September, 2003 September, 2002 September, 2001 September, 2000 September, 1999 September, 1998
October, 2005 October, 2004 October, 2003 October, 2002 October, 2001 October, 2000 October, 1999 October, 1998
November, 2005 November, 2004 November, 2003 November, 2002 November, 2001 November, 2000 November, 1999 November, 1998
December, 2005 December, 2004 December, 2003 December, 2002 December, 2001 December, 2000 December, 1999 December, 1998

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

Copyright 2006 Elliotte Rusty Harold
elharo@metalab.unc.edu