July, 2006 Java News

Monday, July 31, 2006 (Permalink)

Jason Carreira has submitted JSR-303, Beans Validation to the Java Community Process. According to the JSR,

Validating data is a common task that is copied in many different layers of an application, from the presentation tier to the persistentce layer. Many times the exact same validations will have to be implemented in each separate validation framework, proving time consuming and error-prone. To prevent having to re-implement these validations at each layer, many developers will bundle validations directly into their classes, cluttering them with copied validation code that is, in fact, meta-data about the class itself.

This JSR will define a meta-data model and API for JavaBean validation. The default meta-data source will be annotations, with the abilty to override and extend the meta-data through the use of XML validation descriptors. It is expected that the common cases will be easily accomplished using the annotations, while more complex validations or context-aware validation configuration will be available in the XML validation descriptors.

The validation API developed by this JSR will not be specific to any one tier or programming model. It will specifically not be tied to either the web tier or the persistence tier, and will be available for both server-side application programming, as well as rich client Swing application developers. This API is seen as a general extension to the JavaBeans object model, and as such is expected to be used as a core component in other specifications, such as JSF, JPA, and Bean Binding.


Charles Cook has released Blue Pelican Java, a textbook aimed at high school students preparing for the AP exam in computer science. As well as paper, the book is freely (as-in-beer) available online in PDF form.


Sun has posted an early access release of JavaMail 1.4.1. JavaMail is a basic library for performing POP, SMTP, and IMAP. I wrote about this in the final chapter of Java Network Programming. 1.4.1 fixes bugs. Java 1.4 or later is required. This is published under the open source but GPL-incompatible CDDL license 1.0.


Sun has posted the proposed final draft of JSR-221 JDBC 4.0 to the Java Community Process (JCP). New features in 4.0 include:

  • Automatic loading of java.sql.Driver
  • Annotations for JDBC
  • ROWID data type
  • National Character Set Conversions
  • Improved support for BLOBs and CLOBs
  • SQL/XML
  • Chained, iterable exceptions

Sun reported a $301 million loss for the recently completed fourth quarter of its fiscal year. This amounts to $0.09 per share, compared to a $50 million/$0.01 per share profit for the fourth quarter of 2005. Total quarterly revenue was $3.8 billion, up from $2.9 billion in Q42005. Sun attributed the loss to costs associated with plant closures and layoffs.

Sunday, July 30, 2006 (Permalink)

Health Market Science, Inc. has released Jackcess 1.1.3, an open source (LGPL) Java library for reading and writing Microsoft Access 2000 (not 2003) files.

Saturday, July 29, 2006 (Permalink)

Apache has released version 1.2.18 of the Tomcat mod_jk web server connector. This connector enables Apache web server users to forward servlet requests to Tomcat while still using Apache for static pages. Version 1.2.18 is a bug fix release.

Friday, July 28, 2006 (Permalink)

The Free Software Foundation has posted the second discussion draft of the GNU General Public License version 3 and the first discussion draft of the GNU Lesser General Public License. I am more than a little astonished to see that the explanatory text is only available in annoying PDF, PostScript, and LaTeX formats instead of plain-vanilla, browsable HTML. Yet more evidence that the FSF may be great at kernel-hacking and compiler-writing; but doesn't have the first hint of a clue when it comes to user interaction and user interface design.


JetBrains has posted the first public beta of IntelliJ IDEA 6.0. New features in 6.0 include:

  • EJB 3.0
  • Struts
  • GWT
  • Enhanced Swing GUI designer
  • Code coverage
  • JUnit 4

JetBrains has also posted the first public beta of TeamCity 1.0, a new server side product for continuous integration and testing of a project. As code is checked into the source code repository (CVS, Subversion, perforce, etc.) TeamCity can compile the code, run tests, perform static code analysis, and so forth. It's similar in rough outline to CruiseControl or Continuum. I'm not sure exactly what to call this, but if they're going to be several products in this space we need a general name for them. "Build manager" maybe?

Thursday, July 27, 2006 (Permalink)

Nathan Fiedler has released version 3.12 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.12 makes assorted small interface improvements. JSwat is now published under the Sun Public License. (It was previously published under the GPL.)


