November, 2005 Java News

Wednesday, November 30, 2005 (Permalink)

Stefan Palme has released Java for C++, a free-as-speech (GPL) "tool to generate C++-wrapper-classes for existing Java-classes. This tool reads a list of Java class names and creates source code for C++-classes to wrap them. The implementation of the wrapper classes uses JNI (Java Native Interface) to call the "real" Java classes. The C++-API to use these wrapper classes is very close to the API of the original Java classes. So developers of C++-software can use Java-classes as if they have been implemented in C++."


Version 3.1.3 of EJBCA, an open source, Java 2 Enterprise Edition (J2EE) Certificate Authority, has been released. EJBCA can be used standalone or integrated into other J2EE application. It supports multiple levels of certificate authorities, individual enrollment and batch production of certificates, PKCS12 and PEM export, configurable certificate contents. revocation and certificate revocation lists, and more. Version 3.1.3 fixes bugs and adds RSA-PSS signature support. EJBCA is published under the LGPL.

Tuesday, November 29, 2005 (Permalink)

Struts and WebWork are merging.


Apple has posted the first beta of Java 5 Release 4 for Mac OS X 10.4 (Tiger) on the Apple Developer Connection (first born child required). This is only available for PowerPC based systems. This is essentially a bug fix release. I'd hold off installing this unless one of the bugs Apple thinks they've fixed is affecting you.

Monday, November 28, 2005 (Permalink)

I've launched a new weblog, Mokka mit Schlag. This is going to be my site going forward for anything not specifically related to Java or XML. The RSS 2 and Atom feeds are full text for those of you who prefer to read in your news browsers. Comments are enabled on all posts. Initial entries cover a range of topics from Birding to Disneyland to Software Testing to Ruby on Rails and combinations thereof. If you're curious as to why I'm doing yet another site, you might want to read Why This Site? and or Addicted to Blogging. Enjoy!

Sunday, November 27, 2005 (Permalink)

The ObjectWeb Consortium has released ASM 2.2, "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."

Saturday, November 26, 2005 (Permalink)

BlueJ 2.1.0, a free integrated development environment (IDE) for Java aimed at education, has been released. 2.1.0 allows local variables to be declared and used in the codepad.


I've posted the seventh beta/first release candidate of XOM 1.1, my free-as-in-speech (LGPL) dual streaming/tree-based API for processing XML with Java. Version 1.1 maintains backwards compatibility with XOM 1.0 while adding a number of important new features including XPath queries, document subset canonicalization, exclusive XML canonicalization, external XSLT parameters, and xml:id support. The API is now considered to be stable, and probably won't change before 1.1 final. Beta 7 fixes two minor, almost cosmetic bugs in the Serializer and plugs a possible memory leak in the Builder. Barring discovery of any more bugs, this should be the last beta before the final release of XOM 1.1 next week. I'd really appreciate it if anyone who's been using it could give this release candidate a spin to make sure the latest fixes haven't broken anything else. XOM requires Java 1.2 or later and is published under the LGPL.

Friday, November 25, 2005 (Permalink)

The Apache Database Project has released Apache Derby 10.1.2.1 (formerly Cloudscape), an open source SQL database written in pure Java that supports JDBC. This is mostly a bug fix release.


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


The Big Faceless Organization has released the Big Faceless PDF Library 2.6.4, 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.4 fixes bugs.

Thursday, November 24, 2005 (Permalink)

Mark Stephens has released JPedal 2.61, 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. According to Stephens, "Version 2.61 offers much faster scrolling and decoding, better PDF support especially for shading and annotations, better handling for FDF forms and a large number of bug fixes." JPedal is published under the GPL.


Bare Bones Software has released version 8.2.4 of BBEdit, my preferred text editor on the Mac. This is a bug fix release. BBEdit is $179 payware. Upgrades from 8.x are free. They're $49 for 7.0 owners and $59 for owners of earlier versions. Mac OS X 10.3.5 or later is required.

Wednesday, November 23, 2005 (Permalink)

