June, 2004 Java News

Wednesday, June 30, 2004

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

Version 3.1 is mostly backwards compatible with 3.0. It adds a number of new classes including TreeList, MultiKeyMap, SingletonMap, ObjectGraphIterator, MapBackedSet, ReferenceIdentityMap, AbstractReferenceMap, EmptyIterator, TransformedPredicate, PredicateDecorator, and AbstractSerializableDecorator. A number of other classes are now Serializable, and various methods have been added to existing classes. And of course bugs have been fixed.

Tuesday, June 29, 2004

It looks like the Supreme Court is finally waking up after a two and half year nap and noticing that, hey the government can't just toss anybody they don't like in jail indefinitely for any reason they can cook up. In three decisions that split several ways with a variety of concurring and dissenting opinions, the court ruled that Yaser Esam Hamdi must be allowed to appear before a court to challenge his designation as an enemy combatant. It ruled 6-3 that prisoners held at Guantanmo Bay can petition the Fedral Courts for writs of habeas corpus. (The Bush administration had choisen Guantanmo bay specifically to avoid this.) By a 5-4 decision it ruled on a technical matter that the petition for Jose Padilla had not been filed in the proper jurisdiction. However, that case will now be refiled, having been considerably strengthened by the decision in the Hamdi case. Maybe there's hope yet.


You can't track the numbers without a score card. Sun now appears to have decided to call the next release of the JDK, Java 2 Standard Edition 5.0 Software Development Kit. Unfortunately this pretty much precludes ever going to the backwards incompatible Java 3 I've advocated in the past, though I suppose they could always follow Apple and call that Java X, or imitate Microsoft and call it Java 3000.


Apple has posted the third developer preview of Java 1.4.2 Update 1 on the Apple Developer Connection (registration and Mac OS X 10.3 required). No word yet on what's been fixed in this release.


Sun has posted an early access version of Java Studio Creator for Mac OS X.The early access version expires September 30. It should eventually cost $99. It will also be available with new 15- or 17-inch PowerBooks. Mac OS X 10.3.3, a 1 GHz G4, 1GB RAM and 310MB hard drive space are required.

Monday, June 28, 2004

jutils.com has released lint4j 0.6, a free-beer "static Java source code analyzer that detects locking and threading issues, performance and scalability problems, and checks complex contracts such as Java serialization by performing type, data flow, and lock graph analysis." Version 0.6 checks for a few more potential problems, adds an Ant task, and fixes bugs.