Gaudenz Alder has released JGraph 5.9.2, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. In 5.9.2, "In addition to supporting an image on the background, a Component may now be drawn as the JGraph background for applications such as mapping. Some performance improvements have been made in the GraphLayoutCache relating to making cells invisible. In the model there have also been performance improvements around the functionality that removes cells."

Wednesday, July 26, 2006 (Permalink)

Sun's posted the second beta of NetBeans 5.5. According to the web site, "NetBeans 5.5 generates JAX-WS 2.0 artifacts for Java SE 6 and Java EE 5 projects. We included Java Persistence support and support for Enterprise Java Beans 3. Additionally, there is the new Subversion support module available on the 5.5 Beta 2 Update Center."

Tuesday, July 25, 2006 (Permalink)

The first public release candidate of Subversion 1.4.0 has been posted. Subversion is an open source version control system designed to replace CVS. New features in 1.4 include

  • Path-based authorization for svnserve
  • Improved logging and repository listing in mod_dav_svn
  • Improved python and ruby bindings
  • New commandline switches


Websina has released BugZero 4.3.7, 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.7 plugs a security hole and adds a Chinese localization.

Monday, July 24, 2006 (Permalink)

Frederic Lavigne posted version 6.7 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.

Sunday, July 23, 2006 (Permalink)

Version 1.0.4 of Mantis, a free-as-in-speech (GPL) bug tracking system based on PHP and MySQL, has been released. This is a bug fix release.

Saturday, July 22, 2006 (Permalink)

Grzegorz Kowal has released Launch4j 2.1.5, an open source (MIT License) tool for wrapping Java applications distributed as jars in Windows native executables. This release can now use relative and absolute paths to locate the JRE.


Lorenzo Bettini has released GNU Source-highlight 2.4, a GPL'd tool for reading Java, C/C++, Prolog, Perl, PHP3, Flex, ChangeLog, JavaScript, LUA, CAML, SML, Log, and Python code and translating them into syntax highlighted HTML and XHTML. This release adds support for C#, XML, and shell scripts. Binaries are available for Unix, and it should compile on Windows with the appropriate libraries.

Friday, July 21, 2006 (Permalink)

Cedric Beust has released TestNG 5.0, an open source testing (unit, functional, and integration) framework based on annotations. Version 5.0 changes the names of the configuration annotations , creates reports in their own directory (one per suite), allows you to specify the suite and test names directly in the @Test annotations, and makes the stack traces friendlier. TestNG is released under the Apache Software License. Java 1.4 or later is required.

Thursday, July 20, 2006 (Permalink)

I've posted the notes from the two talks I gave yesterday at Architecture & Design World 2006:

The JUnit class may not have been to everyone's taste, since quite a few people left early. I suspect maybe it wasn't quite the right talk for the audience at this show though some people enjoyed it a great deal. However, the Human Factors in API Design talk went extremely well. We had a really lively audience with lots of good discussion, and some very high level attendees from companies like Google, Microsoft, and FileMaker. It turns out the author of one of the books I was referencing was in the audience, and introduced himself after the talk.

This was my first trip to Architecture & Design World, and I was quite impressed. Both the attendees and the speakers were extremely alert, intelligent, and interesting. I really wish I had been able to spend more time at the show. Unfortunately, I had to fly in and out the same day so I could handle my teaching schedule here in New York. Next year I'll try to arrange my schedule so I can stay for the full conference.


Diomidis Spinellis has released UMLGraph 4.4, an open source (BSD license) tool for declaratively specifying UML diagrams. UMLGraph uses text files that look vaguely like source code to specify how UML class and sequence diagrams are drawn. A doclet converts this into a Graphviz diagram that can be easily converted to Postscript, GIF, SVG, JPEG, etc. Version 4.4 adds a JavaDoc doclet that generates context and package class diagrams along with standard API documentation. Java 5 is required.


The Big Faceless Organization has released the Big Faceless PDF Library 2.7, 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.7 adds sample source code for a PDF viewer application and getMatchingText, getOffset, and getPage methods.

Tuesday, July 18, 2006 (Permalink)

I've posted the first beta of XOM 1.2, my free-as-in-speech (LGPL) library for processing XML with Java. Compared to the 1.0-->1.1 transition, this is a very minor upgrade. There are just a couple of additional methods, a few bug fixes, and maybe a small optimization or two. All code written to the 1.1 or 1.0 APIs should run unchanged with 1.2. Possibly the biggest change is to the build process. Jaxen is now bundled rather than being loaded directly from CVS. If you download the source build, please let me know how the build goes for you. Thanks.