Version 1.2.6 of Spring has been released. Spring is a layered Java/J2EE application framework based on inversion of control. As near as I've ever been able to figure out, Spring is designed to enable applications to use plain old Java objects (POJOs) in J2EE. 1.2.6 is primarily a bug fix release. Spring is published under the Apache License 2.0.


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


Sun's posted the maintenance review change log for the Java Network Launching Protocol and API (a.k.a. Java Web Start) specification. Changes are fairly significant and include an update element to indicate the preferences for how application updates should be handled by the JNLP client, a check attributes to specify when the JNLP client should check for updates, and a policy attributes to tell the client what to do when an update is available before the application is launched. Comments are due by January 9.

Tuesday, November 22, 2005 (Permalink)

The Mozilla Project has released Bugzilla 2.20, an open source issue tracking system based on MySQL and Perl. Despite the apparently small version number change (the previous version was 2.18), this is a major release with many new features including:


Version JSR 4 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 include really major bug fixes, the sort that always make me wonder how anyone was using this product before now and also wonder what else is still lurking unmentioned.


Version 5.5.2 of SuperWaba, an open source Java virtual machine for handheld operating systems including PalmOS and Windows CE devices, has been released. This is a bug fix release. SuperWaba is published under the LGPL.

Monday, November 21, 2005 (Permalink)

Peter Klauser has released codavaj 1.1.0, an open source (Apache License) reverse engineering tool that converts JavaDoc HTML back into Java source code. It's based on NekoHTML and dom4j instead of TagSoup and XOM, but it's still pretty cool.


Nathan Fiedler has released version 3.2 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.2 is a bug fix release. JSwat is now published under the Sun Public License. (It was previously published under the GPL.)


Enterprise Distributed Technologies has released edtFTPj/Pro 1.2.5, a $299 payware FTP library for Java that supports FTP over SSL. Version 1.2.5 can resume for binary transfers, autodetects binary/ASCII mode, and fixes bugs.


Gaudenz Alder has released JGraph 5.7.4.1, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. 5.7.4.1 adds automatic resizing so the graph expands as you drag out of the bottom or right-hand edges of a scroll pane.


Beck et al Projects GMBH has released gui4j 1.2.3, an open source Java framework for writing Swing GUIs in XML. "The graphical user interface is created dynamically based on the XML definitions. Each GUI window is associated with exactly one top-level XML file. Each XML file can dynamically include other XML files to support complex GUI definitions. Each XML file is associated with a java object that acts as both a Controller and a Model for the GUI. There is a strong layer separation between the GUI and the Controller: GUI definitions in the XML files can access all Java methods of the Controller, but Java methods cannot access any GUI elements directly. Events are used to trigger changes in the GUI." Java 1.4 or later is required. This is a bug fix release.


YourKit, LLC has released YourKit Java Profiler 5.0.4, 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 is a bug fix release. Upgrades from 4.0 are free.


Diomidis Spinellis has released UMLGraph 4.1, 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. This release adds support for Java 1.5 enumerations. Version 4.1 adds "package visibility for class members and provides better control of class hiding."

Sunday, November 20, 2005 (Permalink)

Websina has released BugZero 4.2.1, 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.2.1 is a bug fix release.

Saturday, November 19, 2005 (Permalink)

Atlassian has released version 3.4 of JIRA, a $1200-$4800 payware J2EE-based bug tracking and project management server application. Version 3.4 adds per-project issue types, wiki notation support, 'cloneable' portlets, new plugin types, and improved RSS support. I've been using Jira lately with Jaxen and Apache (though Apache's Jira is flaking out as I type this). 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.

Friday, November 18, 2005 (Permalink)

I've posted version 1.0d4 of QuickTime Amateur, an open source clone of Apple's QuickTime Player that is uncrippled and free as in speech and beer. Currently this has only been tested, designed, and run on the Mac, though a Windows port is on the TODO list.

Version d4 fixes assorted bugs, and enables or partially enables several other features; but overall Amateur is still rather rough. Saving, in particular, needs a lot of work. However if you just want to play your movies in full screen mode without paying $30, it's good enough to do that now. Various other Pro functionality such as printing, editing, and copying and pasting movies is also enabled. Amateur is published under the GPL.


