Sun's posted the second maintenance review draft specification for JSR 252: JavaServer Faces 1.2 in the Java Community Process. There are quite a few changes, most correcting various errata. Comments are due by April 28.
The Jakarta Apache Project has released Commons Lang 2.4, an open source collection of "helper utilities for the java.lang API, notably String manipulation methods, basic numerical methods, object reflection, creation and serialization, and System properties. Additionally it contains an inheritable enum type, an exception structure that supports multiple types of nested-Exceptions, basic enhancements to java.util.Date and a series of utlities dedicated to help with building methods, such as hashCode, toString and equals." Classes include:
CharRangeCharSetCharSetUtilsCompareToBuilderEnumEnum.Entry EnumUtils EqualsBuilder ExceptionUtils HashCodeBuilder Nestable NestableDelegate NestableError NestableException NestableRuntimeException NumberRange NumberUtils ObjectUtils ObjectUtils.Null RandomStringUtils SerializationException SerializationUtils StandardToStringStyle StringUtils SystemUtils ToStringBuilder ToStringStyle ToStringStyle.DefaultToStringStyle ToStringStyle.MultiLineToStringStyle ToStringStyle.NoFieldNameToStringStyle ToStringStyle.SimpleToStringStyle ValuedEnum ArrayUtilsBitFieldBooleanUtilsCharRange (previously package scoped)ClassUtilsStringEscapeUtilsWordUtilsIllegalClassExceptionIncompleteArgumentExceptionNotImplementedExceptionNullArgumentExceptionSerializationExceptionUnhandledExceptionValidateIntRangeLongRangeRangeDoubleRangeJVMRandomNumberRangeFloatRangeNumberUtilsFractionRandomUtils DateFormatUtilsFastDateFormatDateUtilsStopWatchCompositeFormatStrBuilderStrLookupStrMatcherStrSubstitutorStrTokenizer
New classes and interfaces in this release include   IEEE754rUtils, ExtendedMessageFormat , and FormatFactory.
There are also 58 new methods including 15 in StringUtils:
There's a lot of good stuff here. Everyone should check it out, at least for the ideas even if you don't want to use the library.
Sun has posted the early draft review of JSR-303 Bean Validation.
Validating data is a common task that occurs throughout an application, from the presentation layer to the persistence layer. Often the same validation logic is implemented in each layer, proving time consuming and error-prone. To avoid duplication of these validations in each layer, developers often bundle validation logic directly into the domain model, cluttering domain classes with validation code that is, in fact, metadata about the class itself.
This JSR defines a metadata model and API for JavaBean validation. The default metadata source is annotations, with the ability to override and extend the meta-data through the use of XML validation descriptors.
The validation API developed by this JSR is not intended for use in any one tier or programming model. It is specifically not tied to either the web tier or the persistence tier, and is 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. Ease of use and flexibility are influencing the design of this specification.
I have to read further, but at first glance it seems to be a weak version of Eiffel-like preconditions. I think a system that enforced preconditions and class invariants without regard for Javabeans naming conventions would be a much better idea, and probably simpler all-around to boot.
Eric Lafortune has released ProGuard 4.2, an open source Java "class file shrinker, optimizer, and obfuscator. It can detect and remove unused classes, fields, methods, and attributes. It can then optimize bytecode and remove unused instructions. Finally, it can rename the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer." Version 4.2 fixes bugs and improves optimization. Proguard is published under the GPL.
Google has released GWT 1.4.62, an open source Java-to-JavaScript compiler and library for building AJAX applications in Java. (Web site not yet updated.) This release now works with Firefox 3.
IDRsolutions has released JPedal 3.45 b32, a pure Java library for extracting content from PDF files and rasterizing them. Text fragments are extracted as XML elements with font and location information. Images are extracted in both their raw formats and their clipped and scaled formats as TIFF, PNG, or JPEG files. This release adds support for JBIG. JPedal is published under the GPL.
Duncan McGregor has released Rococoa, "a generic Java binding to the Mac Objective-C object system. It allows the creation and use of Objective-C objects in Java, and the implementation of Objective-C interfaces in Java." Rococoa is published under the LGPL.
MySQL A.B. has released MySQL Connector/J 5.0.9 and 5.1.6, the Type-IV all-Java JDBC driver for MySQL that's "suitable for use with any MySQL version including MySQL-4.1, MySQL-5.0, MySQL-5.1 beta or the MySQL-6.0 Falcon development releases." 5.0.9 fixes bugs. 5.1.6 improves support for JDBC 4.0 and fixes bugs.
The Gnu Project has released version 4.3 of GCC, the GNU Compiler Collection. GCC contains frontends for C, C++, Objective C, Fortran, Ada, and Java as well as libraries for these languages. GCC's Java is a clean room implementation that doesn't use any Sun code, so it doesn't always exactly match Sun release versions, but this is roughly at the Java 1.5 level with some omissions. New features in 4.3 include:
jv-scan tool has been removed.  This
     tool never really worked properly.  There is no replacement.
     gcjh has been rewritten.  Some of its more
     obscure options no longer work, but are still recognized in an
     attempt at compatibility.  gjavah is a new program
     with similar functionality but different command-line options.
     grmic and grmiregistry have been
     rewritten.  grmid has been added.  gjar replaces the old fastjar.  gjarsigner (used for signing jars),
     gkeytool (used for key management),
     gorbd (for CORBA), gserialver (computes
     serialization UIDs), and gtnameserv (also for CORBA)
     are now installed. gc-analyze tool.  They may
     be generated on out-of-memory conditions or on demand and are
     controlled by the new run time class
     gnu.gcj.util.GCInfo.  java.util.TimeZone can now read files from
     /usr/share/zoneinfo to provide correct, updated,
     timezone information.  This means that packagers no longer have
     to update libgcj when a time zone change is published.java.net has posted Superpackages, the second article in my Open Road series covering Java 7 and the OpenJDK.
