July, 2004 Java News

Saturday, July 31, 2004

I'll be away in Montreal next week for the Extreme Markup Languages conference. Depending on what Internet access is available at the Hotel, updates may be a little slow until I return.

Meanwhile, a quick note about all the recent hoo-haa flying around in some gullible quarters about how open source developers hate Java and love Perl. This is, to put it in words only a Perl programmer can understand, $(~!*.)#^!. This ruckus is based on some recent experiences at the O'Reilly open source conference, which despite its name, is really only a conference for programmers in Perl, Python, and other weakly typed languages. For several years it was called the O'Reilly Perl conference. Java developers simply don't attend this conference because it's mostly irrelevant to them. They go to JavaOne, OOPSLA, Software Development or the No Fluff, Just Stuff conferences instead. I'm sure the Open Source conference is a nice enough conference for Perl folks, but asking the audience there what they think of Java is like asking the patrons of Boston's Bull & Finch pub what they think of the New York Yankees. The open source community is just fine with Java. Some Perl and C and Unix bigots aren't, for sure, but that has everything to do with the language and little or nothing to do with the licensing. The open source community as a whole (and as contrasted to the subset attending the O'Reilly conference) is a lot more conflicted about Mono and C# than they've ever been about Java.

Nokia has posted the public review draft of Java Specification Request 234, Advanced Multimedia Supplements. "This specification will define an optional package for advanced multimedia functionality which is targeted to run as a supplement in connection with MMAPI (JSR-135) in J2ME/CLDC environment." It includes APIs for 3D audio, reverb, equalizer, musical effects, cameras and video cameras, radio tuners, and image post-processing. Comments are due by August 30.

Friday, July 30, 2004

Sun's posted the second change log for Java Specification Request (JSR) 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 August 23.

