June, 2006 Java News

Friday, June 30, 2006 (Permalink)

Version JSR 6 of Groovy has been posted. Groovy is a JVM hosted scripting language that combines the speed of GW-Basic with the clarity of Perl. This release adds mock support and class reloading. There are also numerous bug fixes.


Motorola has published a maintenance release of JSR-82 Java APIs for Bluetooth. The most substantive change is "Relaxed requirements for flushing Bluetooth PushRegistry buffers since not all native Bluetooth stacks may be able to accommodate more aggressive requirements."

Wednesday, June 28, 2006 (Permalink)

Sun's posted the second beta release of Java 6 Mustang for Windows, Solaris, and Linux. (Apple publishes their opwn version based on this code.) This release is "feature complete." According to Sun, highlights include

New Security features and enhancements:
  • Native platform GSS/Kerberos integration
  • Java Authentication and Authorization Service (JAAS) login module that employs LDAP authentication
  • New Smart Card I/O API
 
Integrated Web Services:
  • New API for XML digital signature services for secure web services
  • New Client and Core Java Architecture for XML-Web Services (JAX-WS) 2.0 APIs
  • New support for Java Architecture for XML Binding (JAXB) 2.0
 
Enhanced Management & Serviceability:
  • Improved JMX Monitoring API
  • Runtime Support for dTrace (Solaris 10 and future Solaris OS releases only)
  • New custom deployment facilities
 
Increased Developer Productivity:
  • Improved memory usage analysis and leak detection
  • Significant library improvements
  • Improvements to the Java Platform Debug Architecture (JPDA) & JVM Tool Interface
 
Improved User Experience:
  • Look and feel updates to better match underlying platforms
  • Improved desktop performance and integration
  • Enhanced internationalization support
Tuesday, June 27, 2006 (Permalink)

The Jakarta Apache Project has posted the first alpha HttpComponents 3.1. "This version adds support for the RFC 2965 cookie management (also known as Cookie2 or port sensitive cookies). All upstream projects dependent on HttpClient are strongly encouraged to review the new API and test new features for compatibility with their products."


Sun's posted a beta of the Java 2 Micro Edition (J2ME) Wireless Toolkit 2.5. Java 1.5 on Windows XP is required. The Toolkit includes build tools, utilities, and a device emulator. Newly supported APIs in this release include:

  • SIP API for J2ME (JSR 180)
  • Scalable 2D Vector Graphics API for J2ME (JSR 226)
  • Payment API (JSR 229)
  • Advanced Multimedia Supplements (JSR 234)
  • Mobile Internationalization API (JSR 238)

Also supported are:

  • Java Technology for the Wireless Industry (JTWI) 1.0 (JSR 185)
  • Connected Limited Device Configuration (CLDC) 1.1 (JSR 139)
  • Mobile Information Device Profile (MIDP) 2.0 (JSR 118)
  • PDA Optional Packages for the J2ME Platform (JSR 75)
  • Java APIs for Bluetooth (JSR 82)
  • Mobile Media API (MMAPI) 1.1 (JSR 135)
  • J2ME Web Services Specification (JSR 172)
  • Security and Trust Services API for J2ME (JSR 177)
  • Location API for J2ME (JSR 179)
  • Mobile 3D Graphics API for J2ME (JSR 184)
  • Wireless Messaging API (WMA) 2.0 (JSR 205)
  • Content Handler API (JSR 211)
Monday, June 26, 2006 (Permalink)

Sun has posted the public review draft of JSR-199 Java Compiler API to the Java Community Process (JCP). According to the draft:

The Java Compiler API is a set of interfaces that describes the functions provided by a Java Language Compiler. This API has three main objectives:

  • Allow invocation of a Java compiler from a Java program using standardized interfaces.
  • Provide interfaces enabling the compiler to report diagnostics in a structured way.
  • Provide interfaces enabling clients of the compiler to override how file objects are found. "File objects" is a file abstraction.

I've only had a chance to skim the API so far, but at first glance it strikes me as overly and probably needlessly complex. Did they really need to invent a completely new file system interface just to manage compilation of a few files? I strongly suspect the working group could cut the number of classes and methods in half without losing anything, and probably cut it by two thirds without losing anything most programmers would miss. This looks like yet another case of the overly generic, overly abstract diseases that infects many of the smartest developers. I suspect someone needs to walk through the hallways at Sun one weekend and surreptitously remove every copy of Design Patterns from programmers' bookshelves. Abstract Factory and Factory Method are solutions to occasional and uncommon tough problems, not the first thing you should pull out of your toolbox for every class. Comments on this are due by July 24.

Monday, June 19, 2006 (Permalink)

Sun's released the finished version of Java Specification Request (JSR) 121, Application Isolation API. The goal is to allow a single Java virtual machine to run many different programs simultaneously that do not share heap space, static variables, singletons, and other things that are normally shared by every object in the same virtual machine. This is especially important in servlet containers, application servers, and the like.