Sun has posted the second beta of NetBeans 5.0, an Integrated Development Environment (IDE) for Java. Netbeans is available for Windows, Linux, Mac OS X, and Solaris. I took a quick look. Some of my objections to earlier versions seem to have been addressed in 5.0, though I haven't tried any real work with it yet. Final release is planned for January 2006. Java 1.4.2 or later is required.

Thursday, November 17, 2005 (Permalink)

The Apache Jakarta Project has released Commons Validator 1.2.0, 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. 1.2.0 adds a basket of small new features and fixes various bugs. It is published under the Apache 2.0 license.


The Apache Maven Project has released Continuum 1.0.1, a "continous intergration server for building Java based projects." Continuum supports projects based on Ant, Maven 1, and Maven 2. It exposes web and XML_RPC interfaces, and provides e-mail notification of build failures. Code can be checked out of CVS and Subversion repositories. 1.0.1 adds a few minor features such as domain names and SSL in the jabber notifier, registered nicks in the IRC notifier, and shell commands defined in user path.

Wednesday, November 16, 2005 (Permalink)

Apple's posted Java 5 Release 3 for Mac OS X 10.4 (Tiger). "Java 2 Platform Standard Edition (J2SE) 5.0 Release 3 includes version 1.5.0_05 and improves functionality of J2SE 5.0 on Mac OS X v 10.4 Tiger 10.4.2 and later. This release does not replace the existing installation of J2SE 1.4.2." According to Apple's Michael McDougall:

Just like in the developer previews, you need to do a little bit extra after the install to get everything updated correctly:

  1. Open /Applications/Utilities/Java/J2SE 5.0/Java Preferences
  2. In the Java Applet Runtime Settings panel, switch from using J2SE 5.0 back to J2SE 1.4.2
  3. Click 'Save'
  4. Switch once again, from J2SE 1.4.2 back to J2SE 5.0
  5. Click 'Save' again

This is mostly a bug fix release, including a workaround for some SWT problems.


I've posted the notes from yesterday's JUnit for Testers tutorial at STARWest. JUnit is normally thought of as a programmer's tool rather than a tester's tool. However I think some interesting things can happen if the testers get to write the JUnit tests as well; not least among them it makes it a lot harder for the programmers to deny the existence of a bug and close it as "Can't reproduce."

Friday, November 11, 2005 (Permalink)

I'm leaving shortly for L.A for the STARWest conference where I'll be talking about JUnit and Testing XML. I'm not sure what wireless access will be like at the hotel. Updates will likely be slow to nonexistent until I return next week.


Apple has released version 2.2 of Xcode, "Apple's tool suite and integrated development environment (IDE) for creating Mac OS X Universal Binaries that run natively on PowerPC and Intel-based Macintosh computers. The IDE provides a powerful user interface to many industry-standard and open-source tools, including GCC, javac, jikes, and GDB. Xcode is designed to fully support the Carbon and Cocoa frameworks and Java. It contains templates for creating applications, frameworks, libraries, plug-ins, Java applications and applets, and command-line tools. Developers can use Xcode to construct a user interface, test code performance, and perform many other common development tasks." Version 2.2 "provides overall stability and performance enhancements to Xcode IDE, as well as improvements to debugging, workflow, and the Xcode build system." Mac OS X 10.4 (Tiger) is required. Xcode and its updates are free beer. With Mac OS X Apple wisely stopped charging for developer tools. You'll still need an ADC membership (including the free membership) to get a copy.

Thursday, November 10, 2005 (Permalink)

I've posted the sixth beta of XOM 1.1, my free-as-in-speech (LGPL) dual streaming/tree-based API for processing XML with Java. Version 1.1 maintains backwards compatibility with XOM 1.0 while adding a number of important new features including XPath queries, document subset canonicalization, exclusive XML canonicalization, external XSLT parameters, and xml:id support. The API is now considered to be stable, and probably won't change before 1.1 final. Beta 6 fixes two bugs in the Canonicalizer and one bug in the Builder that could lead to malformed documents. Barring discovery of any more bugs, this should be the last beta before the final release of XOM 1.1. XOM requires Java 1.2 or later and is published under the LGPL.

