April, 2006 Java News

Saturday, April 29, 2006 (Permalink)

Sun has submitted JSR-295, Beans Binding to the Java Community Process. According to the JSR,

Developers who write applications that compose Java Bean components often find themselves writing boilerplate that keeps pairs of properties in sync. PropertyChangeListeners are used to detect changes in the source and target properties and to convert and validate data as it moves between the source and target. For example, a Swing developer might write a half of page of code to keep the "text" property of a JTextField in sync with the "name" property of the selected Customer in a JTable.

This specification will define an API that greatly simplifies connecting a pair of Java Beans properties to keep them in sync. The connection will be configurable: type conversion and validation operations may be applied before updating a property.

For example, to connect a String property to a Date property, a String/Date converter would be used. Similarly, an application that wanted to constrain the legal values for the date property would use a validator.

This API is intended to make connecting Java Bean properties simple. The Swing APIs embody an enormous collection of Java Beans and properties. In order for this JSR to be successful it must meet the needs of Swing's architecture and developers.

Friday, April 28, 2006 (Permalink)

Sun has submitted JSR-294, Improved Modularity Support in the Javatrade; Programming Language to the Java Community Process. In brief this proposes a change in Dolphin (Java 7) to enable modules that sit between package and public access. The idea is that some classes would be essentially public to other classes in the same module, but private to everyone else. I'm not sure I'm explaining it well, but think of it as friend functions for Java. However this is very much something that Java has needed for years. The lack of it has meant that public access is vastly overused and consequently much java software is far less stable and more fragile than it should be. I am skeptical of the claim that this will require VM level changes rather than simply language level additions. Surely if inner classes and generics did not require VM level changes, this proportionately smaller change shouldn't either?


Kent Beck and David Saff have released JUnit 4.1. Version 4.1 is a bug fix release. Most notably, "The @RunWith annotation is now inherited by subclasses: all subclasses of an abstract test class will be run by the same runner."

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.

Thursday, April 27, 2006 (Permalink)

Brian Cole has posted FindBugs 0.9.7, an automated open source tool for finding potential bugs in Java code. This release adds a detector for uncallable methods in anonymous classes. I tested this out on XOM. It didn't find anything new, though if I hadn't used this tool frequently in the past, it would have found more.


BlueJ 2.1.3, a free integrated development environment (IDE) for Java aimed at education, has been released. "This version of BlueJ provides some small improvements and a number of fixes for minor bugs, including terminal encoding issues, interface responsiveness in infinite loops and improvements in dealing with firewall conflicts."

Wednesday, April 26, 2006 (Permalink)

Polarion Software has posted Subversive 1.0.0 M11, a pure Java, open source Eclipse plug-in that provides Subversion integration. I'll have to check this out. I'm doing a lot of work with Subversion lately, and while Subversion is a clear improvement on CVS, Subclipse isn't yet up to the level of Eclipse's native CVS support. The inability to branch into a separate repository and the especially the lack of any notation of changed files is a problem.


The Big Faceless Organization has released the Big Faceless Graph Library 2.2, an $800 payware (more if you want support or to distribute your applications that use the library) Java class library for plotting 2D or shaded 3D pie charts, line graphs, area graphs, bar graphs and exporting them to PNG, GIF and PDF. Vesrion 2.2 enables width and depth to be set on StackedBarSeries and MultiBarSeries independently of their children. Java 1.2 or later is required.


The Big Faceless Organization has released the Big Faceless PDF Library 2.6.9, 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.7 fixes bugs, improves TIFF support, achooses Bouncy Castle as the preferred JCE provider.


Teodor Danciu has released JasperReports 1.2.2, an open source (LGPL) Java library for generating reports from XML templates and customizable data sources (including JDBC). The output can be displayed on the screen, printed, or written to XML or PDF files. Version 1.2.2 fixes bugs and makes assorted packaging changes.


Andrew Wilcox has released JIP 1.0.5, an interactive open source profiler for Java. Surprisingly JIP is not based on the JVMPI. According to Wilcox, "Most profilers have some native component. This is because most profilers use the JVMPI (Java Virtual Machine Profiling Interface) which requires the use of native components. JIP, however, is pure Java. It takes advantage of the Java5™ feature which allows you to hook the classloader. JIP adds aspects to every method of every class that you want to profile. These aspects allow it to capture performance data." 1.0.5 fixes bugs.