JSR-298, Telematics API for Java ME has been voted down in the Java Community Process (JCP) by 3-2 with a lot of extensions.

Saturday, June 17, 2006 (Permalink)

The Eclipse Project has posted the seventh 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.

Friday, June 16, 2006 (Permalink)

IBM's developerWorks has published my latest article, Testing object serialization. Serialization is one of the easiest interfaces to a class to unintentionally break and surprisingly one of the least tested. In fact, it's possible to have 100% code coverage while still having broken, unnoticed, and untested serialization. This article explores the basic techniques for testing that objects that implement Serializable can be serialized and remain compatible from release to release.


The Apache Jakarta Commons Project has released Commons Chain 1.1, an open source implementation of the Chain of Responsibility design pattern. According to the web page,

A popular technique for organizing the execution of complex processing flows is the "Chain of Responsibility" pattern, as described (among many other places) in the classic "Gang of Four" design patterns book. Although the fundamental API contracts required to implement this design pattern are extremely simple, it is useful to have a base API that facilitates using the pattern, and (more importantly) encouraging composition of command implementations from multiple diverse sources.

Towards that end, the Chain API models a computation as a series of "commands" that can be combined into a "chain". The API for a command consists of a single method (execute()), which is passed a "context" parameter containing the dynamic state of the computation, and whose return value is a boolean that determines whether or not processing for the current chain has been completed (true), or whether processing should be delegated to the next command in the chain (false).

Version 1,1 adds two dispatch style commands, improves the LookupCommand, and fixes bugs. Commons Chain is published under the Apache 2.0 license.

Thursday, June 15, 2006 (Permalink)

Stephen Colebourne has released Joda-Time 1.2.1, an open source (Apache license) calendar library. "The design allows for multiple calendar systems, while still providing a simple API. The 'default' calendar is the ISO8601 standard which is used by XML. The Gregorian, Julian, Buddhist, Coptic and Ethiopic systems are also included, and we welcome further additions. Supporting classes include time zone, duration, format and parsing." Java 1.3 or later is suggested. It may or may not work on earlier versions.

Tuesday, June 13, 2006 (Permalink)

Brunno Silva has released JMUnit 1.0. JMUnit is an open source for unit testing Java Micro Edition. It comes in two versions, one for each version of the CLDC.

Monday, June 12, 2006 (Permalink)

The Jakarta Apache Project has posted the second 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.

Alpha 2 fixes bugs.

Saturday, June 10, 2006 (Permalink)

IBM's developerWorks has published my latest article, Introducing Subversion: Version control for the third millennium. This article describes how to use Subversion from within Eclipse, given an existing repository. If there's interest, possibly I can write a future article on how to set up your own Subversion repository, though there are already several of those.

Friday, June 9, 2006 (Permalink)

Grzegorz Kowal has released Launch4j 2.1.3, an open source (MIT License) tool for wrapping Java applications distributed as jars in Windows native executables. This release fixes bugs.


The Jakarta Apache Project has released the Commons FileUpload 1.1.1. "FileUpload makes it easy to add robust, high-performance, file upload capability to your servlets and web applications. FileUpload parses HTTP requests that conform to RFC 1867, 'Form-based File Upload in HTML'. That is, if an HTTP request is submitted using the POST method, and with a content type of 'multipart/form-data', then FileUpload can parse that request, and make the results available in a manner easily used by the caller." This is a bug fix release.

Thursday, June 8, 2006 (Permalink)

Apple has posted the third beta of Java 6 for Mac OS X 10.4 (Tiger) on the Apple Developer Connection (first born child required). This release supports both Intel and PowerPC Macs. 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.

Wednesday, June 7, 2006 (Permalink)

The Jakarta Apache Project has released BCEL 5.2. The "Byte Code Engineering Library is intended to give users a convenient possibility to analyze, create, and manipulate (binary) Java class files. After years of inactivity we are happy to finally provide the long awaited 5.2 release including bug fixes and small improvements."

Tuesday, June 6, 2006 (Permalink)

Christopher Atlan has commenced work on the jcalbean, an open source (Apache license) calendar bean.


Greg Guerin has released the Suite/P Toolkit, a JNI based library that offers "Posix-style capabilities for working with user-ID, group-ID, resource limits, environment variables, inter-process signals, and various system parameters." Currently only Mac OS X is supported.

Monday, June 5, 2006 (Permalink)

Tomorrow, Tuesday June 6, I'll be joining the Philadelphia Java User's Group in Malvern, PA, at the Unisys East Coast Development Center, 2476 Swedesford Rd, Paoli PA. to talk about RSS, Atom, APP, and All That. The meeting is free and open to the public, but you need to RSVP to Dave Fecak if you would like to attend.