Google has posted the first milestone of GWT 1.5, an open source Java-to-JavaScript compiler and library for building AJAX applications in Java. The major new feature in this release is support for Java 5, including generics, enums, annotations, and the enhanced for loop.
Sun has posted the first beta of NetBeans 6.1, its open source IDE for Java, Ruby, and JavaScript. "The NetBeans IDE 6.1 release provides several features and enhancements, such as rich JavaScript editing features, support for using the Spring web framework, tighter MySQL integration, and better mechanisms for projects to share use of libraries. The acclaimed support for Ruby/JRuby has been enhanced with new editor quick fixes, a Ruby platform manager, fast debug support for JRuby, and many other new features and fixes. By popular demand, the bean pattern and JSF CRUD generation features that were missing in the 6.0 release have returned. In addition, early versions of new modules, such as ClearCase support, are available as plugins. This release also provides improved performance, especially faster startup (up to 40%), lower memory consumption and improved responsiveness while working with large projects."
Last night Beautiful Code won the Jolt award for best general book, so I now have about 3% of a Jolt award to my name. Next year maybe Refactoring HTML can get me one all to myself. :-)
Most of the winners were for small products I hadn't heard of, but Atlassian and NetBeans both took home multiples. Bjarne Stroustrup won the Excellence in Programming Award and VMWare Workstation won the Lifetime Achievement Award. Other winners included:
Mort Bay Consulting has released Jetty 6.1.8, an open source servlet engine that supports version 2.5 of the Java Servlet API and version 2.1 of Java Server Pages. This is mostly a bug fix release, though it adds a few small features. Jetty is published under the Apache 2.0 license.
JPOX 1.2.0, an open source implementation of Java Data Objects (JDO) 2.0, has been released. that provides transparent persistence to Java objects. It supports most major SQL databases and can be queried using either JDOQL or SQL. This release adds support for java Data Objects 2.1. It's published under the Apache 2.0 License.
Sun has posted the early draft review of JSR-318 Enterprise JavaBeans 3.1. New features in 3.1 include:
- A simplified Local view that provides Session Bean access without a separate Local Business interface.
- Packaging and deployment of EJB components directly in a .war without an ejb-jar.
- A Singleton session bean component that provides easy access to shared state, as well as application startup/shutdown callbacks.
- Automatically created EJB Timers.
- Calendar based EJB Timer expressions.
- Asynchronous, reliable, session bean invocations.
- The definition of a lightweight subset of Enterprise JavaBeans functionality that can be provided within Java EE Profiles such as the Java EE Web Profile.
Comments are due by March 30.