I ran this across the XOM code base. It didn't find anything useful; and did report numerous false positives. In at least one case it was actively wrong — it reported that a local variable in a subclass shadowed a field in the superclass, but the similarly named superclass field was private. Some of its claims were also questionable. Foir instance, it hated the numerous times I used == instead of equals() in XOM, saying this was OK if "there only exists a well defined number of instances." However, in almost all the cases I was very deliberately testing for object identity rather than object equality because that's what the semantics of algorithm required. Perhaps this tool would be useful on a less polished code base than XOM's, but I didn't see evidence of that. :-(


David Hovemeyer has posted FindBugs 0.8.1, an automated open source tool for finding potential bugs in Java code. This release adds a detector for string concatenation inside loops that should probably be replaced by StringBuffers. It also reduces the rate of false positives.

I tested this release on the latest XOM code base. The new detector found one area where it thought I should use a StringBuffer. However, it was actually a fairly complicated section involving heavy use of substrings as well a sstring concatenation. Given XOM's need to run in pre-1.4 VMs that don't support substring operations on StringBuffers, makign the change seemeed inadvisable. Java 1.4 or later is required. FindBugs is published under the LGPL.


Dan Creswell has released version 2.1.2 of the Blitz JavaSpaces Server Edition, 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. This release adds an experimental hot backup facility, a storage lock to prevent execution of multiple instances against one database, a cleanup system for database log files, and fixes various bugs.


Mark Lindner has posted the Jolt JVM Daemon 0.7.1, a free-as-in-speech (LGPL) wrapper program for Linux and Solaris that enables multiple invocations of java, javac, javadoc, and jar to reuse the same virtual machine for faster startup. Given the problems caused already by classpath and class loader issues, and the number of times I've had to specify fork="true" in my ant build files to make everything work, I'm not sure this is such a good idea.


iPOV has posted jSai 0.8, an open source (Apache license) Servlet Authentication Implementation. based on J2SE + servlets. A J2EE application server is not required. jSai supports basic JDBC and XML backed user stores, as well as an LDAP user store. According to iPOV,

While there are several attempts to create authentication and authorization standards for J2EE applications, they tend to be overly complex; and more importantly have little support for providing information to an application. For instance, the security constraints specified for Servlet Containers allow security mappings that are potentially quite rich; but the only security information provided to a running servlet application is request.getUserPrincipal() and request.isUserInRole() - so in order to display menus based on user privalages the servlet/JSP writer needs to know the mapping of rolenames and users to security levels. Wounldn't it be much more logical to have a way to proactively check to see if a user will be able to access a web resource without needing to know the runtime configuration, a canAccess(user, url) method as it were? We think so. This enables system administrators to change security settings without needing to re-code application logic. You no longer need to choose between displaying a link to a site section that many users would not be authorized to view, or hardcoding in the restriction parameters.
jSai is implemented as a servlet Filter, a set of JSP Tags, and a supporting library (for servlets). Users, and group information can be stored in XML files, a JDBC accessable databases, or in LDAP. The JSP Tags as well as library calls enable web application developers to access important authentication information.
Sunday, June 27, 2004

The Eclipse Project has released Eclipse 3.0, an open source integrated development environment (IDE) for Java. (This time I mean it. I'm downloading it on another computer as I type.) 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. Linux, Windows XP, Solaris 8, AIX, HP/UX 11i, or Mac OS X 10.3 or later is required. Earlier versions of Mac OS X are not supported. Earlier versions of Windows may work but are not tested.


The Apache Jakarta Commons Team has released Commons Net 1.2.2 (formerly known as ORO NetComponents), an open source (Apache license) suite of internet protocols implemented in Java including Finger, Whois, TFTP, Telnet, POP3, FTP, NNTP, SMTP, Time and Echo. 1.2.2 is a bug fix release.

Saturday, June 26, 2004

Sun has posted the proposed final draft (version 0.51) of Java Specification Request (JSR) 176, J2SE™ 1.5 (Tiger) Release Contents, to the Java Community Process (JCP). "TThis specification will define the target feature and API set for J2SE 5.0 The goal is that the final release will include all the high and medium priority features from this target list, but depending on implementation and API design schedules some items may be deferred to a later release if they are unable to make the release schedule. The final specification will reflect the final J2SE 5.0 deliverables." High priority new features (Java 1.5 will not ship without them) include:

Medium priority features (Important but will not hold up the release) include

Low priority, "targets of opportunity" include

The only change listed since the last draft is: "Update feature details of 4674944 On-the wire interoperability."


I just realized something: Java 1.5, being covered at JavaOne, is code named Tiger. Mac OS X 10.4, being announced across the hall in Moscone is code named Tiger. And I've heard a couple of hints that there's something big and unexpected being announced by Sun next week with regard to Java. Could there be some as yet unreleased big news about a Sun-Apple collaboration? Maybe Java becoming the preferred programming language for the Mac, and/or a beta of Java 1.5 for Mac OS X being released? This is probably just a coincidence. But then again, maybe not.

Friday, June 25, 2004

Sun has released the Java Web Services Developer Pack 1.4. Version 1.4 supports the April 19, 2004 draft versions of the WS-I basic profile 1.1, the WS-I Attachment Profile 1.0, Web Services Security: SOAP Message Security 1.0, and the WS-I Simple SOAP Binding Profile 1.0. Bundled Java APIs include:

Tomcat's been dropped from this release, but it should all work with Tomcat if you install that separately.

Potentially useful (especially if this gets into the next version of the JDK) is that they've now renamed the bundled Apache packages from org.apache to com.sun.org.apache so it should be more easily possible to replace them without having to use endorsed directories, -Xbootclasspath, and other CLASSPATH-fu.


Chris Nokleberg has released the Sixlegs PNG Library 1.3.0, a free-as-in-speech (LGPL) Java 1.1-compatible PNG decoder that supports the complete PNG specification including interlacing, palette-indexed images, alpha/transparency, gamma correction, access to all standard chunk data, private chunk handling, and progressive display.


Hugues Pisapia and Marc Gimpel have posted JSpeex 0.9.4, an open source "Java port of the Speex speech codec (Open Source/Free Software patent-free audio compression format designed for speech). It provides both the decoder and the encoder in pure Java, as well as a JavaSound SPI." 0.9.4 is a bug fix release. JSpeex is published under a BSD license.

Thursday, June 24, 2004

Sun has posted an early draft review of Java Specification Request 243: Java™ Data Objects 2.0 - An Extension to the JDO specification. Someone more experienced with JDO than me will have to read this and explain what's changed since JDO 1.0, but according to the original JSR:

Features to be added to the JDO specification include:

Relational Database Mapping:
The programmer's view of the datastore hides the details of the underlying datastore, which is attractive but leads to some issues. Different JDO vendors have implemented mappings to relational databases differently, and the mappings are not portable among vendors. This JSR will address a common mapping format to allow a higher degree of portability of applications.
Disconnected operation:
A primary use-case for JDO is in a middle tier of a multi-tier architecture. Rich clients (http clients running applets, web services clients, and ORB clients) may wish to extract a subset of values from the database in a structured (domain model) format, and update this information. Once updated, the information is sent back to a middle tier, where the changes are applied to the datastore. This JSR will address the APIs in the middle tier to facilitate this use-case.
Broaden the range of implementations:
Certain JDO 1.0 specification restrictions reduce the acceptance of the API by potential JDO vendors. Limitations include a requirement for binary compatibility to the Reference Enhancement contract and a requirement that only classes, not interfaces, can be persistent. This JSR will address these limitations. Alignment with J2EE:
While the JDO technology is suitable as a component in the J2EE architecture, certain services are required from the server that are not currently standardized. Part of this JSR will recommend standard APIs to provide these services. Part of this alignment will specify the portable behavior of transaction completion in the web and ejb containers.
Extensions to JDO queries:
JDOQL provides a standard way to access persistent instances based on values and relationships, but is limited in what can be returned as the result. This JSR will extend the range of return values to include projected fields, collections of instances identified in navigational expressions, and aggregate data such as MIN, MAX, SUM, AVG, and COUNT. Additional methods will be defined to perform string manipulations in filters.
Relationships:
The JDO object model does not specify bidirectional or composition relationships among object classes. This JSR will consider issues regarding managed bidirectional relationships and composition relationships including cascade delete semantics.
Maximize JDO backward compatibility:
Many applications and deployments have significant investments in the JDO technology. Any improvements to the API will attempt to maintain backward compatibility to all previous JDO specifications.

Comments are due by August 7.


Sun has posted an early draft review of JSR 209 Advanced Graphics and User Interface Optional Package for the J2ME Platform. "The Advanced Graphics and User Interface (AGUI) Optional Package migrates many of the core APIs for advanced graphics and user interface facilities from the J2SE™ platform to the J2ME™ platform. These facilities include much of the functionality from Swing, Java 2D Graphics and Imaging, Image I/O, and the Input Method Framework. Applications can use this functionality to develop advanced applications for consumer devices such as mobile terminals and home devices." There's some interest in implementing this on top of native toolkits instead of Swing's traditional Java-based rendering. Comments are due by August 7.


Donato Ferrante has posted the Javac Compiler Helper 0.2.0, a free-as-in-speech (GPL) wrapper for javac that automatically imports all of the classes needed to correctly compile a program without explicit import statements.


Stefan Reich has posted beta 3 of SuperVersion, a single user version control system suitable for small projects, as opposed to multiuser, server-based systems like CVS and subversion. This beta reduces the disk footprint of the repository and adds intra-line diff coloring.

Wednesday, June 23, 2004

The Eclipse Project has released Eclipse 3.0, 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. Linux, Windows XP, Solaris 8, AIX, HP/UX 11i, or Mac OS X 10.3 or later is required. Earlier versions of Mac OS X are not supported. Earlier versions of Windows may work but are not tested. Update: I should have read the press release more carefully. You can't actually download it until next Wednesday. I suppose they're delaying it till JavaOne, which is a bit silly if it's ready now. (And if it isn't ready now, they're going to be up a creek if a showstopper bug is found in the next week.)


IBM has released version 3.0 of their International Components for Unicode (ICU) for both Java and C/C++. ICU goes beyond the standard JDKL classes to provide a number of Unicode aware features including collation, formatting, locales, regular expressions, layout managers, and input methods.


IBM's alphaWorks has released the Development Tool for Java-COM Bridge, a "tool for developing and enabling tight communication between Java™- and COM-based applications. An application running on Microsoft Windows® systems is typically constructed as a set of interconnecting components entirely based on Microsoft Component Object Model (COM) technology, or on Java technology. There is not a simple, direct way to connect a COM-based component with a Java-based component. The Development Tool for Java-COM Bridge enables the integration of both COM- and Java-based components in one application and allows the two kinds of components to communicate bi-directionally through the Java Native Interface (JNI) technology."


Andrei Kouznetsov has released UnifiedIO 1.3.1, a 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."

Tuesday, June 22, 2004

David Hovemeyer has posted FindBugs 0.7.4, an automated open source tool for finding potential bugs in Java code. This release detects JDBC resources (connections and statements) that aren't closed on all paths out of method. Otherwise, it mostly fixes bugs and makes various minor improvements.

I tested this release on the latest XOM code base. It found one stream that wasn't closed on all paths out of a method, one possible bug involving string comparisons that used == instead of .equals() (though I suspect those strings had been interned) and a lot of false positives. I was quite surprised it didn't find more since I had made major changes to XOM's internals since the last time I ran any static code analysis tools. On the plus side, this is the first time I can remember a tool of this nature just working out of the box without having to struggle to set up the tool just right.

Java 1.4 or later is required. FindBugs is published under the LGPL.


Jeff Pace has released version 5.0 of DoctorJ, an LGPL'd Java application (previous versions were written in written in C++ for Linux) that analyzes Java source code in three areas:


Michael Fuchs has posted version 0.57 of his DocBook Doclet that creates DocBook SGML and XML documents from JavaDoc. This release validates the output against the DocBook DTD and can generate PDF output through an XSL-FO intermediary.

Monday, June 21, 2004

The Eclipse Project has posted the third release candidate of Eclipse 3.0, 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. RC3 is a pure bug fix release. There are no new features since M9. Linux, Windows XP, Solaris 8, AIX, HP/UX 11i, or Mac OS X 10.3 or later is required. Earlier versions of Mac OS X are not supported. Earlier versions of Windows may work but are not tested.

Saturday, June 19, 2004

Oracle has submitted Java Specification Request (JSR) 247, Data Mining 2.0 to the Java Community Process (JCP). Quoting from the JSR,

JDM 2.0 extends JDM with requested functionality for new mining functions, mining algorithms, and corresponding web services specification. Features that should be considered in JDM 2.0 include, but are not limited to, the following:

  • Sequential Patterns / Time Series - mining functions to address forecasting and modeling seasonal or periodic fluctuations in data.
  • Transformations interface - data preparation is a key aspect of any data mining solution. A separate JSR for transformations is likely warranted. Having a close integration with such a JSR and addressing transformations in the next version has high priority.
  • Ensemble models - define composite models structured with logic, e.g., boosting and bagging approaches.
  • Apply for Association - augment specification to enable prediction based on association rules.
  • Text Mining - enable mining of unstructured text data both by explicit feature extraction and the accepting of text attributes as model predictors
  • Model Comparison - introduce ability to compare multiple models according to various quality metrics, e.g., accuracy and lift for classification.
  • Multi-record real-time scoring - enable scoring of multiple records in the record apply task as a performance optimization for applications.
  • Multi-target models - enable the specification of multiple targets for supervised models as a model performance and representation optimization.

Comments are due by June 28.


The J2ME Executive committee voted to reject JSR 246, Device Management API. There's some concern about overlap with JSR 232, Mobile Operational Management. This JSR will probably be revised and resubmitted to clarify the issues of concern.


Sun's posted the change log for Java Specification Request 924, Java Virtual Machine Specification. I'm not an expert an expert on virtual machine internals, but the changes appear to be substantive, not merely editorial like a lot other maintenance releases. Comments are due by July 19.


Sun has released the "J2EE 1.4 SDK and Sun Java System Application Server Platform Edition 8 Update 1." This release upgrades Java Server Faces to version 1.1. Otherwise, it's a bug fix release. It's available for Windows, Linux, and Solaris.


IBM's alphaWorks has released Asynchronous IO for Java (AIO4J), a that "provides asynchronous IO capabilities for Java applications. The aim is to provide fast, scalable IO for Sockets and for Files, using asynchronous capabilities provided by the underlying operating system." It's not obvious to me why one might want to use this instead of the asynchronous I/O capabilities of the java.nio package introduced in Java 1.4. David Hunter suggests this might have something to do with JSR 203, More New I/O APIs for the JavaTM Platform ("NIO.2").

Friday, June 18, 2004

I'm trying to get a screenshot of a Jabber client written in Java for a book I'm working on. However, I have not used instant messaging before, and therefore do not happen to have a buddy list handy. If anybody out there uses the Jabber IM network, could you do me a favor and try to chat with elharo@jabber.org so I can get a screen shot with a little chatting in it and not look like a social pariah? Or if you e-mail me your Jabber user name I can try to chat with you. Thanks.


Sun's posted a beta of the Java 2 Micro Edition (J2ME) Wireless Toolkit 2.2. Java 1.4.2 on Windows XP is required. The Toolkit includes build tools, utilities, and a device emulator. Supported APIs include:

Other new features include:


Sun has posted the proposed final draft of Java Specification Request 163, Java Platform Profiling Architecture in the Java Community Process. The JSR proposed a "mechanism and APIs for extracting time and space profiling information from a running Java virtual machine"; but it seems to have experienced severe scope creep. It now includes the Java Virtual Machine Tool Interface (JVMTI). According to the draft spec, JVMTI is

a programming interface used by development and monitoring tools. It provides both a way to inspect the state and to control the execution of applications running in the Java TM virtual machine (VM).

JVMTI is intended to provide a VM interface for the full breadth of tools that need access to VM state, including but not limited to: profiling,debugging, monitoring, thread analysis, and coverage analysis tools.

JVMTI may not be available in all implementations of the Java Virtual Machine.

JVMTI is a two-way interface. A client of the JVMTI, hereafter called an agent, can be notified of interesting occurrences through events. The JVMTI can query and control the application through many functions, either in response to events or independent of them.

Agents run in the same process with and communicate directly with the virtual machine executing the application being examined. This communication is through a native interface (JVMTI). The native in-process interface allows maximal control with minimal intrusion on the part of a tool. Typically, agents are relatively compact. They can be controlled by a separate process which implements the bulk of a tool's function without interfering with the target application's normal execution.

JVMTI is planned to become the new lowest layer of the Java Platform Debugger Architecture (JPDA) and to replace the Java Virtual Machine Profiler Interface (JVMPI) and the   Java Virtual Machine Debug Interface (JVMDI).


Stefan Reich has posted beta 2 of SuperVersion, a single user version control system suitable for small projects, as opposed to multiuser, server-based systems like CVS and subversion.


Novell has posted the third beta release of Mono, an open source implementation of Microsoft's .NET framework that runs on Linux, Unix and Windows. Mono includes "a C# compiler, an implementation of the Common Language Infrastructure and two stacks of APIs: a Unix, Linux, GNOME, Mono stack for APIs that takes the most advantage of your Unix server and desktop and a set of APIs compatible with the Microsoft .NET Framework 1.1 that provides support for ASP.NET (web services and web forms), ADO.NET and many other components." Release notes haven't been posted yet, so it's not clear what's changed since beta 2.

Thursday, June 17, 2004

Novell has posted the second beta release of Mono, an open source implementation of Microsoft's .NET framework that runs on Linux, Unix and Windows. Mono includes "a C# compiler, an implementation of the Common Language Infrastructure and two stacks of APIs: a Unix, Linux, GNOME, Mono stack for APIs that takes the most advantage of your Unix server and desktop and a set of APIs compatible with the Microsoft .NET Framework 1.1 that provides support for ASP.NET (web services and web forms), ADO.NET and many other components." Changes since beta 1 seem to be foccused on bug fixes and speed ups.


The JDIC Project has posted an early access release of the Tray Icon API, "a set of interfaces for creating tray icons on the desktop. A tray icon can have a caption (text), an icon, and a menu associated with it. It can also have a tool tip that is displayed when the mouse hovers over the tray icon. To get animation in the notification tray, use an animated GIF for the icon. Tray menus are Swing menus, which enables them to contain icons (unlike Windows and Gnome tray menus) and have either a cross-platform look and feel or the system look and feel." The Tray Icon API is published under the LGPL.


JXTA J2SE 2.3 has been released. JXTA "is a set of open protocols that allow any connected device on the network ranging from cell phones and wireless PDAs to PCs and servers to communicate and collaborate in a P2P manner. JXTA peers create a virtual network where any peer can interact with other peers and resources directly even when some of the peers and resources are behind firewalls and NATs or are on different network transports." Version 2.3 is API and protocol backwards compatible with previous 2.x releases. New features in this release include:


Joey Gibson has written an Ant task that makes "it a little easier to work on a project using both Ant and Eclipse. What this task does is read the .classpath file that Eclipse uses to maintain your project's classpath, combines that with your Eclipse preferences to expand classpath variables and then creates a path-like structure in your Ant project that you can compile against." It relies on JDOM.


Diomidis Spinellis has released UMLGraph 2.5, 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 2.5 allows the the swimlanes object in a sequence diagram to show nested object invocations.


Sleepycat Software has released Berkeley DB Java edition 1.5. Berkeley DB JE is a 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." Licensing is unclear, but it seems to be some weird form of semi-viral open source license. Java 1.4.2 or later is required.


Timothy Wall has posted version 0.12.3 of the Abbot GUI testing framework has been released. This release fixes bugs. Abbot is published under the LGPL.


YourKit, LLC has released YourKit Java Profiler 2.5.1, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features Automation of memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA Borland JBuilder integration. Version 2.5.1 integrates with IntelliJ, fixes bugs, makes some speed ups, and provides printer friendly documentation. The tool runs on Windows or Linux.


The Big Faceless Organization has released the Big Faceless PDF Library 2.2.2, a $400 payware (more if you want support) Java class library for creating PDF documents. The $1000 Extended Edition adds the AcroForms support, digital signatures, and the ability to import and edit and existing PDF documents. Version 2.2.2 makes various optimizations. Java 1.2 or later is required.


debugtools.com has released version 3.6 of JDebugTool, a standalone graphical Java debugger built on top of the Java Platform Debugger Architecture (JPDA). This release displays object IDs and thread object IDs throughout the GUI and also displays an expression's resulting type in the Expressions Panel. JDebugTool is $99 (personal)/$199 (corporate) payware.

Wednesday, June 16, 2004

The Apache Jakarta Project has released Commons-DBCP 1.2.1, a library for pooling database connections. According to the web page, "Creating a new connection for each user can be time consuming (often requiring multiple seconds of clock time), in order to perform a database transaction that might take milliseconds. Opening a connection per user can be unfeasible in a publicly-hosted Internet application where the number of simultaneous users can be very large. Accordingly, developers often wish to share a 'pool' of open connections between all of the application's current users. The number of users actually performing a request at any given time is usually a very small percentage of the total number of active users, and during request processing is the only time that a database connection is required. The application itself logs into the DBMS, and handles any user account issues internally." DBCP 1.2.1 is a maintenance release that restores Java compatibility.


The Jakarta Apache Project has also released version 1.0.4 of Commons Logging. "There is a great need for debugging and logging information inside of Commons components such as HTTPClient and DBCP. However, there are many logging APIs out there and it is difficult to choose among them. The Logging package is an ultra-thin bridge between different logging libraries. Commons components may use the Logging API to remove compile-time and run-time dependencies on any particular logging package, and contributors may write Log implementations for the library of their choice." Version 1.0.4 "features several enhancements and bug fixes but is primarily a service release supporting both the older 1.2.x versions of Log4J and the upcoming 1.3.x versions. It is a fully compatible, drop-in replacement for the last 1.0.3 release."


By the way, I sometimes get annoyed e-mail from project leads and PR agents (incuding some at other Apache projects) asking why I haven't posted their news items. Often the reason is I can't figure out what the product actually does amidst all the hype about faster, better, and more buzzword compliant. It strikes me that the above descriptions are very good example of what product announcements should look like. In about a paragraph they explains what the product is and what it does without descending into adjectival hype. After reading that, I know immediately whether the product is useful to me or not.

Tuesday, June 15, 2004

www.elharo.com is back up after a three-month absence. I still need to set up the virtual hosts on that server (macfaq.com, namespaces.cafeconleche.org, xom.nu), get the servlets working, and update the page itself; but overall this seems to be going a lot more smoothly than my experiences with Linux in the past. This time I installed Debian. Apt is a very nice program, but what really makes a difference seems to be installing a bare minimum of functionality and adding the rest one package at a time as I need it. Debian's bare minimum is still too maxxed out for my tastes. For instance, "vacation" is hardly an essential package. (I removed it.) I also manually installed the key programs I wanted on the server past the minimum: Apache, Tomcat 5, JDK, etc. This way I have a lot more control over what's running and how it's configured than I did by installing distro packages.

I reiterate my call for distro vendors to stop competing by seeing how much junk they can squeeze onto a CD, or now a DVD. I suggest they carefully select the packages they include, and hew to the maxim, "Less is more." One GUI toolkit, not two. One kernel, not three. One window manager, not seven. One text editor, not seventeen. No servers running by default. No office suites. No games or graphics editors. Do make it easy for users to install extra functionality they happen to want. (Apt seems to do this quite well.) However, installing everything any user might ever need does not accomplish this.


The Eclipse Project has posted the second release candidate of Eclipse 3.0, 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. RC2 is a pure bug fix release. There are no new features since M9. Linux, Windows XP, Solaris 8, AIX, HP/UX 11i, or Mac OS X 10.3 or later is required. Earlier versions of Mac OS X are not supported. Earlier versions of Windows may work but are not tested.

Monday, June 14, 2004

The Legion of the Bouncy Castle has released version 1.24 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.24 can handle user attribute packets and GPG comment packets in OpenPGP key rings. It can also create OpenPGP key rings and sub keys. Plus some significant bugs were fixed. Download it while it's still legal.


The Eclipse Project has released AspectJ 1.2. AspectJ is a derivative of Java that allows programmers to write code that applies across multiple classes. The AspectJ compiler requires Java 1.3 but can generate code for Java 1.1 and later. According to the announcement, "The definition of the AspectJ language is unchanged in the 1.2 release. Instead, AspectJ 1.2 provides major improvements to the functionality of the supporting tools. Compilation times are greatly reduced, error messages have been improved, incremental compilation support is extended, and the ajdoc tool is back."

Sunday, June 13, 2004

Release early and release often. Even if Sun can't decide whether it's open sourcing Java or not, it's at least learning a few tricks from the open source community. They have begun posting nightly builds of Java 1.5, a.k.a Tiger (not to be confused with the next version of Mac OS X).

Speaking of release early and release often, expect a second alpha of XOM later this week. I've fixed a couple of bugs in various corners of the implementation, and will be posting alpha 2 just as soon as I get confirmation from the original reporters that my changes fix the bugs.


The Apache Jakarta Project has posted the first release candidate of Commons Collections 3.1, an open source library that extends and augments the Java Collections Framework. It includes:

Version 3.1 is mostly backwards compatible with 3.0. It adds a number of new classes including TreeList, MultiKeyMap, SingletonMap, ObjectGraphIterator, MapBackedSet, ReferenceIdentityMap, AbstractReferenceMap, EmptyIterator, TransformedPredicate, PredicateDecorator, and AbstractSerializableDecorator. A number of other classes are now Serializable, and various methods have been added to existing classes. And of course bugs have been fixed.

Saturday, June 12, 2004

Sun has posted an early access release of the SaverBeans Screensaver Software Development Kit. The SDK provides tools that enable programmers to write native screensavers for Windows, Solaris, and Linux platforms in Java and XML. The first 20 people to submit screensavers get free T-shirts. SaverBeans is published under the LGPL.

Friday, June 11, 2004

Version 1.0.5 of the open source Subversion source code control repository has been released. 1.0.5 fixes some security holes. All users should upgrade.

There's been a recent CVS security update as well, but their web site seems to be down at the moment. :-(


Excelsior has posted the second release candidate of JET 3.6 for Linux and Windows. Excelsior JET is a Java virtual machine that uses a combination of a traditional native code compiler and just-in-time compilation from byte code. JET costs start at $200 and run up to $2300 depending on which version and how much support you want. Support is available by e-mail and Web site only.


Brendan Macmillan has posted version 2.2.1 of Java Serialization for XML (JSX) 2, a library for converting Java objects into streams of XML and reading the objects back from the streams. To use it, replace ObjectOutputStream with JSX.ObjectWriter and ObjectInputStream with JSX.ObjectReader. JSX costs $200 per developer plus $500 if you want to distribute the application. 2.2.1 is a bug fix release.


The Object Refinery has posted version 0.9.20 of JFreeChart, an open source library based on Java2D. JFreeChart can produce pie charts, line charts, various kinds of bar charts, XY plots and scatter plots, time series, high/low/open/close charts, candle stick charts, and combination charts. This release adds polar plots, sorted/unsorted XYSeries, intervals for domain and range markers, and item labels for XYItemRenderers. This is a bug fix release. JFreeChart is published under the LGPL.


JAPISoft has released JSyntaxColor 1.2.7, a €159 Java library for coloring user text input in real time. JSyntaxColor provides samples for Java, SQL, and Formula syntax, and can be customized for other languages. This is a bug fix release.

Thursday, June 10, 2004

I'm pleased to announce the first alpha of XOM 1.0, my free-as-in-speech library for processing XML with Java. My definition of alpha is a lot stricter than most people's. While there are still some flaky parts in the internals to be worked out — the internal URI parsing is a complete hack, and I'd like to remove recursion from the last few methods where it occurs to avoid potential stack overflows in very deep documents — but the API is now considered to be complete and frozen. Code you write to XOM today should not require recompilation against future release, and if a really major flaw is discovered in the API design, I'll try to provide a deprecation cycle first before removing the flawed methods.

The API has changed not at all since 1.0d25. All code that ran with 1.0d25 should not require recompilation to work with 1.0a1. Internal changes include:

In addition several bugs have been fixed and some operations have been sped up. Bradley Huffman is pushing back on the design of the base URI handling, but this is just a really ugly, nasty part of the XML world; and XOM can't help but reflect some of that ugliness. The Infoset, URI, and XML Base specifications really don't say how to handle parts of documents that don't have base URIs. Trying to make this work in a sensible way is like trying to push a bubble out of wall-to-wall carpet. Anywhere I fix the problem, it pops up somewhere else. I tried to push the base URI bubble into the least apparent place I could find, and there I think it's going to stay.


Sun has released Rome 0.1 (alpha), an open source (Apache license) library for parsing, translating, and saving various syndication formats including RSS 0.90, 0.91, 0.92, 0.93, 0.94, 1.0, and 2.0 and Atom 0.3. "The parsers can give you back Java objects that are either specific for the format you want to work with, or a generic normalized SyndFeed object that lets you work on with the data without bothering about the underlying format. Rome is called like this because all feeds lead to Rome." It's not immediately clear if Rome will wo rwill not handle malformed feeds, but since Rome is based on JDOM and Xerces I suspect not.

Wednesday, June 9, 2004

JBoss Inc. has released JBoss 3.2.4, an open source Enterprise JavaBeans application server implemented in pure Java. This release fixes bugs and adds an option to run TomCat 5.1.6 instead of TomCat 4.x (which is still the default.) JBoss provides JBossServer, the basic EJB container and JMX infrastructure, JBossMQ for JMS messaging, JBossMail for mail, JBossTX for JTA/JTS transactions, JBossSX for JAAS based security, JBossCX for JCA connectivity, and JBossCMP for CMP persistence. It integrates with Tomcat Servlet/JSP container and Jetty Web server/servlet container, and enables you to mix and match these components through JMX by replacing any component you wish with a JMX-compliant implementation for the same APIs. Version 3.2.4 now works with the second beta of JDK 1.5, makes various performance improvements, and fixes some bugs. Java 1.3 or later is required.


The Apache Jakarta Commons Team has released Commons DBCP 1.2, a library that provides database connection pooling services. Changes since 1.1 mostly focus on performance and bug fixes.

In related news the Commons team has also released version of 1.2 of the more generic Jakarta Commons Pool component. "This maintenance release is needed for DBCP v1.2."

Tuesday, June 8, 2004

Sun has launched JDesktop Integration Components API (JDIC) on java.net. "The JDesktop Integration Components (JDIC) project aims to make Java™ technology-based applications ("Java applications") first-class citizens of current desktop platforms without sacrificing platform independence. JDIC provides Java applications with access to facilities provided by the native desktop such as the mailer, the browser, and registered document viewing applications. Additionally it provides the mechanisms by which Java applications can integrate into the native desktop such as registering Java applications as document viewers on the desktop and creating installer packages. JDIC consists of a collection of Java packages (JDIC API), all with the package name prefix org.jdesktop.jdic, and a JNLP application packaging tool (JDIC Packager)." Surprisingly, this is free software (LGPL) and is not going through the JCP, at least not yet.


EJBCA 3.0, 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.0 adds support for OCSP and allows several certificate authorities to run in one instance of EJBCA. It is not backwards compatible with EJBCA 2.1 without a database upgrade. EJBCA is published under the LGPL.


Diomidis Spinellis has released UMLGraph 2.4, 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 2.4 makes some small improvements, especially with regard to generation of hyperlinks.


Michael B. Allen's posted jCIFS 0.9.2, a free (LGPL) SMB client library written in pure Java. It supports Unicode, named pipes, batching, multiplexing I/O of threaded callers, encrypted authentication, full transactions, domain/workgroup/host/share/file enumeration, NetBIOS sockets and name services, the smb:// URL protocol handler, RAP calls, and more. The API is similar to java.io.File. Version 0.9.2 fixes a few bugs.

Monday, June 7, 2004

ObjectWeb has released JOnAS 4.1,a free (LGPL) implementation of J2EE 1.4. "It supports EJB 2.1, J2EE CA 1.5 with a JMS connector for JORAM, JACC 1.0, it embeds Tomcat 5 or Jetty 5, the J2EE management model is exposed through the MEJB. JOnAS 4.1 now integrates JOTM as transation manager and provides a new classloader hierarchy. A lightweight database is now embedded within JOnAS, making it a ready to use application server, at least for 'non db intensive' applications. This version also provides major bug fixes, see details in the history. It has to be noted that this version is still not J2EE Certified, the process of passing the Sun J2EE Certification is under way, see the disclaimer about this."


ThoughtWorks has released jMock 1.0.1, an open source (BSD license) library for testing Java code using mock objects.


Bernhard Fastenrath has posted GetOpt 0.9, an open source (BSD license) library that parses command line options such as -d, --help and -version. The command line options and responses can be stored in XML. Version 0.9 adds a --browse option that opens the topic in a Web browser.


Julien Ponge has released IzPack 3.5.4, an open source tool for building cross-platform installers in Java. 3.5.4 is a minor bug fix release. It's published under the GPL.


Websina has released BugZero 3.6.2, a $999 payware 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. 3.6..2 is a minor bug fix release.

Sunday, June 6, 2004

Siemens AG has released the final version of Java Specification Request (JSR) 205 Wireless Messaging API 2.0, to the Java Community Process (JCP). According to the spec,

The messaging API is based on the Generic Connection Framework (GCF), which is defined in the Connected Limited Device Configuration (CLDC) 1.0 specification. The package javax.microedition.io defines the framework and supports input/output and networking functionality in J2ME profiles. It provides a coherent way to access and organize data in a resource-constrained environment.

The design of the messaging functionality is similar to the datagram functionality that is used for UDP in the Generic Connection Framework. Like the datagram functionality, messaging provides the notion of opening a connection based on a string address and that the connection can be opened in either client or server mode. However, there are differences between messages and datagrams, so messaging interfaces do not inherit from datagram. It might also be confusing to use the same interfaces for messages and datagrams.

The interfaces for the messaging API have been defined in the javax.wireless.messaging package.

Saturday, June 5, 2004

Siemens AG has submitted Java Specification Request 246 (JSR-246), Enabling J2ME applications to access device management implementations. to the Java Community Process (JCP). According to the JSR,

This JSR will be an optional package for the J2ME configurations CLDC and CDC. It should provide a generic interface to the Device Management implementation in the device, to enable device management via natively implemented Device Management protocols.

The API will provide the possibility for Java applications to access parameters that can be managed remotely using the Device Management protocols. It enables the use of the underlying device management implementation. It also provides mechanisms to control additional functionality in the framework, such as triggering management sessions, notifications on changes etc.

The API's focus is on the widely available Device Management protocols SyncML/OMA DM and WAP OTAP. The API should also seamlessly integrate with management framework implementations in this area (e.g. OSGi/MEG).

The API should be a high level API, that provides a common set of management commands, that are available in all management protocols.

Comments are due by June 14.


Sun's Tim Lindholm has uploaded the second proposed final draft specification for JSR 133, Java Memory Model and Thread Specification Revision. According to the draft, this spec "is intended to replace Chapter 17 of the Java Language Specification and Chapter 8 of the Java Virtual Machine Specification." I'm not particularly well-versed in the intimate details of Java's threading and memory models, so it's not immediately obvious to me what's changed here. Read it for yourself if you're curious. William Pugh has posted a large collection of background information that went into this spec on his web site.


Slava Pestov has uploaded the 14th pre-release of jEdit 4.2, an open source programmer's editor written in Java with extensive plug-in support and my preferred text editor on Windows and Unix. This release fixes various bugs.

Friday, June 4, 2004

Ken Kast recently identified a bug in XOM related to setting system properties. It turned out I wasn't allowed to do this in an applet due to security restrictions. It was easy enough reproduce the problem and work around it once the bug was noticed. However, once that was done, I ran into a wall. How do I test the fix? In particular, how do I test it in JUnit?

The problem is that the bug only surfaces when an AppletSecurityManager is installed. The obvious solution is to call System.setSecurityManager(new sun.applet.AppletSecurity()) and then run the test. The problem is that as soon as the security manager is installed, JUnit breaks. It turns out JUnit does some very hackish things behind the scenes with reflection that the security maanger doesn't allow, particularly involving reflection; and I can't uninstall the security manager fast enough to allow these to work normally. Has anyone figured out how to use JUnit to test security managed code? Suggestions are appreciated.


Picture of a Cat, Tomcat logo

The Jakarta Apache Project has posted the first beta of Tomcat 5.0.26, an open source servlet container for the Apache web server and the official reference implementation of the Java Servlet API and Java Server Pages (JSP). Tomcat 5.0 implements version 2.4 of the Java Servlet API 2.4 and version 2.0 of Java Server Pages. 5.0.26 is a bug fix release.

Thursday, June 3, 2004

The Eclipse Project has posted the first release candidate of Eclipse 3.0, 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. RC1 is a pure bug fix release. There are no new features since M9. Linux, Windows XP, Solaris 8, AIX, HP/UX 11i, or Mac OS X 10.3 or later is required. Earlier versions of Mac OS X are not supported. Earlier versions of Windows may work but are not tested.


I'm told that IntelliJ's early access program has now posted build #2057, which is compatible with Apple's Java 1.4.2 Update 1 devloper preview 2.

Wednesday, June 2, 2004

Sun has posted the second beta of Java 1.5 (excuse me, Java™ 2 Standard Edition Software Development Kit 1.5) for Windows, Linux, and Solaris. Itanium chips are not yet supported.


Etienne Gagnon has released version 1.1.5 of SableVM, a Java bytecode interpreter (that is, a virtual machine) written in portable C. "SableVM requires an ANSI/ISO C compiler (but preferably GCC) and a POSIX platform. It requires a strong memory model (sequential consistency) on multiprocessor systems." SableVM is available for GNU/Linux. Solaris, Mac OS X, and FreeBSD. Version 1.1.5 improves support for Ant 1.6 and fixes a number of bugs. SableVM is published under the GNU Lesser General Public License (LGPL).

Tuesday, June 1, 2004
Picture of a Cat, Tomcat logo

The Jakarta Apache Project has released Tomcat 5.0.25, an open source servlet container for the Apache web server and the official reference implementation of the Java Servlet API and Java Server Pages (JSP). Tomcat 5.0 implements version 2.4 of the Java Servlet API 2.4 and version 2.0 of Java Server Pages. 5.0.25 is a bug fix release.


IBM's alphaWorks has released Method Scheduler for Java, a "component that allows developers to execute methods on Java objects asynchronously and/or repeatedly."


Older news:

2004200320022001200019991998
January January, 2004 January, 2003 January, 2002 January, 2001 January, 2000 January, 1999 January, 1998
February February, 2004 February, 2003 February, 2002 February, 2001 February, 2000 February, 1999 February, 1998
March March, 2004 March, 2003 March, 2002 March, 2001 March, 2000 March, 1999 March, 1998
April April, 2004 April, 2003 April, 2002 April, 2001 April, 2000 April, 1999 April, 1998
May May, 2004 May, 2003 May, 2002 May, 2001 May, 2000 May, 1999 May, 1998
June June, 2004 June, 2003 June, 2002 June, 2001 June, 2000 June, 1999 June, 1998
July July, 2004 July, 2003 July, 2002 July, 2001 July, 2000 July, 1999 July, 1998
August August, 2004 August, 2003 August, 2002 August, 2001 August, 2000 August, 1999 August, 1998
September September, 2004 September, 2003 September, 2002 September, 2001 September, 2000 September, 1999 September, 1998
October October, 2004 October, 2003 October, 2002 October, 2001 October, 2000 October, 1999 October, 1998
November November, 2004 November, 2003 November, 2002 November, 2001 November, 2000 November, 1999 November, 1998
December 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 2004 Elliotte Rusty Harold
elharo@metalab.unc.edu