The GNU Project has released version 4.0.2 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. 4.0.2 is a bug fix release.
Sleepycat Software has released Berkeley DB Java edition 2.0.83. 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.
The Apache Software Foundation has posted the second beta of Maven 2.0, an open source build tool for Java that's more declarative and less procedural than Ant. According to the Maven site,
Maven 2.0 will feel very different to a Maven 1.0 user - and perhaps a little strange. But it is a lot simpler to work with! The key changes from Maven 1.0 are:
- Faster and smaller - The Maven core no longer uses Ant, Jelly or Xerces making it much smaller, has fewer dependencies and is perfect for embedding in other tools.
- Defined build lifecycle - No more
prereqs
,preGoals
andpostGoals
. The build is a series of well defined phases. This also means that the normal goal names are not used -compile
,test
andinstall
work for any project type.- Built-in multiple project handling - Use the same goals on a set of projects, and aggregate the results.
- Improved
SNAPSHOT
handling - Snapshots are now checked for updates only once per day by default - though can be configured to be once per build, on a particular interval, or never. A command line option can force a check - making it more like updating from an SCM.- No more properties files - All plugins are now configured from the POM (which is now called
pom.xml
).- No more
maven.xml
- Plugins are now easier to build and integrate, and are the only way to script your builds. (Note that additions may later be made to the POM to allow simple things that scripting was used for, such as goal aliasing).- No more Jelly - Plugins are primarily written in Java, though there are providers for other scripting languages. This release includes support for Marmalade, a scripting framework that supports an XML syntax similar to Jelly which can be used to integrate Ant tasks and has a Jelly compatibility layer.
- Improved repository layout - Maven 2.0 supports both the existing layout, and an improved repository layout that has deeper, partitioned structure making it easier to browse.
The elimination of Jelly in favor of Java should be a real improvement. Extending Maven 1.0 is vastly too difficult. If plug-ins exist to do what you want, it's no big deal. If not, you really don't want to try writing your own. "This release is considered stable with a feature set comparable to Maven 1.0. Further betas and the final are expected to be backwards compatible, with a primary goal of bugfixes, usability improvements, and documentation."
I've posted the notes from today's talks about Testing GUIs with Abbot and Costello and User Interface Principles in API Design at SD Best Practices.
I've posted the notes from today's What's New in JUnit 4 talk at SD Best Practices. This is derived from my earlier article at developerWorks, but includes new (still tentative) information about parameterized test cases, skipping tests, and writing TestListeners.
This week I'm at Software Development Best Practices in Boston. I'll be talking about a number of topics including Effective XML, Testing XML, JUnit 4, Human Factors in API Design, Next Generation Web Clients, and GUI Testing with Abbot and Costello. Updates may be a little slow here in the meantime.
jPOS 1.5.1 has been released.
jPOS is an "ISO-8583 library/framework that can be used to implement financial interchanges, protocol converters, payment gateways, credit card verification clients and servers (merchant/issuer/acquirer)."
Alejandro Revilla writes, "This version include bugfixes, performance tuning and new components."
The Jakarta Apache Project has released version 5.5.12 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 release is considered to be an alpha that "contains several bug fixes, including an import change to session attribute storage concurrency that is required by the upcoming Servlet Specification v2.5." "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."
Three years after the initial JSR, Oracle has also posted the first public review draft specification of JSR-198 A Standard Extension API for Integrated Development Environment . According to the draft,
There are a diverse set of IDE products that are designed from the ground up to be extensible platforms where third parties can plug-in new extensions that enhance the IDE with additional features. In general, the layer that integrates an extension to an IDE is only compatible with the integration API of that single IDE. If we examine the IDE integration layer that typical IDE platforms provide we can see that:
- It is a very thin layer of code (compared to the amount of code generally written by the third party to implement a useful feature)
- There are many areas of similarity between the integration layers of the different IDEs
The Extension Software Development Kit (ESDK) proposed by this specification defines a standard application programming framework for extending IDEs written in Java with new functionality. It is designed to eliminate the need to write multiple versions of the integration layer that plugs-in the new functionality across different IDEs.
Where there are many areas of integration that could be addressed by this specification, for purposes of the first scope, viability, and time, this version of the ESDK covers integration points that allow extension writers to:
- Extend the IDE with new menus and commands
- Extend the IDE data model with additional document types
- Extend the IDE with new document creation wizards
- Extend the IDE with new editor types
- Extend the IDE new log pages
- Extend the IDE preferences and project settings with new property pages
- Define extension specific extension points
- Access the IDE Environment information
- Access extension registration information
- Access project information
- Access the Java structure model
- Access the XML structure model
- Access textual data
- Manipulate documents through a virtual file system
- Listen for data model change events
- Listen for IDE events
- Interact with the compiler
- Interact with the debugger
- Use IDE utilities such as message, warning, and error dialogs
These integration points provide enough coverage to allow building realistic and useful extensions. Integration points not covered by this version of the specification will be addressed in future versions.
Comments are due by October 17.
Apple has posted a security update for Mac OS X 10.3.9 and 10.4.2. Among other fixes, this plugs a hole in QuickTime for Java that allows an untrusted applet to "call arbitrary functions from system libraries." This affects QuickTime 6.5.2 and earlier.
IBM's alphaWorks has updated the Resource Bundle Inspector For Java, a tool that "enables initial verification and inspection of translated messages in resource bundles before product testing is done. These translated messages have come from different geographical translation centers. This tool helps testers to speed up the verification of messages before integrating them into any product. Bugs found in translated messages can be detected at early stage of product testing cycle; this helps in increasing the testing cycle efficiency." This release adds support for 16 more languages and 39 more countries.
The Apache Project has released
MyFaces 1.1.0,
an open source implementation of Java Server Faces
that tries to avoid the use of servlet sessions or cookies for saving the client state.
This release is compatible with the JSF 1.1 specification.
Sun has posted the fifth update release for Java 5.0 Tiger with dozens of assorted bug fixes. As usual it's available for Solaris, Windows, and Linux.
Version 1.1.6 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. According to developer Jim Pick, "It has been tested, but not as thoroughly as a production release would be. It contains major improvements over 1.1.5, which was released six months ago. I anticipate that most people will have less trouble with this release, and more fun."
The Maven Project has posted the fourth alpha of Continuum, 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. Alpha 4 adds schedule support, build definitions, and Jabber and MSN notifiers.
Enterprise Distributed Technologies has released edtFTPj 1.5.2, a free (LGPL) FTP library for Java. A $1999 payware version adds support for FTP over SSL. 1.5.2 fixes bugs and adds a restart() method.
Nokia and Vodafone have submitted Java Specification Request 258, Mobile User Interface Customization API, to the Java Community Process. According to the JSR,
The overall goal is the specification of an API that allows the customization of the look and feel of the user interface components in a mobile device or platform. This can be achieved by allowing the API to access the customization properties of user interface (i.e. the themes), providing a mechanism to achieve a uniform customized look and feel in the user interface components, regardless of their underlying implementation mechanism.
The API should have the following functionality:
- Querying the customization properties of user interface themes of a mobile device or platform.
- Modifying the customization properties of user interface themes of a mobile device or platform.
The initial requirements for the API are:
- Independence of specific user interface toolkits. The API should work with any graphical user interface toolkit, including (but not limited to) the LCDUI of MIDP, AGUI of JSR 209 or AWT of PBP/PP.
- Providing an open framework for access to customization properties, without being fixed to any specific named collection of customization properties.
Access to a collection of customization properties is provided through a vocabulary. This vocabulary may be specific to a device or a platform. The customization API will try to identify a common vocabulary for the properties. However, the API should be an open and flexible framework for accessing any device-specific or platform-specific properties. The properties are not limited to UI APIs, but may include also application platform properties like application icons, tones etc.
The specification enables implementations where the customization uniformly affects all user interface elements of applications (both native and Java) in the device or platform, thereby achieving a unified user experience across the device.
The JSR expert group will study whether there is a need to have application-specific customization capabilities, or the need to extend the customization capabilities to functional elements such as menu extensions and browser bookmarks.
This JSR will specify the UI customization API as an Optional Package API, and does not assume any specific application model or UI toolkit. The Optional Package can be used by any J2ME application using any supported application model, running on any J2ME Profile.
The API can be utilized in the creation of a customized look and feel for custom UI components, but it does not define any APIs for creating those custom components. The custom components are created using the facilities available in existing UI toolkits.
The expert group will also study whether there is a need to specify an over-the-air (OTA) transmission/serialization format for the customization property / UI theme data.
Comments are due by October 20.
The Legion of the Bouncy Castle has released version 1.30
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.30
adds support for the Canmellia cryptography algorithm
and fixes various bugs.
Download it while it's still legal.
The Apache Software Foundation has posted the first beta of Maven 2.0, an open source build tool for Java that's more declarative and less procedural than Ant. According to the Maven site,
Maven 2.0 will feel very different to a Maven 1.0 user - and perhaps a little strange. But it is a lot simpler to work with! The key changes from Maven 1.0 are:
- Faster and smaller - The Maven core no longer uses Ant, Jelly or Xerces making it much smaller, has fewer dependencies and is perfect for embedding in other tools.
- Defined build lifecycle - No more
prereqs
,preGoals
andpostGoals
. The build is a series of well defined phases. This also means that the normal goal names are not used -compile
,test
andinstall
work for any project type.- Built-in multiple project handling - Use the same goals on a set of projects, and aggregate the results.
- Improved
SNAPSHOT
handling - Snapshots are now checked for updates only once per day by default - though can be configured to be once per build, on a particular interval, or never. A command line option can force a check - making it more like updating from an SCM.- No more properties files - All plugins are now configured from the POM (which is now called
pom.xml
).- No more
maven.xml
- Plugins are now easier to build and integrate, and are the only way to script your builds. (Note that additions may later be made to the POM to allow simple things that scripting was used for, such as goal aliasing).- No more Jelly - Plugins are primarily written in Java, though there are providers for other scripting languages. This release includes support for Marmalade, a scripting framework that supports an XML syntax similar to Jelly which can be used to integrate Ant tasks and has a Jelly compatibility layer.
- Improved repository layout - Maven 2.0 supports both the existing layout, and an improved repository layout that has deeper, partitioned structure making it easier to browse.
The elimination of Jelly in favor of Java should be a real improvement. Extending Maven 1.0 is vastly too difficult. If plug-ins exist to do what you want, it's no big deal. If not, you really don't want to try writing your own. Right now I'm struggling with a Maven extension to support Cobertura, and it ain't pretty; even though most of the work has already been done by other people.
Tom Copeland has released PMD 3.3, an open source tool for automatically checking Java code for various classes of bugs. Version 3.3 adds seven new rules:
I tested this release out on XOM.
This time it didn't locate any real bugs.
It found a couple of places where I was making unnecessary checks for null values before an instanceof.
The new rules also flagged many places where I was writing s.equals("literal")
instead of "literal".equals(s)
though none of those seemed to be actual bugs. (I'm pretty rigorous about checking for and avoiding null in my variables.) It also noted a few places where I could eliminate a local variable; and there were several string literals it wanted replaced with constant fields. However, the switch statement rules generated lots of false positives because XOM uses lots of
switch statements in very precise but unusual ways.
The Omni Group has released
OmniGraffle 4,
a general purpose Mac OS X diagramming tool and my
UML editor of choice. New features in 4.0 include Bezier curves, SVG export, and
improved import and export to/from PICT and Visio.
OmniGraffle ranges from $79.95 to $149.95.
Cenqua has posted the second beta of FishEye 1.1, a $999 payware tool for viewing CVS activity. I've been using FishEye lately as part of my work with the Jaxen Project. As well as drawing graphs of activity, it lets you see who's committing what when to CVS, what individual committers have been up to, what's going on in different branches, what's happened to particular files, and so forth. It automatically wraps up tarballs and zip files of the current code base. The big new feature in 1.1 is Subversion support.
The Big Faceless Organization has released the Big Faceless PDF Library 2.5.2, 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.5.2 fixes bugs and adds RGBA and CMYK as color models for TIFF output and can draw PDFs with non-white backgrounds.
An early look at JUnit 4 got slashdotted.
Software Development Best Practices in Boston (September 26-29) is looking for a few more volunteers to man doors, distribute notes, and similar tasks. For each day a you volunteer you get to attend the conference for a day free, and most volunteer days involve nothing more strenuous than sitting in the back of the room listening to the presentation, and collecting eval forms at the end; so really, it's a nice way to attend the show for free.
IBM's developerWorks has published my latest article, An early look at JUnit 4. This is a fast introduction to the next version of the popular unit testing framework. JUnit 4 takes advantage of Java 5 features like annotations, varargs, and generics to simplify unit testing still further. If you're committed to Java 5, then JUnit 4 is big leap forward. Unfortunately while JUnit 4 is backward and forwards compatible with JUnit 3 test suites and test runners, it's completely incompatible with Java 1.4 and earlier so I'm afraid most of us will be sticking with JUnit 3 for some years to come.
Apple's posted Java 1.3.1 and 1.4.2 Release 2 for Mac OS X 10.4 (Tiger). "Java 2 Platform Standard Edition (J2SE) 1.3.1 and 1.4.2 Release 2 improves functionality of J2SE 1.4.2 on Mac OS X v. 10.4 Tiger and updates J2SE 1.3.1 for better interaction with J2SE 1.4.2. Release 2 includes Java 2 Platform Standard Edition versions 1.3.1_16 and 1.4.2_09." Apple has also posted a Java Security Update for Mac OS X 10.3.9 and later.
In related news the recent QuickTime 7.0.2 update seems have disabled virtual machine sharing for a lot of users including myself. The symptom is a message stating "HotSpot not at correct virtual address. Sharing disabled." every time you run anything with Java 5. Various fixes have been suggested, but none have proven effective. Another update from Apple may be required here.
The Apache Software Foundation has posted the second beta of Maven 1.1, an open source build tool for Java that's more declarative and less procedural than Ant. Maven is also much more authoritarian and less configurable than Ant.
The 1.1 release focuses on the following objectives:
- Integration of Maven 2 technologies such as Maven Wagon, Maven SCM and the new model code
- Apache Ant 1.6.5 support, including forkmode="once"
- Upgrade to later releases of dependencies, in particular Jelly
- Significant improvements in memory usage
- Improved POM layout
- Bugfixes
With just a few exceptions [1], Maven 1.1 is backwards compatible with Maven 1.0.
I've been using Maven lately as part of my work with the Jaxen project, and it has some nice features; but I really can't recommend it. It's too controlling. If your build process doesn't look like what Maven wants it to look like, you're going to be fighting against it. Maven's probably a little easier to set up than Ant for basic tasks like build, test, and deploy. However, as soon as you want to do something a little different than Maven expects, you're S.O.L. It's really Maven's way or the highway.
I've posted the third beta release 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 3 focuses on performance. This release is measurably
faster than beta 2 for many common operations, and probably at least twice as fast as XOM 1.0. This probably the penultimate beta before the final release of XOM 1.1.
XOM requires Java 1.2 or later and is published under the LGPL.
Novell has released Mono 1.1.9, an open source implementation of Microsoft's .NET framework that runs on Linux, Unix, Mac OS X, and Windows. Mono includes an ECMA Common Language Infrastructure (CLI) runtime engine, a cross platform IKVM Java runtime engine, a C# 1.0 compiler, class libraries implementing the .NET 1.1 profile, the Gtk# 1.0 GUI programming toolkit, GNU Classpath for the CLI and a Visual Basic runtime. In version 1.1.9 the JIT compiler adds support for the Itanium and ARM processors. It also introduces SSL support on XSP, a reusable Web server, Cairo 1.0 bindings, and new .NET-compatible international collation code.
The GNU Project has released version 0.18 of GNU Classpath, an incomplete free implementation of the core Java class libraries. According to the announcement,
The GNU Classpath developer snapshot releases are not directly aimed at the end user but are meant to be integrated into larger development platforms. For example the GCC (gcj) and Kaffe projects will use the developer snapshots as a base for future versions.
This is our first release after "The Big Merge" with GCC/GCJ. GNU Classpath can now be used as a subdirectory of libgcj inside the GCC tree so it will be much easier to keep GCC up-to-date with the latest GNU Classpath developer release snapshots.
Some highlights of changes in this release (more extensive list below):
Added GNU JAWT for awt native interface support. Datatransfer clipboard updated to 1.5 including support for copy/paste of serialized objects, images and files. Completed the org.omg PortableInterceptor, DynamicAny and Portable Object Adapter packages. Multi plaf support for Free Swing. Editing support for JTree and JTable. Lots of icons and look and feel improvements for Free Swing basic and metal themes. NIO FileChannel.map implemented and DirectByteBuffer put method speedups. Image loading speedups for awt. Support for darwin and solaris out of the box.
Since this is a clean room project, it doesn't always line up exactly with any particular Java version; but it's roughly at the level of Java 1.4 with a few missing pieces and an increasing number of pieces pulled in from 1.5. GNU Classpath is published under the GPL with library exception.
The Jakarta Apache Project has released version 1.2.12 of Log4j, a logging toolkit for Java. "This new version contains a number of bug fixes, the addition of the much requested TRACE level, and is compile and runtime compatible with the earlier JDK's 1.1 and 1.2 (this feature had been inadvertently broken in version 1.2.11). Other than the addition of the TRACE level, the API is identical to earlier versions of 1.2.X."
IBM's alphaWorks has released HeapAnalyzer 1.3.5, a tool for locating possible memory leaks through "heuristic search engine and analysis of the Java heap dump in Java applications. Java heap areas define objects, arrays, and classes. When the Garbage Collector allocates areas of storage in the heap, an object continues to be live while a reference to it exists somewhere in the active state of the JVM; therefore the object is reachable. When an object ceases to be referenced from the active state, it becomes garbage and can be reclaimed for reuse. When this reclamation occurs, the Garbage Collector must process a possible finalizer and also ensure that any internal JVM resources that are associated with the object are returned to the pool of such resources. Java heap dumps are snap shots of Java heaps at specific times." Version 1.3.3 adds support for the .phd format, types 4 and 5.
Teodor Danciu has released JasperReports 1.0.2, 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.0.2 adds support for simple HTML tags inside styled text elements
Does anyone happen to know of a class in Java 5 that changed in such a way that its serialized format was incomaptible with Java 1.4, either forwards or backwards? i.e. I'm looking for a class whose Java 5 serialized instances could not be deserialized in Java 1.4 or vice versa. In the examples I've looked at so far Sun's been quite careful to maintain forwards and backwards compatibility despite dire warnings that one can't rely on this. If you happen to know of such a case, please drop me a line. Or failing a Java 5 difference, I could also use differences between Java 1.4 and 1.3. Thanks.
Day Software has submitted JSR-283 Content Repository for Java Technology API 2.0 to the JCP. According to the JSR:
Since this JSR represents an enhancement of JSR-170, the same general goals apply to this JSR as to JSR-170 (from the JSR-170 proposal):
The aim is to produce a content repository API that provides an implementation independent way to access content bi-directionally on a granular level. A content repository is a high-level information management system that is a superset of traditional data repositories. A content repository implements ?content services? such as: author based versioning, full textual searching, fine grained access control, content categorization and content event monitoring. It is these ?content services? that differentiate a content repository from a data repository. Many of today?s (web) applications interact with content repositories in various ways. This API proposes that content repositories have a dedicated, standard way of interaction with applications that deal with content. This API will focus on transactional read/write access, binary content (stream operations), textual content, full-text searching, filtering, observation, versioning, handling of hard and soft structured content.
In particular, the following functional areas will be reviewed by the expert group for possible inclusion in version 2.0:
- Extensions in the area of management of a content repository such as access control management, workspace and nodetype management, retention aspects of content or repository construction patterns.
- Improvement of content repository interoperability through the addition of new standardized node types, including node types for meta information and internationalization.
- Extensions to content modelling capabilities.
- Federation, cross-repository and cross-workspace functionality.
- Active development of existing query-languages, versioning and observation.
- Remoting and client/server protocol mappings.
- Possibly other enhancements.
Comments are due by September 19.
Cenqua has posted the first beta of FishEye 1.1, a $999 payware tool for viewing CVS activity. I've been using FishEye lately as part of my work with the Jaxen Project. As well as drawing graphs of activity, it lets you see who's committing what when to CVS, what individual committers have been up to, what's going on in different branches, what's happened to particular files, and so forth. It automatically wraps up tarballs and zip files of the current code base. The big new feature in 1.1 is Subversion support.
Version 2.3 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.
FYI, this is the product whose name I was trying (and failing) to remember in the Q&A part of my Test Driven Development session at EclipseWorld last week.
Teodor Danciu has released JasperReports 1.0.1, 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.0.1 adds RTF and plain text reports.
ObjectWeb has released
C-JDBC 2.0.1, an open source (GPL)
"database cluster middleware that allows any Java application (standalone application, servlet or EJB container, ...) to transparently access a cluster of databases through JDBC(tm). The database is distributed and replicated among several nodes and C-JDBC balances the queries among these nodes. C-JDBC handles node failures and provides support for checkpointing and hot recovery."
Websina has released BugZero 4.1.6, 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.1.6 handles the current and default projects independently.
Nigel Mckie has released
GeSHi 1.0.7.2, a generic syntax highlighter for PHP that
highlights source code in 49 languages (including Java)
in XHTML and CSS.
It uses CSS to cusotmize the highlighting.
GeSHI is released under the GPL.
Lorenzo Bettini has released GNU Source-highlight 2.1.2, 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. Binaries are available for Unix, and it should compile on Windows with the appropriate libraries. This is a bug fix release.
Andrei Kouznetsov has released Unified I/O 2.5.1, an open source (BSD license) class library that "allows random access to any data or stream (even over HTTP), and gives a clear difference between read only and read/write access." This is a bug fix release.
The Big Faceless Organization has released the Big Faceless PDF Library 2.5.1, 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.5.1 fixes bugs. Java 1.2 or later is required.
David Hovemeyer and Bill Pugh have posted FindBugs 0.9.3, an automated open source tool for finding potential bugs in Java code. New detectors in this version include:
I tested this out on XOM where it "found" over 3000 bugs. Almost
all of them were false positives. In particular,
it objected to the numerous times XOM uses the same code in different branches of a switch
statement. (Sometimes it's important to do this to optimize by using table switches.) However, it did find one minor but real problem that is now fixed. If I hadn't used this tool frequently in the past, it would have found more.
As promised (threatened?) I've updated the conferences page; and it is now written completely in XML and styled with XSLT. If you notice any weirdnesses in the page, holler. The old HTML version is still available; but it's now statically generated once a day from the XML version. (It's not like I change the page more often than that, and cron is just easier to set up than Cocoon or something fancier. The RSS feeds have been generated out of cron for a couple of years now, and that seems to work well.)
XML is eight years old now, and I really think it's time to start experimenting with real XML served directly to clients for a change. I'm also hopeful that it will be easier to edit and update the page than it was to maintain the old HTML page. A lot of the internal links, duplicate content, and old data can be managed automatically by XSLT so I actually have to type quite a bit less to enter a new show. Semantic markup is not just better for machines than presentational markup. Done right, it's also easier for humans to author.
I've posted the notes from my two talks yesterday at EclipseWorld, Static Code Analysis with Eclipse and Macifying SWT. The next EclipseWorld is scheduled for September 6-8 in Boston.