Update: I accidentally omitted one key file from the source distribution. I've uploaded fixed archives.

Monday, July 17, 2006 (Permalink)

Andy Roberts has released jTokeniser 2.0, an open source Java library for separating strings into a list of tokens based on white space, regular expressions, sentences, or break iterators. Version 2.0 adds a GUI interface. jTokeniser is published under the LGPL.

Sunday, July 16, 2006 (Permalink)

I've posted version 1.0d5 of QuickTime Amateur, a free-as-in-speech (GPL) clone of Apple's QuickTime Player. Currently this has only been tested, designed, and run on the Mac, though a Windows port is on the TODO list. Version d5 implements several new features including audio controls. Amateur is still rather rough. However, this development release is a reasonably functional movie player application including such useful features as full screen mode and the ability to keep a movie on top as you switch into other applications. I am now eating my own dog food. I.e. I've made Amateur my default movie player.

Keep-on-top feature is a real killer feature that QuickTime Pro does not have. I find it very useful. I borrowed the idea from MyTV and VLC. However unlike VLC, Amateur follows standard user interface guidelines.

Through the magic of QuickTime, Amateur can also display most image formats (PNG, GIF, JPEG, PDF, etc.) and play most audio formats including MP3. However the user interface is more geared toward movies than those other media. Editing support is still partial, and recording is not yet supported at all. As time permits this will be added. Enjoy!

Friday, July 14, 2006 (Permalink)

yWorks has released yGuard 2.0.1, a free-as-in-beer "Java bytecode obfuscator and shrinker that improves your software deployment by prohibiting unwanted access to your source code and drastically shrinking the processed Jar files at the same time." Java 5 and Ant are supported.


No Magic has released MagicDraw UML 11.5, a $149 to $2549 payware "visual UML modeling and CASE tool with teamwork support." 11.5 can export UML models to Eclipse Modeling Framework (EMF) among other changes.

Thursday, July 13, 2006 (Permalink)

Excelsior has released JET 4.5, a Java virtual machine for Linux and Windows that uses a combination of a traditional native code compiler and just-in-time compilation from byte code. Version 4.5 focuses on reducing the application download size. JET costs start at $1200 and run up to $4500 depending on which version and how much support you want. Support is available by e-mail and Web site only.


The ObjectWeb Consortium has released ASM 2.2.3, "a Java bytecode manipulation framework. It can be used to dynamically generate stub classes or other proxy classes, directly in binary form, or to dynamically modify classes at load time, i.e., just before they are loaded into the Java Virtual Machine." 2.2.3 is a bug fix release.


Teodor Danciu has released JasperReports 1.2.5, 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.5 can filter records from the report data source and from chart and crosstab datasets. It also improves Excel export.


Sebastiano Vigna has released version 5.0.4 of fastUtil, a collection of type-specific Java maps and sets with a small memory footprint and faster access and insertion. The classes implement their standard counterpart interfaces such as java.util.Map and can be plugged into existing code. However, they also contain type-specific methods. For instance, the CharList class has not only the usual add(Object o) method but also an add(char c) method. This release adds support for measurable input streams with predicatble lengths and positions. fastUtil is published under the GNU Lesser General Public License (LGPL).

Wednesday, July 12, 2006 (Permalink)

The Open Group has submitted JSR-302, Safety Critical Java Technology, to the Java Community Process. According to the JSR,

The proposed specification will define those capabilities needed to use Java technology to create safety critical applications. This means that the features included will be a minimal set, with such specific characteristics as static resource allocation and usage, minimal temporal conflicts, and without dynamic loading, leading to the ability to validate implementations using a variety of standards, including DO-178B / ED-12B. It is further implied that the features chosen can be validated using formal models, schedulability analysis, and modified condition/decision coverage (MC/DC) analysis.

It is strongly intended that this specification will incorporate the existing Java technology paradigm maximally, subject to the need for application validation. For example, it must be possible to create applications with fully predetermined resource allocation as required by most safety critical standards. This implies, for example, that a garbage collector might not be usable under such standards, and that it might be inappropriate for components to be dynamically loaded. Such applications will likely require a transformation from Java bytecodes to target machine representation prior to certification.

