March, 2006 Java News

Friday, March 31, 2006 (Permalink)

JCraft, Inc has posted JSch 0.1.26, 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.


Jayasoft has released Ivy 1.3.1, a free Java based dependency manager, that features transitive dependencies, Ant integration, Maven compatibility, and continuous integration. This is a bug fix release.


No Magic has released MagicDraw UML 11.0, a $149 to $2549 payware "visual UML modeling and CASE tool with teamwork support." 11 adds a Russian localization and Eclipse integration. Models are stored in XMI 2.1.

Thursday, March 30, 2006 (Permalink)

I just committed a few minor changes to Jaxen and unexpectedly got some nicely syntax colored diffs back in my email. On further investigation this seems to be produced by a new product called CVSspam. Despite the hideous name this actually looks like a nice product, mostly because the mails it sends out are a lot more informative than the typical CVS commit message that I usually just ignore. CVSspam is published under the GPL.


Tom Copeland has released PMD 3.6, an open source tool for automatically checking Java code for various classes of bugs. Version 3.6 can now check JSP/JSF pages. It also adds five new rules: AvoidThreadGroup, UnsynchronizedStaticDateFormatter, InefficientEmptyStringCheck, InsufficientStringBufferDeclaration, and SimplifyBooleanAssertion. He also implemented a feature I'd suggested for rulesets with only the new rules. I used this to test out the five new rules on XOM.

The InsufficientStringBufferDeclaration found several method calls I could improve (and a couple of false positives as well). Its error messages look like, "StringBuffer constructor is initialized with size 16, but has 27 characters appended". I'm not sure how big a difference fixing this will make, but it can't hurt. The SimplifyBooleanAssertion test found a whole bunch of places I was doing assertTrue(!expr) instead of assertFalse(expr) and assertTrue(a != b) instead of assertNotSame(a, b).


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

Wednesday, March 29, 2006 (Permalink)

Brian Cole has posted FindBugs 0.9.6, an automated open source tool for finding potential bugs in Java code. This release focuses on improving the existing bug detectors. I tested this out on XOM. The interface also seems to have improved a little. In this release it's quite easier to find the serious bugs than I remember it being in the past. Almost all the bugs it found were false positives, but it did catch a couple of minor problems including a place where I was passing null to a constructor, and one place where I had a redundant check for null. If I hadn't used this tool frequently in the past, it would have found more.

Tuesday, March 28, 2006 (Permalink)

The Legion of the Bouncy Castle has released version 1.32 of the Bouncy Castle Java Cryptography API, an open source, clean-room implementation of the Java Cryptography Extension (JCE). It supports X.509 certificates, PKCS12, S/MIME, CMS, PKCS7, and lots of other juicy acronyms. It also includes its own light-weight crypto API that works in Java 1.0 and later, and does not depend on the JCE. Version 1.32 adds support for F2m elliptic curves and ECDSA with CMS and S/MIME. Download it while it's still legal.


Version 1.1.7 of the Kaffe open source Java virtual machine for various Unixes has been released. This release adds a PowerPC JIT among other new features and bug fixes. This release merges the GNU Classpath .90 library. It also includes ports to DROPS, the Blackfin CPU, DragonFly BSD. ia64-freebsd, alpha-freebsd, and powerpc-openbsd; and of course there are numerous speedups and bug fixes.


Atlassian has released version 3.5.3 of JIRA, a $1200-$4800 payware J2EE-based bug tracking and project management server application. This 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.

Monday, March 27, 2006 (Permalink)

The Apache Jakarta Project has released Commons Validator 1.3, an extensible open source framework for defining validation methods. Although it uses XML to define the validation rules, this component is intended for general data validation, not specifically or even primarily XML validation. "This release fixes a number of bugs found in Validator 1.2.0 and includes new refactored Date, Time and Number validation routines. It is compatible with Validator 1.2.0.". It is published under the Apache 2.0 license.


The Jakarta Apache Project has released Cactus 1.7.2, a simple framework for unit testing server-side Java code such as servlets, Enterprise JavaBeans, tag libraries, etc. Version 1.7.2 removes an LGPL jar (jboss-j2ee.jar, necessary to run the samples), which is forbidden by ASF policies.

Friday, March 24, 2006 (Permalink)

Michael Fuchs has released DocBook Doclet 1.0, a doclet that creates DocBook SGML and XML documents from JavaDoc.

Thursday, March 23, 2006 (Permalink)

Sun has posted the proposed final draft review of JSR-231 Java Bindings for OpenGL to the JCP. This describes the Java bindings to a native OpenGL 3D graphics library.


The Big Faceless Organization has released the Big Faceless PDF Library 2.6.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.6.7 fixes bugs and supports PDF/A-1b:2005 as an OutputProfile.

Wednesday, March 22, 2006 (Permalink)

Apple has posted the seventh beta of Java 5 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 is compatible with the Intel Macs, enables native Quartz rendering by default, and makes Java 1.5 the default instead of 1.4.

Tuesday, March 21, 2006 (Permalink)

YourKit, LLC has released YourKit Java Profiler 5.1.2, 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 fixes a problem when using with NetBeans.