Wednesday, November 9, 2005 (Permalink)

JetBrains has released IntelliJ IDEA 5.0.2, a popular $499 payware integrated development environment for Java that runs on Windows, Mac OS X, Linux, and Unix. Mostly this is a bug fix release, but it also makes a couple of dozen improvements to the inspections so overall it has a better understanding of your code.


Apache has released version 1.2.15 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.15 is a bug fix release.

Tuesday, November 8, 2005 (Permalink)

The Eclipse Project has posted the third milestone 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. This release adds support for OpenGL in SWT, buttons with image and text, many text layout improvements, a hierarchical problem view mode, better Java project import, and various other improvements. I installed the Windows version, and it seems to work. I'm not sure I'd rush out to upgrade yet, but if you need to put a version on a new system, I don't see any particular reason to use an earlier version. Eclipse milestone releases feel pretty stable, and don't have a big history of breaking existing functionality. (Famous last words, I know.)

Monday, November 7, 2005 (Permalink)

Cenqua has released Clover 1.3.11, a $250 payware unit test coverage tool. 1.3.11 is a bug fix release. Clover modifies the source code to enable it to follow which statements are executed when, and keeps a running count of how many times each statement is executed during the test suite. Any statement that executes zero times is not being tested. I use Clover with Ant, but there are also versions for NetBeans, Eclipse, IntelliJ IDEA, and Oracle JDeveloper 10g. Clover can generate test coverage reports in XML, HTML, PDF, or via a Swing Viewer. Java 1.2 or later is required.

As usual I tested this release on XOM. Some hard to find bugs had recently been reported in XML canonicalization, so I looked there. Overall code coverage of this package was 99%+, but there were a couple of uncovered lines and branches, so I wrote some tests to try to reach them. This didn't find the bug I was looking for, but it did show me a different bug that was completely unexpected. It also found one if statement that was testing for a condition other changes had made redundant. After deleting that statement and adding tests for the bugs I found, the nu.xom.canonical package reached 100% code coverage. Bottom line: if it isn't tested, it is buggy.


Generally I avoid mock objects and writing tests to the non-published interfaces. I much prefer to write tests that use the real code path rather than some faked code path. When you mock the input so you're really just testing one method and nothing else, then you're only verifying that the method behaves under the conditions you think will occur. When you use the real path into a method with the real objects, you're much more likely to be testing what will actually happen in running code. Half the time the bugs aren't inside the method you're testing. They can be outside the method, but reveal themselves when testing the method. They can also be violations of your assumptions about preconditions and postconditions for the method.

Too many test suites are too unitary, and thus tend to miss bugs that would be caught by more complete, wide-reaching tests. I'm not at all convinced that unit tests and integration tests are or should be as separate as developers often think. For example, a very non-unitary XSLT conformance test suite test (the entire test suite runs in one method) recently found a nasty bug in XOM that could violate well-formedness. A standard test-first unit test would never have found the bug because it only arose when two documents were parsed in sequence. A typical unit test would only have parsed and tested one doucment at a time, then torn down and rebuilt the parser and its associated data structures before parsing the next one. However, the bug only occurred when parsers were reused, on the second or later parses, never on the first. There were some other conditions that needed to be met before the bug was exposed as well, so even a specific test for parser reuse could have missed it; but testing a thousand different documents in a row in one test method showed the bug.

Friday, November 4, 2005 (Permalink)

I've posted my notes on Measuring JUnit Code Coverage from yesterday's talk at STPCon.


The GNU Project has released version 0.19 of GNU Classpath, an incomplete free implementation of the core Java class libraries. According to the announcement,

Some highlights of changes in this release (more extensive list below):