It is expected that implementations of this specification will conform to an existing J2ME configuration and profile such as CDC & Foundation Profile, or CLDC & Information Module Profile. Additionally, it is expected that this specification will identify a mechanism for implementations to be constructed for deployment without classes and methods not used by the application so that the DO-178B dead code elimination requirements can be supported. The specification will specifically identify all classes and methods on which a safety critical application can depend at runtime.

Comments are due by July 24.


Christian Schlichtherle has released TrueZip 5.1.7 and 6.1, a drop-in replacement for the java's file I/O classes.

TrueZIP is a Java based Virtual File System (VFS) which enables an application to access ZIP, TAR and all derivative archive types (JAR, TAR.GZ, ...) transparently as if they were just directories in a file's path name. This works recursively, so an archive file may even be enclosed in another archive file. TrueZIP 6 features an extensible "plug-in driver" architecture (actually a Service Provider Interface), so it is expected that support for other archive types will be added over time (contributors wanted: ARJ, RAR anyone?).

The TrueZIP API provides drop-in replacements for the well-known classes File, FileInputStream and FileOutputStream. This design makes TrueZIP very easy to use: All that is required to archive-enable a legacy application is to add a few import statements for the package de.schlichtherle.io, add some type casts where required, and add a final call to File.update() once before the client application terminates in order to force an update of all archive files which have been used and require an update.

TrueZip is published under the Apache 2.0 license.

Tuesday, July 11, 2006 (Permalink)

Oliver Burn has released Checkstyle 4.2, a lint-like tool that checks Java code for adherence to various coding standards. Version 4.2 fixes bugs and adds a few configuration options; for instance, "TrailingComment now can be configured to accept some trailing comments (such as NOI18N)."

Sunday, July 9, 2006 (Permalink)

Gaudenz Alder has released JGraph 5.9, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. 5.9 improves buffering performance, and makes some API changes.

Saturday, July 8, 2006 (Permalink)

The Apache DB Project has released Apache Derby 10.1.3.1, an open source SQL database written in pure Java that supports JDBC. This is mostly a bug fix release.


The Jakarta Apache Project has released version 4.1.32 of the Tomcat open source servlet container and official reference implementation of the Java Servlet API 2.3 and Java Server Pages (JSP) 1.2. This beta is mostly a bug fix release.

Friday, July 7, 2006 (Permalink)

Apple has posted the fourth beta of Java 6 for Mac OS X 10.4 (Tiger) on the Apple Developer Connection (first born child required). This release simplifies choosing a Java version, and improves SWT/AWT integration. It's really nice to see the time lag between Apple and Sun's VMs shortening, even for the betas. This is good for Java and good for Apple. I only hope that when the final version is released it doesn't depend on Leopard (Mac OS X 10.5).


Slava Pestov has uploaded the fifth pre-release of jEdit 4.3, an open source programmer's editor written in Java with extensive plug-in support and my preferred text editor on Windows and Unix. Most of the changes in this release seem to be at the API level, but the user interface or features. There's no longer a dependence on gnu.regexp. (Every external dependence you can remove is a good thing.)


The Big Faceless Organization has released the Big Faceless PDF Library 2.6.11, 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.11 improves performance.

Thursday, July 6, 2006 (Permalink)

Sun has submitted JSR-296, Swing Application Framework, to the Java Community Process. According to the JSR,

Well written Swing applications tend to have the same core elements for startup and shutdown, and for managing resources, actions, and session state. New applications create all of these core elements from scratch. Java SE does not provide any support for structuring applications, and this often leaves new developers feeling a bit adrift, particularly when they're contemplating building an application whose scale goes well beyond the examples provided in the SE documentation.

This specification will (finally) fill that void by defining the basic structure of a Swing application. It will define a small set of extensible classes or "framework" that define infrastructure that's common to most desktop applications:

The essential application lifecyle, startup and shutdown, with well defined milestones so that applications can insert startup or shutdown work when the application has reached a well known state.

Support for loading localized resources. Desktop applications deal with a set of common resource types beyond message strings, notably images, colors, and fonts. Resources can also be specific to the platform or to the application's "branding".

Persistent session state. Most applications need a way to persist things like top level window geometry across sessions. Automatic support for such common cases as well as for loading and storing arbitrary session data at startup and shutdown time, would be useful in most Swing applications.