Joshua Bloch and Gilad Bracha have posted the proposed final draft specification for JSR-201, Extending the Java Programming Language with Enumerations, Autoboxing, Enhanced for loops and Static Import. This describes most of the changes to the core language in Java 1.5 (with the notable exception of generics). I've done a little work with autoboxing and the enhanced for loops lately. I've decided I like enhanced for loops, but I'm still undecided about autoboxing. Also, kudos to the working group for the doing the spec in HTML instead of PDF. :-) If only they'd just post the damn files on a regular web site, instead of making you download a ZIP archive. :-(

Sun has posted the proposed final draft specification for JSR-226, Scalable 2D Vector Graphics API . "This API is targeted for low-end mobile devices with constraints in memory, screen size, and computational power. The goal of this specification is to define an optional API package for rendering Scalable 2D vector images, including external images in SVG format. The main target use cases of this API are map visualization, scalable icons and other applications which require scalable, animated graphics."

BEA Systems has published an early draft review of Java Specification Request 181, Web Services Metadata for the Java Platform. Quoting from the introduction to the draft,

This specification defines a simplified model for Web Services programming that is easy to learn and rapid to develop. The J2EE standard deployment technologies, APIs, and protocols require the J2EE developer to master a substantial amount of information. This JSR reduces the amount of information required to implement Web Services on J2EE by using metadata to declaratively specify the Web Services that each application provides. The metadata annotates the Java source file that implements the Web Service. While the metadata is human readable and editable using a simple text editor, graphical development tools can represent and edit the Java source file using higher levels of abstraction specific to Web Services. This is a simpler and more powerful development environment than traditional coding tools that are used to develop source code using low level APIs.

This specification relies on the JSR 175 specification, “A Program Annotation Facility for the Java™ Programming Language”, for the Web Services metadata that annotates a Java WS file. This document is using JSR 175 features as described in the Public Draft Specification of JSR 175.

JSR 181 defines the syntax and semantics of Web Services metadata and default values to be used, but does not define a runtime or container environment. Instead, implementers are expected to provide tools that map the annotated Java classes onto a specific runtime environment. However while this specification does not constrain the Java environment on which Web Services are run, it assumes a J2SE1.5 compiler as well as the functionality of the J2EE 1.4 containers. In particular, JSR 181 expects features such as JAX-RPC 1.1 and JSR-109, along with the compiler and language extensions from JSR 175 to be present.

A JSR 181 implementation must produce a deployable Java Web Service application that can run on the target Java environment. The deployed application must exhibit the proper behavior described by the Web Services metadata and Java source code. Any two JSR 181 processors starting from the same valid annotated Java Web Services file will produce equivalent Web Service applications, even though they may deploy on very different Java environments. This ensures portability of JSR 181 compliant Java files.

Day Software has posted the public review draft specification for JSR-170, Content Repository for Java™ Technology API. According to the draft:

As the number of vendors offering proprietary content repositories has increased, the need for a common programmatic interface to these repositories has become apparent. The aim of the Java Content Repository (JCR) API specification is to provide such an interface and, in doing so, lay the foundations for a true industry- wide content infrastructure.

Application developers and custom solution integrators will be able to avoid the costs associated with learning the particular API of each repository vendor. Instead, programmers will be able to develop content-based application logic independently of the underlying repository architecture or physical storage.

Customers will also benefit by being able to exchange their underlying repositories without touching any of the applications built on top of them.

Werner Randelshofer has posted a beta of the Quaqua Look and Feel 2.0, an extension for Apple's implementation of the Aqua Look for Swing. According to Randelshofer, "Quaqua aims at fixing inconsistencies between user interface elements implemented in Swing and those of native Mac OS X applications. To achieve this, Quaqua selectively replaces UI elements of Apples Aqua Look And Feel with elements of its own." Quaqua is dual licensed using the BSD license and the LGPL.

Thursday, July 29, 2004

Julien Ponge has released IzPack 3.6, an open source tool for building cross-platform installers in Java. 3.6 adds a number of new features including Danish localization, Web installers that can prompt for passwords and proxy settings, and UserInputPanel validators for hosts and ports. It's published under the GPL.

Wednesday, July 28, 2004

JetBrains has released IntelliJ IDEA 4.5, a popular $499 payware integrated development environment for Java that runs on Windows, Mac OS X, Linux, and Unix. Version 4.5 adds support for Java 1.5, more static code checking, several new refactorings including inline constant, extract subclass, and convert to instance method, and Java code-aware structured search and replace. Upgrades are free for all 4.x licensees and anyone who bought 3.x after October 15, 2003. Users of earlier versions can upgrade for $299.

Derrick Oswald has released the HTML parser 1.4.2, a free (LGPL) class library for parsing "real-world HTML." This is a bug fix release.

Tuesday, July 27, 2004
Picture of a Cat, Tomcat logo

The Jakarta Apache Project has released mod_jk 1.2.6. mod_jk connects the Apache web server (or IIS) to the Tomcat servlet engine so Tomcat can handle servlets and JSP Pages, while Apache handles static pages and CGIs. This release improves robustness and allows certain URLs to be excluded from handling by mod_jk.

YourKit, LLC has posted an early access release of the YourKit Java Profiler 3.0, 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 3.0 features a redesigned user interface including a new "Allocations HotSpots" view. It also allows you to see the merged call tree and back-traces for a method. The tool runs on Windows or Linux.

J-domain has released CodePrinter 1.0.1, "a tiny utility to print out source code or other text files. Its main intent is to provide you with print-outs for your code reviews and to save some paper by fitting two code pages onto one sheet of paper. CodePrinter is written in Java and makes use of the Java Printing API." Version 1.0.1 adds page numbers and fixes a bug in line numering of wrapped lines. Code Printer is published under the GPL. An Eclipse plug-in is available.

Monday, July 26, 2004

JBoss Inc. has posted the first release candidate of JBoss 4.0, an open source Enterprise JavaBeans application server implemented in pure Java. 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. According to the SourceForge Page (main web site not yet updated)

The 4.0.0RC1 is the first relase based on the codebase that has successfully passed the J2EE 1.4 TCK. This initial release candidate is being made availble as a preview of the J2EE 1.4 functionality. The primary additions over the 3.2.x release are:

  • JMS
  • JCA
  • JACC
  • EJB 2.1
  • Webservices

The will be 2-3 RC released before the final 4.0.0 J2EE 1.4 certified release due out in September.

Java 1.4 or later is required.

Martin Jericho has released the Jericho HTML Parser 1.3, an open source (LGPL) Java library for parsing, analysing and modifying HTML that ignores any server-side code/markup or invalid HTML. It includes an HTML form analyser. Version 1.3 fixes bugs and can now ignore specified sections of the document.

Sunday, July 25, 2004

Ken Arnold has posted the first beta of Napkin Look & Feel, an open source (BSD license) Swing L&F that looks like it's drawn on a napkin.

Andrei Kouznetsov has released UnifiedIO 2.0, 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 refactoring release that is not backwards compatible with earlier releases.

Saturday, July 24, 2004

Andrei Kouznetsov has released UnifiedIO 1.3.2, 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.

Tanuki Software has released Java Service Wrapper 3.1.1, an open source tool that enables Java applications to be installed and controlled like native NT or Unix services. It can even automatically restart crashed or frozen JVMs. Version 3.1..1 is a major bug fix release.

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

J-domain has released CodePrinter 1.0, "a tiny utility to print out source code or other text files. Its main intent is to provide you with print-outs for your code reviews and to save some paper by fitting two code pages onto one sheet of paper. CodePrinter is written in Java and makes use of the Java Printing API." Code Printer is published under the GPL. An Eclipse plug-in is available.

ej-technologies has released Install4j 3.0, a $698 payware cross platform tool for building native installers and application launchers for Java applications. New features in 3.0 include user variables, installation components, configurable file associations, custom tasks, a reboot option on Windows, sub-folders in the Windows program group menu, improved custom script entry, a wizard for creating JRE bundles, an HTML Project report, configurable access rights for directories on Unix, and unattended installations.

Enterprise Distributed Technologies has released edtFTPj 1.4.2, a free (LGPL) FTP library for Java. A $1500 payware version adds support for FTP over SSL.

Michael B. Allen has posted jCIFS 0.9.6, 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.6 fixes a few bugs.

Websina has released BugZero 3.7, 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.7 makes various small improvements here and there.

IBM's alphaWorks has released version 1.2.2 of the IBM Toolkit for MPEG-4, a Java class library for working with MPEG-4 video and audio. Version 1.2.2 adds support for the MPEG-4 XMT-O system and custom test content control in XmtBatch converter; improves hinting for RTSP streaming, can import and playback media tracks from more file types including 3gp, and makes various minor bug fixes and speed-ups.

Friday, July 23, 2004

I've posted the fourth alpha release of XOM 1.0, my free-as-in-speech library for processing XML with Java. While there are still some flaky parts in the internals to be worked out in the next release — there's a nasty bug involving FIXED default attribute values in the internal DTD subset, and the XSLT processing is not completely compatible with the latest versions of Xalan — the API is now considered to be complete and frozen. Code you write to XOM today should not require recompilation against any future 1.x 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 not changed in a backwards incompatible way since 1.0d25. All code that ran with 1.0d25 should not require recompilation to work with 1.0a1. Internal and backwards compatible changes since alpha 1 include:

I plan one more alpha release to fix the bugs with XSLT processing and FIXED ATTLIST declarations, and then it's on to beta. The beta releases will be pretty much feature complete and bug free, and focus mostly on finishing the documentation.

Thursday, July 22, 2004

You're never as smart as you think you are. For a long time I was in the habit of writing code like this:

try {
  write some data onto a ByteArrayOutputStream...
catch (IOException ex) {
  // ByteArrayOutputStreams don't throw exceptions

However a lot of the static code analysis tools I use complained abut the empty catch blocks, so I rewrote these blocks like this, just to make the analyzers shut up:

try {
  write some data onto a ByteArrayOutputStream...
catch (IOException ex) {
  throw new RuntimeException("Something is seriously broken", ex);

Wouldn't you know it? Yesterday my project started throwing runtime exceptions out of four of these blocks in places where I knew nothing could possibly go wrong. I'm still investigating, but it looks like this may reflect bugs in character conversion in some but not all virtual machines and some but not all character encodings, particularly in Java 1.2.2 and 1.3.1.

The Apache Jakarta Project has released Commons Codec 1.3, an open source Java class library providing common encoders and decoders including Base-64, hexBinary, Soundex, and Metaphone. New encoders in this release include binary strings and quoited printable.

Wednesday, July 21, 2004

Version 1.0.6 of the open source Subversion source code control repository has been released. 1.0.6 fixes a small security hole that could give users access to code they aren't normally allowed to see. All users should upgrade.

The Jakarta Apache Project has released Standard Taglib 1.1.1 and Standard Taglib 1.0.6 which implement the JSP Standard Tag Library (JSTL) 1.0 and 1.1 specifications respectively. These releases fix bugs.

Tuesday, July 20, 2004

Peter Eastman has released Buoy 1.1, a public domain user interface framework for Java that sits a new API on top of Swing. Java 1.4 or later is required.

Sun has posted the third proposed final draft of Java Specification Request (JSR) 200, Network Transfer Format for Java Archives. This describes the new Pack200 format for JAR archives. Sun claims compression factors of seven to nine when combined with a post-pack phase using a standard algorithm such as zip.

Sun has posted a maintenance release of JSR 114, JDBC Rowset Implementations (javax.sql.rowset). The changes look fairly minor, and mostly seem to affect exceptions and corner cases.

IBM's alphaWorks has posted the Embedded Voice Toolkit, a set of Eclipse plug-ins that provides a GUI interface for building embedded speech applications.

Monday, July 19, 2004

Sun's released a minor maintenance update to the Java 2 Software Development Kit 1.4.2, version 1.4.2_05. This version fixes several dozen assorted bugs. It's available for Winodws, Linux, and Solaris.

Sunday, July 18, 2004

Tom Copeland has released PMD 1.9, an open source tool for automatically checking Java code for various classes of bugs. PMD scans Java source code and looks for potential problems including:

As is my custom, I tested this by running it across XOM's code base. I wasn't expecting much because I do this with almost every release of every static code testing tool, and indeed it didn't find very much, just a few unused local variables, one catch block that should probably catch specific errrorrs and exceptions rather than a generic Throwable, and some statements that were at least arguably correct. Nonetheless, if you haven't tried PMD on your code, you should. The documentation is poor and the user interface is cryptic, but it's worth deciphering.

The first beta of BlueJ 2.0, a free integrated development environment (IDE) for Java aimed at education, has been released. The major new feature in 2.0 is support for Java 1.5 (a.k.a Java 5).

Slava Pestov has uploaded the 15th 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 "formally allows development of non-GPL jEdit plugins", fixes bugs, and updates a few syntax highlighting modes.

Martin Auer has released UMLet 3.2, "an open-source lightweight Java tool for rapidly drawing UML diagrams, with a focus on a sound and pop-up-free user interface." It can export diagrams to SVG, JPEG, EPS, and PDF formats and can be used as an Eclipse plugin. UMLet 3 is published under the GPL. Java 1.5 is required.

Saturday, July 17, 2004

The Apache Project has released version 1.6.2 of Ant, the popular XML based open source build tool for Java. Version 1.6.2 allows nested elements for namespaced tasks and types to belong to the Ant default namespace as well as the task's or type's namespace. It also wraps all exceptions thrown by tasks in a BuildException that provides the fuile name and line number of the task. Finally it fixes a lot of bugs.

IBM's alphaWorks has released the Reflexive User Interface Builder, an application that constructs and renders graphical user interfaces (GUIs) for Java Swing and Eclipse Standard Widget Toolkit (SWT) described in an XML document. According to the web site,

IBM Reflexive User Interface Builder is both a specification for a mark-up language in which to describe GUIs and an engine for creating (and, if desired, rendering) them. This application can be used as a stand-alone application for testing and evaluating basic GUI layout and functionality, or it can be used as a library within the context of a Java application for creating and rendering GUIs for that application.

The application supplies an optional means of validating properties of and relations between components. One can describe a set of constraints on components and then insure that the said components are in accord with these constraints. For instance, this application is packaged with a basic accessibility validation document that diagnoses select accessibility omisions in GUIs. Such mechanisms can enhance the rapid development, testing, and evaluation of GUI-based applications.

How does it work?

Although other XML script-driven, Java-based GUI engines have been developed, the power of this approach stems from its reliance upon the Java Reflection API, which allows classes to be introspected in order to reveal their fields, constructors, and methods. Proceeding in this way, IBM Reflexive User Interface Builder can create and render GUIs based solely upon the information in an XML document. This document need not conform to any pre-defined DTD or XML schema.

Excelsior has released JET 3.6, a Java virtual machine for Linux and Windows 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.

Friday, July 16, 2004

James Strachan has released beta 6 of Groovy, a JVM hosted scripting language that strikes me as a little baroque and a tad Perl-like. Not that the syntax lookes like Perl. It just that Groovy looks like feature after feature has been glued on to a foundation of sand. I don't feel an overall sense of design here. There's no overarching vision for what a language should look like that I can discern. There are lots of features to like in the language (and quite a few to dislike: I'm sorry, but operator overloading is simply a bad idea, as C++ proved once and for all; and we've known for at least 30 years that having both = and == in a language is a mistake; adding === to the mix doesn't help.); but even the features that do seem like a good idea when considered individually don't feel like they fit together. It just isn't as clean a language as Java or Python. :-(

I'm not at all surprised to something like this coming from Strachan, who's always been an advocate of the more-is-more school of design. Witness the overwhelming complexity of his dom4j compared to the relative simplicity and unified vision of the JDOM API from which he forked it. Myself, I'm a developer who believes less is more and follows the principles of "When in doubt, leave it out" and "There should be exactly one way to do it", so it's probably not a surprise that I don't like SGML, dom4j, or Groovy and that I do like XML, JDOM, and Java. But if you're the sort of developer who thinks Larry Wall is a more talented designer than James Gosling, maybe you'll like Groovy too. De gustibus non disputandum est.

Picture of a Cat, Tomcat logo

The Jakarta Apache Project has released Tomcat 5.0.27, 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.27 is a bug fix release.

Michael Fuchs has posted version 0.58 of his DocBook Doclet that creates DocBook SGML and XML documents from JavaDoc. This release adds support for index tag entries and fixes some bugs.

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

Thursday, July 15, 2004

Cenqua (nee Cortex) has released Clover 1.3.1_02, a $250 payware unit test coverage tool. 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. Unlike Jester, Clover only tests whether the tests execute each statement and follow each branch. (It occasionally misses branches on the edges of >= or <=.) It does not test whether the tests correctly detect bugs deliberately introduced into the code. On the other hand, it runs orders of magnitude faster than a tool like Jester does. It's easy easy to use Clover several times a day. Indeed you can use it after each change to the test suite. By contrast, a Jester run can take several days to complete. Ideally you'd want to use both a tool like Jester and a tool like Clover since they do different things.

New features in 1.3 include regular expression filtering that allows you to exclude certain methods and statements from coverage statistics, Ant tasks to clean and merge coverage databases, faster instrumentation, and Java 1.5 support. Rgeular expression filtering looks particularly useful. It's nice to have lots of pure green bars that indicate 100% code coverage. However, several of my classes have statements like this one:

try {
  // something I know will work, but the compiler doesn't; 
  // like writing data into a ByteArrayOutputStream
catch (Exception ex) { // that I am sure can't be thrown
  // just in case I'm wrong
  throw new RuntimeException("Something very weird is happening", ex)

I can't actually write unit tests that cover the catch block because if I'm right that block is unreachable. Now I can exclude blocks like those from the test coverage. At least in theory. I haven't actually figured out how to make this work yet. The documentation is one of Clover's few weak spots. It's not always easy to figure out where to look to understand a particular feature. :-(

Clover has been a major help in developing XOM. It has located numerous bugs in XOM over the last year, and is largely responsible for the completeness of XOM's test suite. It's also helped to optimize XOM for both speed and size by finding dead, unreachable code I could cut out. This is one of the few tools I can recommend unconditionally, and would certainly pay for if Cenqua hadn't given me a free copy. (That's not personal, by the way. They'll happily provide free copies to all open source projects.) Clover integrates with Ant, NetBeans, Eclipse, and IntelliJ IDEA. It can generate test coverage reports in XML, HTML, PDF, or via a Swing Viewer. Java 1.2 or later is required.

Wednesday, July 14, 2004

The Apache Software Foundation has released Maven 1.0, an open source "Java project management and project comprehension tool. Maven is based on the concept of a project object model (POM) in that all the artifacts produced by Maven are a result of consulting a well defined model for your project. Builds, documentation, source metrics, and source cross-references are all controlled by your POM.... Maven has many goals, but in a nutshell Maven aims to make the developer's life easier by providing a well defined project structure, well defined development processes to follow, and a coherent body of documentation that keeps your developers and clients apprised of what's happening with your project.

The Big Faceless Organization has released the Big Faceless PDF Library 2.2.3, 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.3 reduces memory usage and fixes bugs. Java 1.2 or later is required.

Michael Koch has posted the GCJ web browser plugin 0.3.0. This free-as-in-speech (GPL) plug-in runs Java applets in Mozilla 1.7 and compatible browsers using the GCJ virtual machine. Accoprdsing to Koch, "This version is a great improvement over previous versions as the build and runtime dependencies are much smaller. Mozilla is not needed any more to build and run it and you can now use any java (tm) compiler to build the java source files. You are not limited to GCJ CVS anymore."

jZonic has released jLo 1.0, an open source logging framework for Java that supports multiple log-configurations. It allows users to switch targets on or off independently of each other, rather than by threshold. jLo is published under the LGPL.

IBM's alphaWorks has updated their Abstract User Interface Markup Language (AUIML) Toolkit with "Notable improvements to Web rendering, including layout and performance enhancements; also significant updates to documentation and samples." This tool allegedly enables "developers to write an application once and run it in Java Swing or on the Web without any changes. The AUIML Toolkit includes the AUIML VisualBuilder, which is an Eclipse-based visual panel editor built on top of the Eclipse Visual Editor Project. The AUIML VisualBuilder allows developers to easily build user interfaces and generate Java data and event-handling code for them. Additional Java code can be written to AUIML's API to control application flow, data validation, and to listen for events. Once the application is implemented, it can be deployed as a Java Swing application or as an HTML servlet without changing the application's code."

Tuesday, July 13, 2004

The Gnu Project has released version 0.10 of GNU Classpath, an incomplete free implementation of the core Java class libraries. This release fills in numerous holes in support across the core libraries. GNU Classpath is published under the LGPL.

Gaudenz Alder has released JGraph 5.0, a free-as-in-speech 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. Version 5.0 fixes bugs and changes the license from LGPL to GPL.

Alder has also released JGraphAppkit 1.0 a free (GPL) "action framework for JFC/Swing. With the appkit, you can create menus and toolbars that are defined in XML files. A registry is used to map from the XML files to Java classes, and a factory creates the respective UI components. In contrast to other action frameworks and XML-based description languages for Swing, the JGraphAppkit is a specialized solution for creating menus and toolbars, and uses the XML parser that ships with Java, resulting in a very small binary. Appkit is not an abbreviation for 'application kit': it can also be used in applets. Despite its name, JGraphAppkit does not depend on the JGraph Swing component. It is a standalone package."

Monday, July 12, 2004

Etienne Gagnon has released version 1.1.6 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.6 AWT and Swing support and fixes a number of bugs. SableVM is published under the GNU Lesser General Public License (LGPL).

IBM's alphaWorks has updated the JAR Class Finder, an Eclipse plug-in for finding JAR files containing a given class for the Java build path of a project, thus helping fix NoClassDefFound errors. "Version 2.0.1 supports Eclipse 2.1 and 3.0. New features include searching in .zip archives. Properties files, as well as .class files, can now be searched for, and the package name can be appended to the search."

Thursday, July 8, 2004

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

TRIEMAX Software has released Jalopy 1.2.1, a $40 payware source code formatter for Java It includes Plug-ins for Ant, Eclipse/WSAD, IDEA, JBuilder, JDeveloper, jEdit and NetBeans/Sun ONE Studio, but can also be used as a stand-alone tool. Version 1.2.1 adds a number of minor configuration options. Java 1.3 or later is required.

Wednesday, July 7, 2004

TimeSys has posted the maintenance review change log for Java Specification Request 1, Real-time Specification for Java. According to the note,

This change has two parts. The first part, which is the first item in the change log, is a rewrite of the specification for clarity. That clarification has resulted in a nearly complete re-write of the specification, but this change is not intended to express different semantics. It is intended to express the original semantics:

  • More carefully and completely
  • More conveniently (also more redundantly. Some statements that were made once in the first edition of the RTSJ are now replaced with the method-by-method consequences of those statements.)
  • Without constraining the implementation except where that is necessary to achieve compatibility between implementations.

The deeper motivation for this re-write is that the 1.0 version of the RTSJ spec is sufficiently ambiguous that it leaves the RTSJ dangerously open to fragmentation.

The second part of the change is a list of minor API changes. Some of these changes would appear to break source compatibility with legacy applications, but these changes are harmless because they modify aspects of the RTSJ that were initially unusable. We (the authors of the revised spec) believe that the new APIs leave as much of the RTSJ working correctly (and as originally intended) as can be accomplished without making major changes. The deprecated classes are beyond repair.

Comments are due by August 9.

Frank Karlstrøm has posted the first beta (after several alphas) of JCache 1.0, an open source caching system for Java database-based applications based on the JSR-107 JCache API. JCache is published under the LGPL.

Tuesday, July 6, 2004

The Gnu Project has released version 3.4.1 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 is a clean room implementation of Java 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. 3.4.1 is a bug fix release.

Sun has posted the first public review draft (version 0.9) of Java Specification Request (JSR) 211, Content Handler API, to the Java Community Process (JCP). This has nothing to do with the moribund java.net.ContentHandler class. Instead,

This specification describes the Content Handler API (CHAPI) and its associated execution model. CHAPI is an optional package for the J2ME™ platform. This API and model let an application invoke registered J2ME and non-Java applications for content by URL, by content type, or by content handler application id. Content is identified by a Uniform Resource Locator (URL) and dispatched using the content type or content handler id. Arguments may be passed to a content handler and the content handler can return results and a status. A content handler is any application that registers itself to handle some content. Integration into the application management system gives the user a seamless and natural transition between applications and content handlers.

The Content Handler API and model are designed to work with the Mobile Information Device Profile (MIDP) and the Personal Basis Profile (PBP).

Comments are due by July 15.

Steve Roy has released MRJ Adapter 1.0.7, an open source library that implements a unified API for developers to access Mac specific functionality built into the various versions of the Macintosh Runtime for Java (MRJ). MRJ Adapter enables developers to add Mac specific functionality to their applications without compromising the cross-platform nature of their application. MRJ Adapter also "incorporates many little tricks known only to seasoned Mac Java programmers, such as how to bring up a file dialog to pick a folder, or how to set up a menu bar when no frame is opened, which is a normal state for a Mac application that isn't natively supported by Java." Version 1.0.7 is mostly a bug fix release but does add the ability to read resource forks. MRJ Adapter is published under the LGPL.

Monday, July 5, 2004

Sun has posted the initial draft of Java Specification Request 220, Enterprise JavaBeans 3.0. According to the overview, "EJB 3.0 enables the enterprise application developer to program with an API designed for ease of development that is a simplification of the APIs defined by earlier versions of the EJB specification. The existing EJB 2.1 APIs remain available for use in applications that require them. The API introduced by EJB 3.0 does not replace or deprecate those earlier APIs." Quoting from section 1.2:

The purpose of EJB 3.0 is to improve the EJB architecture by reducing its complexity from the enterprise application developer’s point of view.

EJB 3.0 is focused on the following goals:

  • Definition of the Java language metadata annotations that can be used to annotate EJB applications. These metadata annotations are targeted at simplifying the developer’s task, at reducing the number of program artifacts the developer is required to provide, and at eliminating the Introduction Enterprise JavaBeans 3.0, Early Draft EJB 3.0 Expert Group Sun Microsystems Inc. need for the developer to provide an EJB deployment descriptor. Use of metadata annotations can also be used to enable the generation of interfaces for an enterprise bean from the bean class itself.
  • Specification of programmatic defaults, including for metadata, to reduce the need for the developer to specify common, expected behaviors, and requirements on the EJB container. A “configuration by exception” approach is taken whenever possible.
  • Encapsulation of environmental dependencies and JNDI access through the use of annotations, dependency injection mechanisms, and simple lookup mechanisms.
  • Simplification of the enterprise bean types. Enterprise beans are simplified to more closely resemble plain Java objects (“POJOs”) or JavaBeans.
  • Elimination of the requirement for EJB component interfaces for session beans and entity beans. The required business interface for a session bean is an ordinary Java interface (“POJI” or plain old Java interface), not an EJBObject, EJBLocalObject, or java.rmi.Remote interface. No interfaces are required for entity beans.
  • Elimination of the requirement for Home interfaces.
  • Simplification of container-managed persistence.
  • Support for light-weight domain modeling, including inheritance and polymorphism.
  • Specification of Java language metadata annotations for the object/relational mapping of entity beans with container-managed persistence.
  • Enhancements to EJB QL to provide greater usability. Addition of projection, explicit inner and outer join operations, bulk update and delete, subqueries, and group-by. Addition of a dynamic query capability and support for native SQL queries.
  • Reduction of the requirements for usage of checked exceptions.
  • Elimination of the requirement for the implementation of callback interfaces.
  • Improved ability for testing outside the container.

Comments are due by July 30.

Sunday, July 4, 2004

The Apache Project has posted the first beta of Ant 1.6.2, the popular open source build tool. Version 1.6.2 allows nested elements for namespaced tasks and types to belong to the Ant default namespace as well as the task's or type's namespace. It also wraps all exceptions thrown by tasks in a BuildException that provides the fuile name and line number of the task. Finally it fixes a lot of bugs.

The Apache DB Project has released OJB (Object/Relational Bridge) 1.0, an open source "Object/Relational mapping tool that provides transparent transactional persistence for Java Objects against relational databases. OJB provides ODMG and JDO interfaces."

The Apache Commons Group has posted Betwixt 0.5, a Java class library that "provides an XML introspection mechanism for mapping beans to XML in a flexible way. It is implemented using an XMLIntrospector and XMLBeanInfo classes which are similar to the standard Introspector and BeanInfo from the Java Beans specification."

David Hovemeyer has posted FindBugs 0.8.2, an automated open source tool for finding potential bugs in Java code. This release fixes one nasty casting bug.

Saturday, July 3, 2004

Tonic Systems has released version 1.2 of their Java PowerPoint Library, "a 100% Java API to read, create and manipulate PowerPoint® presentations. Use the library to generate new slides, populate presentation templates or extract data from existing presentations." Version 1.2 adds support for notes and text styles, a new text extraction package, and the ability to create blank presentations, slides, and shapes. The library costs $5000 per server, with volume discounts. The text extraction package is available separately for $995.

Friday, July 2, 2004

Novell has released Mono 1.0, 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.

Thursday, July 1, 2004

Once again, I'll be chairing the XML track for Software Development 2005 West in Santa Clara next March. The Call for Proposals for is now live. Besides XML, tracks include Web Services, Java, Emerging Technologies, C++, Requirements & Analysis, .NET, and Mobile Development. Plus we have two new tracks this year: System Security and Scripting. Most sessions are 90 minute classes, but we also have room for half and full-day tutorials (I prefer half-day tutorials in the XML track), Birds-of-a-feather sessions, and panels. Submissions are due by August 6th.

For the XML track, we're interested in practical sessions covering all aspects of XML. This is not specifically an XML show, so we tend to find that our audience responds better to more practical, how-to, basic sessions as opposed to more theoretical, high-level sessions. For instance, a simple introduction to XQuery would go over better than a detailed comparison of XQuery optimization techniques. One thing previous attendees have told us is that they'd like to see more new sessions at each show, so we're going to be looking preferentially for talks that have not previously been given at SD West.

Older news:

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