Next week on Tuesday June 13, I'll be deliveing essentially the same talk to the monthly meeting of the Amateur Computer Group of New Jersey (ACGNJ) JUG in Scotch Plains, New Jersey. Again the meeting is free and open to the public.


Poul Henriksen and Michael Kölling have released the Greenfoot 1.0 IDE, a BlueJ derivative "specifically targeted at high school level, or intro university level, before using BlueJ."


Eduardo Pereda has released Java2Excel 1.3.1, a simple Java library that creates Excel files from Java collections. This release fixes bugs and is built with Maven 2. Java2Excel is published under the Apache 2.0 license.


Achim Westermann has released JChart2D 2.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. Version 2.0 adds several user interface controls including coordinate tooltips for the chart, selectable logarithmic scaling for each axis, and an improved popup menu.

Sunday, June 4, 2006 (Permalink)

The Apache Jakarta Project has released Commons Collections 3.2, an open source library that extends and augments the Java Collections Framework. It includes:

  • Bag interface for collections that have a number of copies of each object
  • Buffer interface for collections that have a well defined removal order, like FIFOs
  • BidiMap interface for maps that can be looked up from value to key as well and key to value
  • MapIterator interface to provide simple and quick iteration over maps
  • Type checking decorators to ensure that only instances of a certain type can be added
  • Transforming decorators that alter each object as it is added to the collection
  • Composite collections that make multiple collections look like one
  • Ordered maps and sets that retain the order elements are added in, including an LRU based map
  • Identity map that compares objects based on their identity (==) instead of the equals method
  • Reference map that allows keys and/or values to be garbage collected under close control
  • Many comparator implementations
  • Many iterator implementations
  • Adapter classes from array and enumerations to collections
  • Utilities to test or create typical set-theory properties of collections such as union, intersection, and closure

Version 3.2 is backwards compatible with 3.1. New classes include

  • MultiValueMap A flexible MultiMap implementation
  • DefaultedMap A map that returns a default value when the key is not found
  • GrowthList A list where set and add expand the list rather than throw IndexOutOfBoundsException
  • LoopingListIterator A never-ending list iterator
  • CollectionUtils.addIgnoreNull Adds to the collection if the value being added is not null
  • isEmpty Checks maps and collections for empty or null
  • BlockingBuffer Add timeout handling to any buffer implementation
  • ListOrderedMap additional list-style methods

And of course bugs have been fixed.

Saturday, June 3, 2006 (Permalink)

Tom Copeland has released PMD 3.7, an open source tool for automatically checking Java code for various classes of bugs. Version 3.7 is mostly a bug fix release that cures a number of false positives. However it does add three new rules: DuplicateJspImport PreserveStackTrace, and UseProperClassLoader.

PreserveStackTrace surprised me. Apparently when an exception is caught and a new exception is thrown, the original stack trace is lost. It isn't a major problem, but it does seem worth looking at to see if I can repair it. OK, I looked at it, and these reports all seem to be false positives. The original exception is being passed in. PMD just doesn't recognize that because a custom constructor is used.

Friday, June 2, 2006 (Permalink)

Tiger Privacy has released Tiger JMail 1.0.1, a free-as-in-speech (LGPL) JavaMail implementation.


The Apache Portal Project has posted the first beta of Pluto 1.1, the open source reference implementation of the Java Portlet Specification. According to the web page,

Portlets are designed to run in the context of a portal. They are written to the Portlet API which are similar to the Servlet API.

In contrast to servlets, portlets may not do things like sending redirects or errors to browsers directly, forwarding requests or writing arbitrary markup to the output stream to assure that they don?t distract the portal web application which uses them. Another difference compared to servlets is that portlets rely on portal specific infrastructure functions such as access to user profile information, standard interface for storing/retrieving persistent settings, getting client information, etc. Generally, portlets are administrated more dynamically than servlets typically are.

A portlet container provides a runtime environment for portlets implemented according to the Portlet API. In this environment portlets can be instantiated, used and finally destroyed. The portlet container is not a stand-alone container like the servlet container; instead it is implemented as a thin layer on top of the servlet container and reuses the functionality provided by the servlet container.

Pluto serves as portlet container that implements the Portlet API and offers developers a working example platform from which they can test their portlets. However, it's cumbersome to execute and test the portlet container without a driver, in this case, the portal. Pluto's simple portal component is built only on the portlet container's and the JSR 168's requirements.


Version 1.1 "is a major refactoring of Pluto 1.0.1. This refactoring allows for easier integration of Pluto's portlet container into a portal and easier configuration of the Pluto portal driver, a bare-bones portal included with the distribution."

Thursday, June 1, 2006 (Permalink)

Subversion 1.3.2, an open source version control system designed to replace CVS, has been released. 1.3.2 is a bug fix release.


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