Actions define the behavior of Swing application from the user's perspective. In all but the smallest applications, it's useful to be able to loosely couple an Action's (localized, branded, etc) presentation from its implementation. Action implementations often must perform some work asychronously wrt to the Swing event dispatching thread. The application framework would provide support for doing so and for providing GUI feedback while significant work is being done on the user's behalf.

Wednesday, July 5, 2006 (Permalink)

Sun has released the finished version of Java Specification Request (JSR) 220, Enterprise JavaBeans 3.0. According to the spec,

The Enterprise JavaBeans 3.0 architecture presented in this document extends Enterprise JavaBeans to include the following new functionality and simplifications to the earlier EJB APIs:

  • Definition of the Java language metadata annotations that can be used to annotate EJB applications. These metadata annotations are targeted at simplifying the developer’s task, at reducing the number of program classes and interfaces the developer is required to implement, and at eliminating the need for the developer to provide an EJB deployment descriptor.
  • Specification of programmatic defaults, including for metadata, to reduce the need for the developer to specify common, expected behaviors and requirements on the EJB container. A “configuration by exception” approach is taken whenever possible.
  • Encapsulation of environmental dependencies and JNDI access through the use of annotations, dependency injection mechanisms, and simple lookup mechanisms.
  • Simplification of the enterprise bean types.
  • Elimination of the requirement for EJB component interfaces for session beans. The required business interface for a session bean can be a plain Java interface rather than an EJBObject, EJBLocalObject, or java.rmi.Remote interface.
  • Elimination of the requirement for home interfaces for session beans.
  • Simplification of entity persistence through the Java Persistence API.[2]. Support for light-weight domain modeling, including inheritance and polymorphism.
  • Elimination of all required interfaces for persistent entities[2].
  • Specification of Java language metadata annotations and XML deployment descriptor elements for the object/relational mapping of persistent entities [2].
  • A query language for Java Persistence that is an extension to EJB QL, with addition of projection, explicit inner and outer join operations, bulk update and delete, subqueries, and group-by. Addition of a dynamic query capability and support for native SQL queries.
  • An interceptor facility for session beans and message-driven beans.
  • Reduction of the requirements for usage of checked exceptions.
  • Elimination of the requirement for the implementation of callback interfaces.

A reference implementation is available.

Tuesday, July 4, 2006 (Permalink)

CMP has posted the call for abstracts for Software Development 2007 West. The conference takes place March 19 - 23, 2007 in Santa Clara. Once again I'll be chairing the XML track. As well as the usual C++, Java, .NET, Security, Modeling & Design tracks. this year adds a complete track devoted to Ruby, and another track on web development. The latter is sort of a catch-all for AJAX, Web 2.0, PHP, JavaScript and and other web tech that isn't already addressed in one of the existing tracks. Submissions are due by August 11.


Polarion Software has posted the fourth release candidate of Subversive 1.0, a pure Java, open source Eclipse plug-in that provides Subversion integration. It's based on JavaSVN. Besides bug fixes, this RCcan make a tag or branch for multiple projects at once and adds commit templates. Pure Java is a nice touch, but right now Subclipse seems to do everything I need, and I don't feel a compelling need to switch.

Monday, July 3, 2006 (Permalink)

Sun has published a maintenance release of JSR-154 Java Servlet 2.5. They're a few small but substantive changes.

Sunday, July 2, 2006 (Permalink)

Matthias Kempka has released Coverlipse 0.9.5.2, an open source (Common Public License) Eclipse 3.1 plugin for code coverage visualization of JUnit tests. Interestingly, the code coverage can be shown right in the Java editor in Eclipse. This is the first release that can be installed through the Eclipse update mechanism. This release now works with Eclipse 3.2.

Saturday, July 1, 2006 (Permalink)

The Apache Project has released Geronimo 1.1, an open source J2EE application server. Version 1.1 "includes numerous bug fixes as well as improvments to perforance, usability and brand new Plug-in feature that allows a user to dynamically build a server to suit their needs. Also included is a Little-G distribution that provides a subset of Geronimo components in a light weight download form." It's published under the Apache 2.0 license, natch.


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, 2006 April, 2005 April, 2004 April, 2003 April, 2002 April, 2001 April, 2000 April, 1999 April, 1998
May, 2006 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