Jayasoft has released Ivy 0.8, a free Java based dependency manager, that features
transitive dependencies, Ant integration, Maven compatibility,
and continuous integration. Personally I'm trying to eliminate dependencies from my code. I just spent quite a bit of effort to remove XOM's dependency on IBM's ICU, and to bundle Jaxen directly into the main JAR file rather than distributing it separately.
In fact, in Java 1.4 and later only the main XOM JAR archive should be required for almost all uses.
(
XOMTestCase
still requires junit.jar. However, if you're using that class you probably already have
JUnit in your classpath.)
The fewer dependencies a code base has, the easier it is to install and deploy.
Nathan Fiedler has released version 2.34 of JSwat, a graphical, stand-alone Java debugger built on top of the Java Platform Debugger Architecture. Features include breakpoints, source code viewing, single-stepping, watching variables, viewing stack frames, and printing variables. Version 2.34 improves French localization, better supports JSP and Nice, and fixes bugs. JSwat is published under the GPL.
Cenqua has released FishEye 1.0, a $999 payware tool for viewing CVS activity. I've been using FishEye lately as part of my work with the Jaxen Project. As well as drawing graphs of activity, it lets you see who's committing what when to CVS, what individual committers have been up to, what's going on in different branches, what's happened to particular files, and so forth. It automatically wraps up tarballs and zip files of the current code base. FishEye's not essential, and I doubt I'd pay for it if Cenqua hadn't given Codehaus a free copy. XOM doesn't use it, and I haven't missed it there. However, it is a nice tool that's a definite improvement over standard CVS and ViewCVS.
I will note one problem with FishEye: its search interface is decidely non-RESTful and violates the web architecture in a major way. FishEye has a very sophisticated, very powerful SQL-like language for searching the repository. (Actually, that's another problem. The query language is more sophisticated than anyone is likely to actually use. Google and other web search engines have proven that people want smarter engines, not smarter languages.) Complex queries written in this powerful language are submitted via POST rather than GET. The result is that queries can't be bookmarked, e-mailed to people, linked to, or otherwise saved. At Software Development Expo a couple of weeks ago, one of the Cenqua folks told me all about some complicated new system they're inventing for a future release that will allow users to save their searches. Guys: you're doing way too much work here. Just switch from POST to GET, and the query saving comes for free. That's what bookmarks are for. Why reinvent the wheel? Let the browser do the work for you.
Sebastiano Vigna has released version 4.4.1 of fastUtil,
a collection of type-specific Java maps and sets with a small memory footprint
and faster access and insertion. The classes implement their standard counterpart interfaces such as java.util.Map
and can be plugged into existing code. However, they also contain type-specific methods. For instance, the CharList
class has not only the usual add(Object o)
method but also an add(char c)
method.
Version 4.4.1 adds some extra methods and constructors.
fastUtil is published under the GNU Lesser General Public License (LGPL).
JAPISoft has released JSyntaxColor 1.2.8, 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.
Bare Bones Software has released version 8.1 of BBEdit, my preferred text editor on the Mac. The major new feature
is support for the Subversion source code control system.
BBEdit is $179 payware.
Upgrades from 8.0 are free. They're
$49 for 7.0 owners and $59 for owners of earlier versions.
Mac OS X 10.3.5 or later is required.
Gaudenz Alder has released JGraph 5.4.4, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. This release fixes a few bugs and adds some small features and API.
Ewan Mellor has released the
CHIP Code Highlighter 2.5.2,
a syntax colorer written in PHP and
designed to be used on Web servers. It supports
C, C++, Java, Lisp, Python, PHP, HTML, and JavaScript code.
CHIP is released under an MIT/X license.
The Jakarta Apache Project has posted version 5.5.9 of the Tomcat open source servlet container and the official reference implementation of the Java Servlet API 2.4 and Java Server Pages (JSP) 2.0. The version numbering is funky but this is basicaly an alpha release that mostly fixes bugs. "Tomcat 5.5 is designed to run on J2SE 5.0 and later, and requires configuration to run on J2SE 1.4....In addition, Tomcat 5.5 uses the Eclipse JDT Java compiler for compiling JSP pages. This means you no longer need to have the complete Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment (JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the binary Tomcat distributions. Tomcat can also be configured to use the compiler from the JDK to compile JSPs, or any other Java compiler supported by Apache Ant."
YourKit, LLC has released YourKit Java Profiler 4.0.3, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA, Borland JBuilder, and Eclipse 3.1 integration. Version 4.0.3 is a bug fix release.
Filip Pizlo has commenced work on the Profiler That Doesn't Suck, a free-as-in-speech (GPL) profiler for Java. It has the useful ability to measure the memory usage of individual objects. Current version is 0.0.3.
Diomidis Spinellis has released UMLGraph 3.1, an open source (BSD license) tool for declaratively specifying UML diagrams. UMLGraph uses text files that look vaguely like source code to specify how UML class and sequence diagrams are drawn. A doclet converts this into a Graphviz diagram that can be easily converted to Postscript, GIF, SVG, JPEG, etc. This release adds support for Java 1.5 enumerations.
The Eclipse Project has released version 3.0.2 of their namesake integrated development environment. This is a bug fix release. The automatic update seems to be broken. (Error Mar 26, 2005 09:01:48.883 Unable to complete action for feature "Eclipse Project SDK" due to errors. org.eclipse.core.runtime.CoreException[0]: org.eclipse.core.runtime.CoreException[0]: java.io.FileNotFoundException: http://update.eclipse.org/updates/3.0/plugins/org.eclipse.swt.carbon_3.0.2.jar) so you'll have to download the whole thing and reinstall. Unfortunately, Eclipse doesn't seem to have yet learned that well-behaved applications don't store user data in the application itself. After reinstalling, Eclipse forgets various settings, most importantly the location of the project work directory. Lately Eclipse has been crashing a lot when I try to set break points inside a relatively large class with a large lookup table. Eclipse can't refactor inside this class either. I hoped this release would fix that, but apparently not. It's still showing internal errors when I set break points.
Sebastien Vauclair has posted the first beta of Extensible Java Profiler 2.2, a free-as-in-speech (GPL) Java Virtual Machine Profiler Interface (JVMPI) based profiler for Java. About: Extensible Java Profiler (EJP) is a profiling tool for Java with a scalable and extensible architecture. Java 1.4 or later is required.
SolarMetric Inc. has released Kodo JDO 3.3.0, an implementation of Sun's Java Data Objects (JDO) 1.0 specification plus "preview features of the upcoming JDO 2.0 specification." JDO permits Java objects to be transparently stored in relational databases. Version 3.3 adds support for Apache Derby and JMX 1.2. It also offers finer grained control over timed cache invalidation. Kodo JDO Standard Edition sells for $1100 per developer license. Kodo JDO Enterprise Edition which adds J2EE application server support sells for $4000 per developer license.
Tom Copeland has released PMD 3.0, an open source tool for automatically checking Java code for various classes of bugs. Version 3.0 adds support for Java 1.5 and adds seventeen new rules including:
My efforts to test this release against XOM are failing with OutOfMemoryErrors. I suspect PMD is getting tripped up by some very large switch statements I've recently added that I intend to remove before 1.1 ships. I also tried it on Jaxen. It found a few minor issues, but no real bugs.
Novell has released Mono 1.1.5, 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. Version 1.1.5 adds support for nullable types and fixed size buffers.
Excelsior has released JET 3.7, a Java virtual machine for Linux and Windows that uses a combination of a traditional machine code compiler and just-in-time compilation from byte code. Version 3.7 adds support for Java 1.5. JET costs start at $150 and run up to $3375 depending on which version and how much support you want. There's a sale running until April 15. Support is available by e-mail and Web site only.
Sun's posted the early draft review of JSR-250 Common Annotations for the Java™ Platform. According to the draft,
With the addition of JSR 175 (A Metadata Facility for the JavaTM Programming Language) in the Java platform we envision that various technologies will use annotations to enable a declarative style of programming. It would be unfortunate if these technologies each independently defined their own annotations for common concepts. It would be especially valuable to have consistency within the J2EE 5.0 component technologies, but it will also be valuable to allow consistency between J2EE and J2SE.
It is the intention of this Specification to define a small set of common annotations that will be available for use within other Specifications. It is hoped that this will help to avoid unnecessary redundancy or duplication between annotations defined in different JSRs. This would allow us to have the common annotations all in one place and let the technologies refer to this specification rather than have them specified in multiple specifications. This way all technologies can use the same version of the annotations and there will be consistency in the annotations used across the platforms.
Java 1.5 or later will be required for this work. Comments are due by April 22.
The Omni Group has released version 3.2 of OmniGraffle and OmniGraffle Pro, Mac OS X based drawing and diagramming tools.
OmniGraffle is my tool of choice for drawing UML diagrams on the rare occasions when I need to do that.
Version 3.2 adds support for importing OmniOutliner 3 files.
OmniGraffle 3.2 is $69.95. The pro version is $119.90. Mac OS X 10.2
or
later is required.
YourKit, LLC has released YourKit Java Profiler 4.0.1, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA, Borland JBuilder, and Eclipse 3.1 integration. It's not immediately clear what's new in 4.0.1, but coming rapidly on the heels of 4.0 a few weeks ago, I'd assume it's a bug fix release.
Gaudenz Alder has released JGraph 5.4.3, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. This release fixes various bugs and improves performance.
Jim Menard has posted version 0.9.2 of DataVision, an open source "database reporting tool similar to Crystal Reports". DataVision is written in Java and supports multiple databases including PostgreSQL, MySQL, and Oracle. This release fixes bugs and improves the menus. DataVision is published under an Apache license.
The Gnu Project has released version 0.14 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 including ImageIO, NIO, and Swing. Since this is a clean room project, it doens't always line up exactly with any particular Java version, but it's roughly at the level of Java 1.4 with a few missing pieces. GNU Classpath is published under the GPL with library exception.
Enterprise Distributed Technologies has released edtFTPj 1.4.7, a free (LGPL) FTP library for Java. A $1999 payware version adds support for FTP over SSL. 1.4.7 adds support for the cdup command and deprecates all constructors except the noargs constructor in favor of setter methods.
Dan Creswell has released version 2.1.19 of the Blitz JavaSpaces Server Edition and version 1.0.7 of the pure Java edition. Blitz is an open source (BSD license) implementation of JavaSpaces that is Jini 2.0 enabled and implements smart indexing, tuneable persistence, and active/passive lease cleanup. This release adds per Entry-type constraints, FIFO ordered matching, and entry browsing in the dashboard.
Someone in London once asked me if London was my "second city". I responded, "No, San Jose is." At the end of last week's trip to Santa Clara for Software Development Expo 2005, I had dinner with a new speaker who hadn't been to the Valley before, and hadn't really seen anything outside the hotel and convention center. That inspired me to write up a few notes about the whole Santa Clara Convention Center/Westin Hotel complex and surrounding area, a place where I've spent way too much time over the last decade or so.
I've updated the conferences page.
Etienne Gagnon has released version 1.11.1 of SableVM, a Java bytecode interpreter (that is, a virtual machine) written in 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, and FreeBSD. Version 1.11.1 is basically a bug fix release. SableVM is published under the GNU Lesser General Public License (LGPL). The developers claim it's written in portable C, but in my experience it's unlikely to be able to be built on anything except the latest and greatest Linux and possibly BSD. It will not build on Mac OS X or older versions of Linux:
checking for poptGetContext in -lpopt... no ***ERROR: libpopt is missing
:-(
On the one hand code reuse is good, and you don't want to reinvent the wheel. On the other hand dependencies are bad. Depending on libraries that are not likely to be available, or not likely to be available in the right version, severely hinders an application. (By the way, the SableVM developers list noticed my last post about this, and I got a lot of offers to help me build it, though most of them implied that it was Apple's fault that the libraries they needed weren't installed on the Mac by default. I don't think anyone noticed that I had also tried to install SableVM on Linux and failed there too due to unresolved library dependencies.) Ideally you want an application to require no external libraries, and to run on as old a version of the operating system as well. In XOM, I'm currently going to some effort to remove dependence on all external libraries so it will be possible to run it out of the box in Java 1.4 and later with only a single JAR file. It's not easy to do, and I may not succeed, but it's worth trying.
One interesting product that does this right is Cenqua's Clover code coverage tool. That tool depends on a lot of third party jars. However, rather than just bundling the JARs and requiring CLASSPATHs to be set up to include them all, they repackaged the JARs into their domain, and included them in the main clover.jar file. This means they don't need to be separately added to the CLASSPATH. It also means the versions they bundle don't conflict with other versions I may be using elsewhere. It's a nice touch, and one that makes the product quite a bit easier to use. Sun has also learned this lesson. In Java 1.5, the JRE includes the Apache Project's Xerces and Xalan. However, they've repackaged these classes into the com.sun hierarchy so these don't conflict with any later versions one may have installed elsewhere.
Dynamic libraries may have made sense ten years ago when computers with 8 megs of RAM and 40 megabyte hard disks were still common. In 2005, I think their time may be coming to an end. Dynamic libraries cause more problems than they solve. It's time to seriously rethink whether this is something we want to force on our users.
Mark Doliner has released Cobertura 1.2, a free-as-in-speech (GPL) code coverage tool for Java. Version 1.2 fixes bugs and removes a dependence on a third party library. If you're not already using another code coverage tool, this is definitely worth a look. I hope to have some time to seriously review this product once I return from SD Expo. Java 1.4 or later is required.
Sun has posted update 2 of Java 1.5; i.e. Java 2 Standard Edition 5.0 version 1.5.0_02. This release fixes several dozen assorted bugs and adds three new certification authorities.
I'm leaving today for Software Development 2005 West in Santa Clara. Hope to see everyone there, but updates here will be a little slower for the next week or so. Looks like a fun show. If you're in the Valley, and you haven't registered yet, expo only passes are still free and provide access to the keynotes and special panels and events. I'm not sure if BoFs are included or not, but I promise I won't look too closely at the badges (or lack thereof) at my Effective XML BoF Monday night by the pool at the Santa Clara Westin. 7:00-8:30. Hope to see you there!
Jonas Bonér and Alexandre Vasseur have released AspectWerkz 2.0, an open source aspect oriented programming framework for Java. According to the web page, "AspectWerkz utilizes bytecode modification to weave your classes at project build-time, class load time or runtime. It hooks in using standardized JVM level APIs. It has a rich and highly orthogonal join point model. Aspects, advices and introductions are written in plain Java and your target classes can be regular POJOs. You have the possibility to add, remove and re-structure advice as well as swapping the implementation of your introductions at runtime. Your aspects can be defined using either Java 5 annotations, Java 1.3/1.4 custom doclets or a simple XML definition file." New features in 2.0 include:
AspectWerkz is published under the LGPL. Following this release, the AspectWerkz and AspectJ projects will be merging, with an eye toward an AspectJ 5 release sometime later this year.
Motorola has posted the initial Java Specification Request (JSR) for the Mobile Information Device Profile 3 in the Java Community Process (JCP). According to the JSR, changes and new features include:
- Enable and specify proper behavior for MIDlets on each of CLDC, CDC, and OSGi, for example:
- Enable multiple concurrent MIDlets in one VM
- Specify proper firewalling, runtime behaviors, and lifecycle management issues for MIDlets
- Enable background MIDlets (e.g. UI-less)
- Enable ?auto-launched? MIDlets (e.g. started at platform boot time)
- Enable inter-MIDlet communications
- Enable shared libraries for MIDlets
- Tighten spec in all areas to improve cross-device interoperability
- Increase functionality in all areas. E.g.
- Improve UI expressability and extensibility
- Better support for devices with larger displays
- Enable MIDlets to draw to secondary display(s)
- Enable richer and higher performance games
- Secure RMS stores
- Removable/remote RMS stores
- IPv6
- Multiple network interfaces per device
- Specify standard ways for doing MIDlet provisioning through other means (e.g. OMA (SyncML) DM/DS, Bluetooth, removable media, MMS, JSR-232, etc.)
- Extensive device capabilities query Localization & Internationalization (if appropriate, integrating/augmenting JSR-238 as needed)
A key design goal of MIDP3 will be backward compatibility with MIDP2 content
Gaudenz Alder has released JGraph 5.4.2, a free-as-in-speech (GPL/MPL) graph component for Swing that requires Java 1.3 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. 5.4.2 fixes bugs and improves performance. It is available in English, German and French.
Excelsior has posted the first release candidate of JET 3.7 for Linux and Windows. Excelsior JET is a Java virtual machine that uses a combination of a traditional machine 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.
Cenqua has posted the first release candidate of FishEye 1.0, a $999 payware tool for viewing CVS activity. I've been using FishEye lately as part of my work with the Jaxen Project. As well as drawing graphs of activity, it lets you see who's committing what when to CVS, what individual committers have been up to, what's going on in different branches, what's happened to particular files, and so forth. It's not essential, and I doubt I'd pay for it if Cenqua hadn't given Codehaus a free copy. XOM doesn't use it, and I haven't missed it there. However, FishEye is a nice tool that's a definite improvement over standard CVS and ViewCVS.
Dan Creswell has released version 2.1.18 of the Blitz JavaSpaces Server Edition and version 1.0.6 of the pure Java edition. Blitz is an open source (BSD license) implementation of JavaSpaces that is Jini 2.0 enabled and implements smart indexing, tuneable persistence, and active/passive lease cleanup. This release expands configurability and improves performance.
Mark Doliner has released Cobertura 1.1, a free-as-in-speech (GPL) code coverage tool for Java. Version 1.1 fixes bugs and speeds up the execution. If you're not already using another code coverage, this is definitely worth a look. I hope to have some time to seriously review this product in a couple of weeks.
Derrick Oswald has released the HTML parser 1.5, a free (LGPL) class library for parsing "real-world HTML." This is a bug fix release.
Teodor Danciu's posted version 0.6.5 of JasperReports, an open source (LGPL) Java library for generating reports from XML templates and customizable data sources (including JDBC). The output can be displayed on the screen, printed, or written to XML or PDF files. Version 0.6.5 provides more control of image loading and display, adds some more samples, and fixes bugs.
developerWorks has published my latest article, Test your tests with Jester . This article describes how to use Jester to verify test suite coverage and thereby find bugs you didn't know you had. I have a love-hate relationship with Jester. On the one hand, it's based on a brilliant, radical idea. The underlying approach (changing the code and seeing what doesn't break) almost always reveals interesting and useful information about your code base. At the same time, Jester is so incredibly difficult to configure and takes so long to run that I don't use it nearly as often as I should. I hope this article sets down enough information about just how to get Jester working that I don't have to continually rediscover this every time I use this tool. Next up will be an article on more traditional code coverage tools that perhaps don't have the same level of insight that Jester does, but are much easier to configure and faster to run.
Sun has begun posting the JavaDocs for Java 1.6/a.k.a. Java 6/Mustang on java.net. I'm glad to see this, though the "DRAFT" watermark is very annoying. Fortunately Chris Pederick's Web Developer Toolbar for Mozilla/Firefox lets me turn that off.
Sun has posted the public review draft of Java Specification Request 208, Java Business Integration (JBI). According to the draft, "JBI defines an architecture that allows the construction of integration systems from plug-in components, that interoperate through the method of mediated message exchange. The message exchange model is based on the web services description language 2.0." Changes since the last draft include:
- The Normalized Message Service has been renamed Normalized Message Router (NMR). The messaging model has been reworked to allow bindings and engines to work as service providers, consumers, or both. There are no longer separate DeliveryChannel types for bindings and engines.
- The management chapter has been rewritten. It previously used a use case-driven set of illustrations of system management. It now uses functional definitions of the JBI-provided management pieces, and how they interact with management tools as well as the JBI components being managed.
- The three separate framework chapter have been consolidated into one, reflecting the convergence of bindings and engines in the NMR.
- The the separate binding and engine packages have been combined into one javax.jbi.component package.
- A new "component" interface has been added, and the component-provided interfaces refactored to use it
- All JavaDocs for all JBI-defined APIs and SPIs are included in this specification.
Comments are due by April 4.
Siemens AG has posted the proposed final draft of JSR 229, Payment API (PAPI). According to the draft,
The scope of this JSR is to define the following:
- A generic optional API to initiate payment transactions in secured manner to transparently expedite the chargeable service requests, which are originated from J2ME applications, with external operator charging service delivery, payment service protocols, pricing management and implementation logic,
- The syntax for the description of the associated provisioning data, enabling API implementers to support different payment adapters.
Both will allow 3rd party developers to build applications with control of features and services that are chargeable. The JSR API may include methods for:
- Requesting a payment transaction
- Requesting feature and service price management
- Payment service availability
The definition of provisioning data makes sure that service providers and payment service providers can select a suitable set of payment adapters provisioned for applications on application deployment time. The following types of payment adapters are primarily addressed:
- Operator charging
- 3rd party payment service providers
This JSR enables application developers to initiate mobile payment transactions from J2ME applications. It is an optional package for the J2ME CLDC configuration and targeted for MIDP and IMP devices. Scope of this JSR is to provide a generic payment initiation mechanism, which hides the actual payment architecture and complexity from the developers. This JSR does not define and imply any concrete payment implementation and mechanism but is generic enough to support different implementations. It is up to the implementing party to realize the API based on one or more technical solutions enabling the application initiated payment. The JSR also does not define any user behavior or user interface but leaves them open to be defined by the actual implementation of the API.
Nokia has posted a maintenance draft review for Java Specification Request 184, Mobile 3D Graphics API for J2ME. This draft clarifies a few dozen ambiguities in the original spec. Comments are due by April 4.
I'm going nuts trying to find the original cite for something I know is out there, but I can't find the right words to get Google to tell me the answer. There's something I've been calling the "double bump adoption curve", which is where first there's a lot of hype, interest and excitement in a technology. Then the backlash starts and it all falls apart. Finally the second wave hits when the spec/standard/software/whatever is actually useful. I didn't come up with this idea, but I do seem to be the only person who uses the phrase "double bump adoption curve" to describe it. I need a cite to the original paper/page that mentioned this, or at least to something that describes it well. I have a vague recollection that this used to be part of James Gosling's personal home page at java.sun.com, but that page now redirects to his blog, which doesn't seem to have the old content. Does anyone know what I'm talking about? Can anyone point me to the right phrase and source? I have an end of the day deadline, so I'd really appreciate this. Please e-mail me if you know the answer. Update: Rogers Cadenhead found it in the Wayback Machine. My memory did not fail me. It was a James Gosling piece from his no longer existent personal site on java.sun.com. James, Cool URIs Don't Change! It appears that although Gosling wrote about this, Toshi Doi was the first to come up with the idea. Several people have also pointed out that this is silimar to what Geoffrey Moore calls Crossing the Chasm. David Clark calls this the "apocalypse of the two elephants". The Gartner Group calls this the "hype cycle".
Achim Westermann has released JChart2D 1.03, a thread-safe, libré (LGPL) Swing widget for drawing x-y plots.
I've posted the second alpha release of
XOM 1.1, my free-as-in-speech (LGPL)
dual streaming/tree-based API for processing XML with Java.
Version 1.1 maintains backwards compatibility with XOM 1.0 while adding a number of important new features including XPath support.
Alpha 2 speeds up XPath queries by roughly a factor of 10.
It also fixes assorted small bugs, and adds an XPathTypeException
class that
distinguishes syntactic errors from
the case where an XPath expression returns something other than a node-set.
Beta 10 of Groovy, a JVM hosted scripting language that combines the speed of GW-Basic with the clarity of Perl, has been posted. This beta fixes assorted bugs and introduces an "Early Access Preview of the new parser developed as part of the JSR effort." Apparently Groovy has now split into two versions, a so-called "classic " version and the new one being developed in the Java Community Process (JCP).
Frederic Lavigne posted version 1.2.11 of his Skin Look And Feel for Java. SkinLF allows Java developers to use Skins (GTK and KDE themes) in their Swing applications. This release supports theming text component borders and JDK 1.4 frame decoration. It also provides theme converters to port themes written for other skin engines to SkinLF themepacks. This release adds support for the indeterminate progress bars introduced in Java 1.4. Java 2 is required.
Jim Menard has posted version 0.9 of DataVision, an open source "database reporting tool similar to Crystal Reports". DataVision is written in Java and supports multiple databases including PostgreSQL, MySQL, and Oracle. This release can set a default format and border for the entire report and runs formulas using the Bean Scripting Framework. DataVision is published under an Apache license.
IBM's alphaWorks has updated their Enterprise Media Beans, a "rich media framework based on the JSR086 standard proposal for J2EE-compliant applications; media is treated as just another data type. EMB enables applications to integrate rich media data, such as audio, video, or image, into applications based on Enterprise Java Beans (EJB) Entity BeansTM within the J2EE application development model. It allows the embedding of rich media assets into business logic without the worry about client type, server media protocols, media format, or streaming technology. It is a standardized, component-based application model for rich media integration throughout the enterprise -- back-end and infrastructure." The update "contains the Open-Source Reference Implementation and Technology Compatibility Kit code that reflects final changes to the JSR 086 specification." According to the site, Windows 2000 is required. I suspect it may work on XP, and they just forgot to update the platform requirements, but I'm a Mac and Linux user these days so I can't easily check.
The first release candidate of version 3.0 of Hibernate, an open source (LGPL) object relational mapping system for Java, has been posted. "Hibernate lets you develop persistent classes following common Java idiom - including association, inheritance, polymorphism, composition and the Java collections framework. The Hibernate Query Language, designed as a "minimal" object-oriented extension to SQL, provides an elegant bridge between the object and relational worlds. Hibernate also allows you to express queries using native SQL or Java-based Criteria and Example queries." According to Gavin King, new features in 3.0 include
- Much more flexible O/R mapping: support for exotic association and inheritance mappings, and greater flexibility when working with legacy data.
- Hibernate3 filters: a unique feature for working with temporal (historical), regional or permissioned data.
- Unprecendented flexibility for mixing handwritten and generated SQL within a single application or even a single entity: full support for "derived" entities and attributes defined in the mapping document, full support for overriding any generated SQL statement with handwritten SQL, support for stored procedures.
- Object/Relational/XML mapping: query XML directly from the database for reporting, replicate data between databases via intermediate XML, externalize entity data as XML when interacting with remote systems.
- Enhanced ease of use: better defaulting, an unchecked exceptions model, simplified natural (and composite) key support, simplified CMT integration.
- Enhanced Criteria query API: with full support for projection/aggregation and subselects.
- Runtime performance monitoring: via JMX or local Java API, including a second-level cache browser.
- Brand new AST-based HQL parser: bulk update/delete enhancement, better syntax validation.
- JBoss EJB 3.0 preview: support for annotation-based O/R mappings, full support for EJB-QL 3.0, support for EJB 3.0 persist()/merge() lifecycle, JACC-based security model.
- Hibernate Tools preview: a full suite of Eclipse plugins for working with Hibernate 3.0, including mapping editor, interactive query prototyping, schema reverse engineering tool.
- Many new extension points: including a new, extensible, event-driven architecture
- Documentation enhancements.
- Brand new test suite, including many useful examples of exotic Hibernate mappings.
ByteConsult GmbH has released nib4j 1.1, a $169 payware tool that enables Apple's Interface Builder be used to design cross-platform Swing user interfaces.
IBM has withdrawn Java Specification Request (JSR) 92 Localizable Text from the Java Community Process. I'm not sure what happened to this one. Five years after the working groups founding, they never even got to early draft review. Whether everyone lost interest or other technologies filled the needs this spec was trying to address, I don't know.
Day Software has posted the proposed final draft specification for JSR-170, Content Repository for Java™ Technology API. The spec has now been split into two compliance levels:
Level 1 defines a read-only repository. This includes functionality for the reading of repository content, introspection of content-type definitions, basic support for namespaces, export of content to XML and searching. This functionality should meet the needs of presentation templates and basic portal applications comprising about 80% of the existing code-base of content-related applications.
Level 2 additionally defines methods for writing content, assignment of types to content, further support for namespaces, and importing content from XML.
Finally, a number of independently optional features are defined that a compliant repository may support. These are transactions, versioning, observation, access control, locking and additional support for searching.
Nokia has released the maintenance draft of JSR-212 Server API for Mobile Services: Messaging. The changes are minor but functional. There are three major changes in this review:
Open Cloud and Sun have posted the early draft review of JSR-240 Java Advanced Intelligent Networks (JAIN) Service Logic Execution Environment (SLEE) API Specification 1.1.
Greg Hinkle has posted the fifth beta of MC4J 1.2, an open source (MPL) GUI interface for Java Management Extensions (JMX) based servers. Supported servers include JBoss, WebLogic, WebSphere, and Tomcat. MC4J is built on top of netbeans 3.6.