Much more efficient painting for large Free Swing GUIs. Improved accessibility support. HttpURLConnection rewrite. Official CORBA VMCID assigned. Start of RMI over IIOP support. Qt4 support for OS-X. Much improved Free Swing Metal theme. Free Swing Demo includes theme switcher example (Metal, Ocean, GNU). JBoss now starts up and Jonas testsuite passes for 95%. Support for the javax.sound.midi framework and experimental DSSI and ALSA service providers. Early version of the popular StAX API. Now has 96% coverage of 1.4 API.

This is the first time we also have a pre-release of our 1.5 generics work. classpath-0.19-generics contains a version of the core library that uses the new 1.5 language features such as generics and enumerations. ECJ and JamVM are known to support the generics release out of the box. And you should be able to run Eclipse 3.1 with it to develop programs that use the new 1.5 language and core library additions. classpath-generics is a work in progress and not as extensively tested as our regular releases. But please try it out if you want to help us test the new 1.5 support of the core libraries.

GNU Classpath is published under the GPL with library exception.


Gaudenz Alder has released JGraph 5.7.4, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. 5.7.4 is mostly a bug fix release.

Thursday, November 3, 2005 (Permalink)

Sun's posted the proposed final draft of JSR-250 Common Annotations for the Java™ Platform. Proposed annotations include:

javax.annotation.Generated
automatically generated code that has not been written by a human being; e.g. the GUI code generated by NetBeans
javax.annotation.Resource
"used to declare a reference to a resource. It can be specified on a class, methods or on fields. When the annotation is applied on a field or method, the container will inject an instance of the requested resource into the application when the application is initialized. If the annotation is applied to a class, the annotation declares a resource that the application will look up at runtime."
javax.annotation.Resources
"Since repeated annotations are not allowed, the Resources annotation acts as a container for multiple resource declarations."
javax.annotation.PostConstruct
"a method that needs to be executed after dependency injection is done to perform any initialization."
javax.annotation.PreDestroy
"used on methods as a callback notification to signal that the instance is in the process of being removed by the container. The method annotated with PreDestroy is typically used to release resources that it has been holding."
javax.annotation.security.RunAs
"defines the role of the application during execution in a Java EE container. It can be specified on a class. This allows developers to execute an application under a particular role."
javax.annotation.security.RolesAllowed
"specifies the security roles permitted to access method(s) in an application."
javax.annotation.security.PermitAll
"specifies that all security roles are allowed to invoke the specified method(s), that is, that the specified method(s) are “unchecked”. It can be specified on a class or on methods. Specifying it on the class means that it applies to all methods of the class. If specified at the method level, it only affects that method."
javax.annotation.security.DenyAll
"specifies that no security roles are allowed to invoke the specified method(s), that is, that the method(s) are to be excluded from execution in the Java EE container."

Java 1.5 or later will be required for this to work.

Wednesday, November 2, 2005 (Permalink)

YourKit, LLC has released YourKit Java Profiler 5.0, 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. Version 5.0 can now profile 64-bit Java and looks more native on Mac OS X. Upgrades from 4.0 are free.


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

Tuesday, November 1, 2005 (Permalink)

Apple has released Mac OS X 10.4.3 (free upgrade through Software Update for Tiger users). Among numerous other bug fixes, this release fixes some serious performance issues involving Java that were majorly slowing down some applications like Eclipse.


Sun's posted the Call for Papers for JavaOne 2006. Deadline is November 30. The conference takes place May 15-18 in San Francisco. To answer one oft-asked question, for the tenth consecutive year, I won't be attending or speaking. I will be in the Bay Area in March for Software Development West 2006.


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


Sleepycat Software has released Berkeley DB Java edition 2.0.90. Berkeley DB JE is an open source, non-relational embedded database written in Java. The data is exposed through "a Java Collections-style interface, as well as a programmatic interface similar to the Berkeley DB API." This is a bug fix release.


Older news:

20052004200320022001200019991998
January, 2005 January, 2004 January, 2003 January, 2002 January, 2001 January, 2000 January, 1999 January, 1998
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 2005 Elliotte Rusty Harold
elharo@metalab.unc.edu