YourKit, LLC has released YourKit Java Profiler 5.5, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA, Borland JBuilder, NetBeans, and Eclipse integration. This release adds support for IBM's JDK and Intel Macs.

Tuesday, April 25, 2006 (Permalink)

Scott McNealy has stepped down as Sun CEO in favor of COO Jonathan Schwartz. This is probably a good thing for Sun longterm. Schwartz has always seemed more focused on servers and other products that actually make money for Sun. McNealy sort of forgot about that for the last ten years while focusing on Microsoft and Java. Perhaps Schwartz will finally be able to push Sun back into profitability.


The Jakarta Apache Project has posted the first alpha HttpComponents HttpCore 4.0 (formerly known as HttpClient):

HttpCore provides a set of low level components, which can be used to build custom client and server side HTTP services.

This release represents a complete redesign of the Jakarta Commons HttpClient 3.x API, and a significant rewrite of the core HTTP components derived from the HttpClient 3.0 code base. HttpCore will form the foundation of the future releases of Jakarta HttpClient.

This release is primarily intended for API review and use in experimental projects. The HttpCore API is still deemed unstable, and it can still undergo significant changes based on the feedback from early adopters.

Monday, April 24, 2006 (Permalink)

OSoft is now selling Java Network Programming, 3rd edition in ThoutReader format. I played around with this a little. There's the seed of a good idea here, but only a seed. The implementation is faulty. It's vastly too difficult to purchase and install content, even the free content. Furthermore both the web site and the client software make a number of basic GUI bloopers. Finally the client isn't integrated enough with the server. You can't browse and install content directly into the client like you can buy songs in iTunes. Instead you have to purchase and download the new books, then install them manually. This should be no more than a two-click operation.

Saturday, April 22, 2006 (Permalink)

Nathan Fiedler has released version 3.10 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.10 adds a dialog for editing breakpoint groups and group conditions. The variables view has been improved too. JSwat is now published under the Sun Public License. (It was previously published under the GPL.)


Michael Fuchs has released DocBook Doclet 1.0.1, a doclet that creates DocBook SGML and XML documents from JavaDoc. 1.0.1 adds support for Java 1.4 and 5 and fixes bugs.

Friday, April 21, 2006 (Permalink)

Andrew Wilcox has released JIP 1.0.4, an interactive open source profiler for Java. Surprisingly JIP is not based on the JVMPI. According to Wilcox, "Most profilers have some native component. This is because most profilers use the JVMPI (Java Virtual Machine Profiling Interface) which requires the use of native components. JIP, however, is pure Java. It takes advantage of the Java5™ feature which allows you to hook the classloader. JIP adds aspects to every method of every class that you want to profile. These aspects allow it to capture performance data."