Monday, March 20, 2006 (Permalink)

The Apache Commons Team has released Commons IO 1.2, a class library that provides utility classes and methods for copying streams, endianness conversion, safely closing streams, creating Strings and byte arrays from streams and Readers, filtering files, and querying and manipulating the file system. Version 1.2 adds "LineIterator, which allows you to use an iterator interface over a file, and Age and Size filters for files." Commons IO is published under the Apache license.

Sunday, March 19, 2006 (Permalink)

I've posted the notes from my Java classes last week at Software Development 2006:

As usual, drop me a line if you're interested in having me reprise these for your conference, user group, or company.

Saturday, March 18, 2006 (Permalink)

Geert Bevin has released JHighlight 1.0, a free-as-in-speech (LGPL) syntax highlighting library that reads Java, HTML, XHTML, XML, Groovy, C++, and LZX languages and outputs syntax colored XHTML.


Nathan Fiedler has released version 3.9 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.9 fixes bugs. JSwat is now published under the Sun Public License. (It was previously published under the GPL.)


Gaudenz Alder has released JGraph 5.8, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. 5.8 plugs some memory leaks.


Five Square Software has released CatSlapper 1.1, a a $12.95 payware Mac OS X application for installing and managing multiple Jakarta Tomcats. This release no longer requires administrator privileges and can run Tomcats as a non-privileged user. Mac OS X 10.4 and Tomcat 5.0.x are required.

Friday, March 10, 2006 (Permalink)

Yes, I know that elharo.com is down. Thanks to everyone who wrote in to tell me. Naturally it happened while I was travelling. I'm trying to get it fixed. At this point I don't know whether to blame Speakeasy, Verizon, Netopia, D-Link, or my dog. Worst case it may not be fixed until I return from California in a week.

Update: it's fixed. It appears to have been Verizon/Covad/Speakeasy problem. I'm glad it's fixed since they're a lot of stories I want to tell there over the next week.

Thursday, March 9, 2006 (Permalink)

There's been a cancellation for one of the XML classes at Software Development West in Santa Clara next week, so I'm looking for someone to fill the spot. If anyone is willing and able to give a class on Java-XML data binding (or for that matter any sort of XML data binding) on Thursday, March 16 from 1:45 PM-3:15 PM, please drop me an e-mail right away. Thanks!

Wednesday, March 8, 2006 (Permalink)