ej-technologies GmbH has released version 4.2 of JProfiler, a $698 payware profiler based on the Java virtual machine profiling interface (JVMPI that can report on CPU usage, memory size, threads, and "VM telemetry" (whatever that is). This release now supports Mac OS X on Intel, AIX, and HP/UX. New features in 4.2 include various comparison views and improved exporting. JProfiler is a useful tool, but mostly I'm pretty happy with my old 2.x version.

Thursday, April 20, 2006 (Permalink)

Novell has released Mono 1.1.15, an open source implementation of Microsoft's .NET framework that runs on Linux, Unix, Mac OS X, and Windows. Mono includes an ECMA Common Language Infrastructure (CLI) runtime engine, a cross platform IKVM Java runtime engine, a C# 1.0 compiler, class libraries implementing the .NET 1.1 profile, the Gtk# 1.0 GUI programming toolkit, GNU Classpath for the CLI and a Visual Basic runtime. According to the release notes,

This is the second beta towards the release of Mono 1.2.

Mono was branched at version 1.1.13 to become the stable version of Mono that is distributed by Novell on its enterprise products. That series of releases are only getting bug fixes.

Before each release we run all of the regression tests on Mono, so we consider this release usable for deployment, but there are still a few changes in various areas."


Version 1.0.2 of Mantis, a free-as-in-speech (GPL) bug tracking system based on PHP and MySQL, has been released. This release fixes security bugs. All users should upgrade.


JCraft, Inc has posted JSch 0.1.27, an open source, pure Java implementation of SSH2 that supports port forwarding, X11 forwarding, file transfer, etc. This version adds some minor features including handling hostkeys included in known_hosts file and setting timeout values for opening sockets. Java 1.2 or later and the JCE are required. JSch is released under a BSD license. This release fixes bugs.


TMate Software has released JavaSVN 1.0.4, a pure Java Subversion client library. This release is now compatibile with Subversion 1.3.1 and fixes assorted bugs

Wednesday, April 19, 2006 (Permalink)

Apple has posted Java 5 Release 4 for Mac OS X 10.4 (Tiger) through Software Update. This is a maintenance update on Sun's J2SE 1.5.0_06. Most importantly "After installing J2SE 5.0 Release 4, J2SE 5.0 becomes preferred over Java 1.4.2, which will still be installed on your Mac. Applications run with J2SE 5.0 unless they specifically request Java 1.4.2." This release is now compatible with the Intel Macs, and enables native Quartz rendering by default.


Apple has also posted a tech note on JNI Development on Mac OS X. The most surp[rising thing about thisn note was that Apple still hasn't gotten the message that hiding text in images is uncool. It's even like they're doing any6thing in the text on those pages that couldn't easily eb done with CSS, or even a FONT tag.

Tuesday, April 18, 2006 (Permalink)

Atlassian has released version 3.6 of JIRA, a $1200-$4800 payware J2EE-based bug tracking and project management server application. New features in this release include

  • Custom Events
  • Group Picker Custom Field
  • Per-Issue Group Notifications & Permissions
  • Wiki-style Linking
  • "I'm Feeling Lucky" Quick Search
  • Collapsible Fields
  • Nestable Conditions
  • Charting Plugin Updates

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.

Monday, April 17, 2006 (Permalink)

Ben Q Corporation has posted the early draft review of JSR-266 Java SE 6 Unified Message Box Access API (UMBA-API) . This is a J2ME API for managing the in and out boxes of a mobile device. Messages include "short messages (SMS), multimedia messages (MMS), email, ring tones, bitmaps, vcards and more. These messages enter and leave the 'boxes' via different transport channels like GSM, GPRS, WLAN, BT, etc."

Sunday, April 16, 2006 (Permalink)

The Jakarta Apache Project has released version 5.5.17 of the Tomcat open source servlet container and official reference implementation of the Java Servlet API 2.4 and Java Server Pages (JSP) 2.0. This beta is mostly a bug fix release as detailed in the change log." "Tomcat 5.5 is designed to run on J2SE 5.0 and later, and requires configuration to run on J2SE 1.4....In addition, Tomcat 5.5 uses the Eclipse JDT Java compiler for compiling JSP pages. This means you no longer need to have the complete Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment (JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the binary Tomcat distributions. Tomcat can also be configured to use the compiler from the JDK to compile JSPs, or any other Java compiler supported by Apache Ant."

Saturday, April 15, 2006 (Permalink)

Tobias Buchloh has released KisKis - Keep It Secret! Keep It Safe!, a free-as-in-speech (LGPL) password manager written in Java. It can import and export passwords in XML. Unfortunately it's based on dom4j whose license is incompatible with the GPL. It also uses SWT for taskbar integration, and that license is also incompatible with the GPL. Time permitting I may see what I can do about ripping out dom4j and plugging in XOM. This might require expanding the test suite, since it currently seems to have exactly one test. However until that happens, I can't recommend this tool.

Friday, April 14, 2006 (Permalink)

The Eclipse Project has posted the first release candidate 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.

Thursday, April 13, 2006 (Permalink)

Nokia has submitted JSR-293, Location API 2.0 to the Java Community Process (JCP). According to the JSR,

This specification defines an optional package that enables the developers to use new enhanced location-based features on the JavaTM ME devices. This API will be designed as an extension to JSR 179 Location API for JavaTM ME, and therefore must remain to be fully backwards compatible with applications using JSR 179. The scope of the API should include the following:

  1. Extended features of JSR 179:

    • Revise and supplement the features of JSR 179 based on the findings in JSR 179 implementations.
    • Add the ability to import and export landmarks with JavaTM application. JSR 179 only provides a mechanism to add and modify landmarks on the device, but with this addition, the landmarks and points of interest can be shared for example between two devices.
    • Clarify and extend the localization support for the landmarks
    • Specify a set of abstract landmark UI components for adding, editing and selecting landmarks. These components will be independent of the device manufacturer and will allow the user to have similar user experience on landmark handling across different devices and API implementations.
  2. Support for geocoding

    Geocoding means assigning location coordinates for a landmark based on the given address. In reverse geocoding the address of a landmark is retrieved based on the given location coordinates. This API will have support for both of these geocoding features.

  3. Map support

    This feature will allow the use of maps in JavaTM applications. With this map support the applications are able to display maps and show landmarks and points of interest on these maps.

  4. Navigation support

    Navigation support will enable the navigation to landmarks and points of interest from JavaTM application. With this feature the applications will be able to access the navigation features provided by 3rd party applications.

Some of these new extensions might be optional and not required from devices implementing only the basic positioning functions.


Timesys has posted a new maintenance review draft of JSR-1 Real-time Specification for Java . Many of the changes are purely editorial. However, there do appear to be a few substantive changes mixed in with all the typo corrections, particularly involving threading and synchronization. Comments are due by May 15.

Wednesday, April 12, 2006 (Permalink)

William A. Gilbert has released JarBundler 1.8 (forked from Seth J. Morabito's JarBundler 1.4) an Ant task for creating Mac OS X application bundles. This version adds several minor features including the ability to specify MIME types for the document. and a bundle attribute fopr identifying documents which are in reality directory trees, but are treated as a single entity by the Finder. If you're using Ant to build Mac applications, you need this task. JarBundler is published under the GPL.

Tuesday, April 11, 2006 (Permalink)

KisKis - Keep It Secret! Keep It Safe! is free-as-in-speech (LGPL) password manager written in Java. It's based on Swing, the Legion of the Bouncy castle's JCE implementation, and dom4j. (Ouch! Two out of three isn't bad.) It can import and export passwords in XML. This is a critical feature missing from too many competing products such as CiphSafe. Yes, I know this is a potential security problem. However, I don't think it's as a big a security hole as locking all the passwords into one program.


The Apache Software Foundation has released Maven 2.0.4, an open source build tool for Java that's more declarative and less procedural than Ant. This is mostly a bug fix release.


Mark Doliner has released Cobertura 1.8, a free-as-in-speech (GPL) code coverage tool for Java. Version 1.8 adds support for Groovy, can show the total number of lines and branches in the HTML report, and allows multiple JVMs to write to the same data file. If you're not already using another code coverage tool, this is definitely worth a look. Java 1.4 or later is required.


Websina has released BugZero 4.3.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. This release enables user accou7nts to be temporarily disabled.

Monday, April 10, 2006 (Permalink)

Amazon has begun taking pre-orders for the second edition of Java I/O. I'm going over the page proofs now. Amazon is listing June 1 for the availability date, though I think O'Reilly is going to try to get it out in time for JavaOne. This edition has tons of new content from Java 1.4 through 6 including several chapters about NIO, J2ME, Bluetooth, and USB. I've also integrated a lot of smaller changes that have made their way into java.io over the last six years: the good (getTotalSpace(), getFreeSpace(), and getUsableSpace()), the bad (java.io.IOError), and the ugly (java.io.Console). I've also added a lot of material about better ways to solve the real I/O problems encountered in modern applications. For instance, there's extensive discussion about storing resources in JAR archives and loading them from there, and using FileSystemView to connect the user's abstraction of the file system with the programmer's. Java I/O is one of my favorite books, and I'm really happy with the second edition. I hope you like it.

Sunday, April 9, 2006 (Permalink)

The Apache Project has released Jackrabbit 1.0, an open source implementation of the Content Repository for Java Technology API (JCR) specified in the Java Specification Request 170.

Jackrabbit 1.0 is a fully conforming and stable JSR-170 implementation. Developed from the same source tree as the JSR-170 reference implementation, the 1.0 release implements the full JCR API, including level 1, level 2, and all the optional features like versioning, transactions, and observation.

Additional components include:

  • RMI network layer for the JCR API.
  • Deployable Jackrabbit installation with WebDAV support for JCR.
  • J2EE Connector Architecture (JCA) resource adapter for Jackrabbit.
  • Text indexing filters for Jackrabbit inlcuding filters for PDF, Excel, PowerPoint, and Word.
Saturday, April 8, 2006 (Permalink)

IBM's alphaWorks has released the IBM Thread and Monitor Dump Analyzer for Java:

During the run time of a Java process, some Java Virtual Machiness (JVMs) may not respond predictably and oftentimes seem to hang up for a long time or until JVM shutdown occurs. It is not easy to determine the root cause of these sorts of problems.

By triggering a javacore when a Java process does not respond, it is possible to collect diagnostic information related to the JVM and a Java application captured at a particular point during execution. For example, the information can be about the operating system, the application environment, threads, native stack, locks, and memory. The exact contents are dependent on the platform on which the application is running.

On some platforms, and in some cases, javacore is known as "javadump." The code that creates javacore is part of the JVM. One can control it by using environment variables and run-time switches. By default, a javacore occurs when the JVM terminates unexpectedly. A javacore can also be triggered by sending specific signals to the JVM. Although javacore or javadump is present in Sun Solaris JVMs, much of the content of the javacore is added by IBM and, therefore, is present only in IBM JVMs.

IBM Thread and Monitor Dump Analyzer for Java Technology analyzes javacore and diagnoses monitor locks and thread activities in order to identify the root cause of hangs, deadlocks, and resource contention or monitor bottlenecks.


Teodor Danciu has released JasperReports 1.2.1, an open source (LGPL) Java library for generating reports from XML templates and customizable data sources (including JDBC). The output can be displayed on the screen, printed, or written to XML or PDF files. Version 1.2.1 adds custom URL stream handlers.

Friday, April 7, 2006 (Permalink)

IBM's developerWorks has published my latest article, Testing legacy code. This article elaborates a strategy for developing a unit test suite for code bases that have never had one. This is one of three topics that invariably comes up in Q&A when I talk about JUnit, so I thought it was worrth an article. Short version: "As the old Chinese saying goes, a journey of a thousand miles begins with a single step. A test suite for legacy code begins with a single test."

Wednesday, April 5, 2006 (Permalink)

Subversion 1.3.1, an open source version control system designed to replace CVS, has been released. 1.3.1 is a bug fix release. As I mentioned yesterday, I've already switched to Subversion for all my private work. The killer feature for me is that Eclipse (with Subclipse plugin) will work with local repositories. For my public, open source work I'm still using CVS because that's what the hosts I commit to (java.net, Codehaus, and Sourceforge) all use. However I expect that to change over time too.

Tuesday, April 4, 2006 (Permalink)

TMate Software has posted the first beta of JavaSVN 1.1.0, a pure Java Subversion client library. 1.1.0 adds support for the Subversion 'file' protocol support and fsfs repositories.

This is nice. I've recently begun using Subversion and Subclipse for my next book, and I like it a lot. Currently I'm using JavaHL which uses JNI to talk to the Subversion C libraries. However there's no fundamental reason that couldn't or shouldn't be done in pure Java. It's just that up till now the Java libraries haven't caught up to the state of the art in Subversion.

The server side of Subversion needs a serious rethink, though. Currently you almost have to have a dedicated Subversion server and a fulltime Subversion administrator. That end needs to get about one thousand times simpler.


I've updated the conferences page with several new ACM conferences.


Websina has released BugZero 4.3.2, 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. This release adds a "Forgot Password?" feature and fixes bugs.


Grzegorz Kowal has released Launch4j 2.1.2, an open source (MIT License) tool for wrapping Java applications distributed as jars in Windows native executables. This is a bug fix release.


The Eclipse Project has released AspectJ 1.5.1. AspectJ is a derivative of Java that allows programmers to write code that applies across multiple classes. The AspectJ compiler requires Java 1.3 but can generate code for Java 1.1 and later. "This release constitutes a full-upgrade of AspectJ to support Java 5, while also delivering a large number of quality improvements that will benefit users running on JDK 1.4 or below. In addition to the Java 5 related language changes AspectJ 5 also supports an @AspectJ style of aspect declaration, greatly enhanced load-time weaving capabilities, a full reflection API, and tools APIs for parts of the weaver." This is a bug fix release.

Monday, April 3, 2006 (Permalink)

The Apache Jakarta Commons Team has released Commons Pool 1.3.

Pool provides an Object-pooling API, with three major aspects:

  1. A generic object pool interface that clients and implementors can use to provide easily interchangable pooling implementations.
  2. A toolkit for creating modular object pools.
  3. Several general purpose pool implementations.

"This release fixes a number of bugs and adds a few enhancements. The most significant fix is the GenericObjectPool was documented as a FIFO but implemented as a LIFO, it now behaves as a FIFO."


Older news:

200620052004200320022001200019991998
January, 2006 January, 2005 January, 2004 January, 2003 January, 2002 January, 2001 January, 2000 January, 1999 January, 1998
February, 2005 February, 2005 February, 2004 February, 2003 February, 2002 February, 2001 February, 2000 February, 1999 February, 1998
March, 2006 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