William A. Gilbert has released JarBundler 1.6 (forked from Seth J. Morabito's JarBundler 1.4) an Ant task for creating Mac OS X application bundles. If you're using Ant to build Mac applications, you need this task. I'll be talking about it (and many related subjects) in my session on Mac Development with Java at Software Development 2006 next week. JarBundler is published under the GPL.

Tuesday, March 7, 2006 (Permalink)

The GNU Project has released version 0.90 of GNU Classpath, an incomplete free implementation of the core Java class libraries. New features in this release include HTTPS, Unicode 4.0.0, and RELAX NG and W3C XML schema validation. Many holes in Swing support have been filled in as well. gtk 2.4 or later is required fro GUI operations. GNU Classpath is published under the GPL with library exception.


Dan Creswell has released version 1.24 of the Blitz JavaSpaces Pure Java Edition. Blitz is an open source (BSD license) implementation of JavaSpaces that is Jini 2.0 enabled and implements smart indexing, tuneable persistence, and active/passive lease cleanup.

Monday, March 6, 2006 (Permalink)

Eduardo Pereda has released Java2Excel 1.1, a simple Java library that creates Excel files from Java collections. Java2Excel is published under the Apache 2.0 license.


The Jakarta Apache Project has released version 5.5.16 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."


Diomidis Spinellis has released UMLGraph 4.3, 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.3 can discover relations and dependencies by reverse engineering the code. Java 5 is required.

Saturday, March 4, 2006 (Permalink)

David Saff has released JUnit 3.8.2. This is a maintenance update of the popular unit testing framework for Java 1.1 and later. Besides a few small bug fixes, this release improves the String comparison format for showing the difference between expected and actual output. For example, assertEquals("Mary had a little lamb", "Mary had the little lamb") shows: expected:<Mary had [a] little lamb> but was:<Mary had [the] little lamb>.

Friday, March 3, 2006 (Permalink)

Sun's posted the second proposed final draft of JSR-244, Java 2 Platform, Enterprise Edition 5.0 to the Java Community Process (JCP). Quoting from the draft:

First, as you’ve probably noticed, this release of the platform has a new name – Java Platform, Enterprise Edition, or Java EE for short. This new name gets rid of the confusing “2” while emphasizing even in the short name that this is a Java platform. Previous version are still referred to using the old name “J2EE”.

The focus of Java EE 5 is ease of development. To simplify the development process for programmers just starting with Java EE, or developing small to medium applications, we’ve made extensive use of Java language annotations that were introduced by J2SE 5.0. Annotations reduce or eliminate the need to deal with Java EE deployment descriptors in many cases. Even large applications can benefit from the simplifications provided by annotations.

One of the major uses of annotations is to specify injection of resources and other dependencies into Java EE components. Injection augments the existing JNDI lookup capability to provide a new simplified model for applications to gain access to the resources needed from the operational environment. Injection also works with deployment descriptors to allow the deployer to customize or override resource settings specified in the application’s source code.

The use of annotations is made even more effective by providing better defaults. Better default behavior and better default configuration allows most applications to get the behavior they want most of the time, without the use of either annotations or deployment descriptors in many cases. When the default is not what the application wants, a simple annotation can be used to specify the required behavior or configuration.

The combination of annotations and better defaults has greatly simplified the development of applications using Enterprise JavaBeans technology and applications defining or using web services. EJBs are now dramatically simpler to develop. Web services are much easier to develop using the annotations defined by the Web Services Metadata specification.

The area of web services continues to evolve at a rapid pace. To provide the latest web services support, the JAX-RPC technology has evolved into the JAX-WS technology, which makes heavy use of the JAXB technology to bind Java objects to XML data. Both JAX-WS and JAXB are new to this version of the platform.

Major additions to Java EE 5 include the JSTL and JSF technologies that simplify development of web applications, and the Java Persistence API being developed by the EJB 3.0 expert group that greatly simplifies mapping Java objects to databases. Minor additions include the StAX API for XML parsing. Most APIs from previous versions have been updated with small to medium improvements.

Thursday, March 2, 2006 (Permalink)

The Gnu Project has released version 4.1.0 of GCC, the GNU Compiler Collection. GCC contains frontends for C, C++, Objective C, Chill, 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.4 level with some omissions. New features in 4.1 focus on static (compile-time) opitmization including Partial dead code elimination and Inter-procedural optimizations such as profile guided inlining and discovery of pure and const functions. Java Specific changes in 4.0 mostly involve updating libgcj to GNU Classpath 0.19 plus some 0.20 bug-fixes. However

It was discovered after the final release had been made that there is an installation problem when building with Java enabled and when "--enable-version-specific-runtime-libs" is in use. In particular, header files for some of the Java APIs will be placed in "/include" (with no prefix), due to a defect in the Java Makefiles.

There are three known work-arounds:

  • Disable Java by using "--enable-languages" when configuring GCC. For example, to build just the C and C++ compilers, use "--enable-languages=c,c++".

  • Do not use "--enable-version-specific-runtime-libs".

  • Use "--with-gxx-include-dir=" to explicitly indicate where you would like the Java header files to be placed. For example, if you use "--prefix=/path/to/prefix" then using:

    --with-gxx-include-dir=/path/to/prefix/lib/gcc/<target>/4.1.0

    will place the header files in the appropriate version-specific location.


Version 2.4.1 of CruiseControl has been released. CruiseControl is an open source (BSD license) "framework for a continuous build process. It includes, but is not limited to, plugins for email notification, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds." In other words, it checks all the source out of CVS, compiles the code, runs the tests, builds the product, and then deletes everything and starts over again. Thus if anything breaks, you hear about it very quickly. 2.4.1 adds ExecBuilder, Maven2Builder, PropertyFileLabelIncrementer, and WeblogPublisher plugins.


Gaudenz Alder has released JGraph 5.7.4.8, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. 5.7.4.8 makes the preview of edges with children optional and allows groups to be resized independently of their children.

Wednesday, March 1, 2006 (Permalink)

Sun has submitted JSR-292, Supporting Dynamically Typed Languages on the Java™ Platform, to the Java Community Process. According to the JSR,

There is growing interest in running a variety of programming languages on the the Java platform, and consequently, on the Java virtual machine (JVM). This interest is increasingly focused on dynamically typed languages, in particular scripting languages.

To make it easier to produce performant, high quality implementations of such languages, we propose to add support at the virtual machine level.

Specifically, we seek to add a new JVM instruction, invokedynamic, designed to support the implementation of dynamically typed object oriented languages. We will also investigate support for hotswapping, the capability to modify the structure of classes at run time.

My big question is how this affects Java's security model, particularly since "The invokedynamic instruction is in many ways similar to the existing invokevirtual instruction. However, it is much less constrained by byte code verification rules. Instead, it relies on dynamic typechecking to ensure the integrity of the virtual machine." This is scheduled for Java 7, Dolphin. Comments are due by March 13. (Seems a bit short for such a major change.)


IBM has submitted JSR-291, Dynamic Component Support for JavaTM SE, to the Java Community Process. According to the JSR,

This specification will define a dynamic component framework including component lifecycle for existing Java SE platforms. The dynamic component model will support assembly of applications from components and support implementation detail hiding between components as well as lifecycle management of those components.

The specification will be built upon capabilities in existing Java SE platforms and provide a consistent and predictable dynamic component model across the family of Java platforms in conjunction with JSR 232 for Java ME (CDC).

The specification will enable components to be declared through metadata and be assembled at runtime using a class loader delegation network. The specification will also allow components to be dynamically life cycle managed (install, start, stop, update, uninstall).

This is intended to run on Java 1.2 and later, so despite the coincedental timing and use of the word "dynamic" in the title, I don't think it has much to do with JSR-292. Comments are due by March 13.


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, 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