May, 2004 Java News

Thursday, May 27, 2004

I'm going to Maine for the holiday weekend to visit friends and look at birds. Regular updates will resume on Tuesday.

Apple has posted the second 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, though it is known to break IntelliJ IDEA 4.0. (3.0 is apparently unaffected.) Apple hints that IntelliJ may provide a bug fix to anyone who asks.

Wednesday, May 26, 2004

Diomidis Spinellis has released UMLGraph 2.2, 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.2 adds support for SVG class diagrams containing guillemot characters for stereotypes.

Gaudenz Alder has released JGraph 4.0, a free-as-in-speech (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. According to Alder, version 4.0 makes some API changes. In particular, the ValueChangeHandler interface was removed and a new AttributeMap class that allows one to override cell behaviour, points, and bounds was added.

IBM's alphaWorks has posted the first public release of Application Privacy Monitoring for JDBC (APM4JDBC), a "technology preview providing a Java™ library for adding privacy policy enforcement to existing Web applications that use JDBC/SQL....APM4JDBC is a Java/SQL Privacy Monitoring library for the TPM. APM4JDBC provides privacy monitoring functions for applications running on a WebSphere Application Server and connecting to IBM DB2 by using JDBC. The idea is to wrap the JDBC connection class by adding the privacy monitoring and enforcement functions so that when an application calls JDBC to retrieve PII data, (1) the request SQL is analyzed, (2) a privacy conformance check request is sent to the TPM server to evaluate the privacy policies, and (3) the SQL ResultSet table is modified based on the privacy conformance check results and is returned to the application."

Tuesday, May 25, 2004

iPOV has posted jSai 0.7, 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.

Rob Lougher has releeased JamVM 1.1.4, a free (GPL) Java Virtual Machine that "conforms to the JVM specification version 2 (blue book). In comparison to most other VM's (free and commercial) it is extremely small, with a stripped executable on PowerPC of only ~100K, and Intel 80K. However, unlike other small VMs (e.g. KVM) it is designed to support the full specification, and includes support for object finalisation, the Java Native Interface (JNI) and the Reflection API." Like most free VMs it relies on the Gnu Classpath library which is upgraded to 0.0.9 in this release. 1.1.4 also adds the JNI enhancements introduced in Java 1.2. JamVM only interprets code. It does not have a Just-In-Time compiler.

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

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

JCraft, Inc has posted JSch 0.1.15, a pure Java implementation of SSH2 that supports port forwarding, X11 forwarding, file transfer, etc. JSch is released under a BSD license. This release fixes bugs.

Dan Creswell has released version 2.0.7 of the Blitz JavaSpaces Server Edition abd version 0.8.1 of the pure Java edition. These are both open source (BSD license) implementations of JavaSpaces that are Jini 2.0 enabled and implement smart indexing, tuneable persistence, and active/passive lease cleanup. These are bug fix releases.

Websina has released BugZero 3.6, 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 redesigns the web interface and provides an add-on component for reminders and escalations.

Teodor Danciu's posted version 0.5.3 of JasperReports, an open source 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.5.3 fixes assorted bugs and adds support for styled text and custom report variable calculation.

Bernhard Fastenrath has written a Java GetOpt Library (current version: 0.2) that parses command line options such as -d, --help and -version. The command line options and responses can be stored in XML.

Derrick Oswald has released the HTML parser 1.4.1, a free (LGPL) class library for parsing "real-world HTML."

Monday, May 24, 2004

The Eclipse Project has posted the ninth milestone beta 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. M9 adds early access support for Java 1.5 in the form of replacement JDT plug-ins that can be installed into Eclipse 3.0. However, this will not be finished in time to be for the Eclipse 3.0 release. The most impressive new feature in M9 is code folding. You can show and hide method bodies, block bodies, etc. to more quickly navigate a class. Other new features in M9 include:

"M9 is the final milestone build of the Eclipse 3.0 development cycle, and marks the official start of the 3.0 endgame." If all goes according to plan (Yeah, that'll happen.) 3.0 will be released the week of June 28.

Oliver Burn has released Checkstyle 3.4, a lint-like tool that checks Java code for adherence to various coding standards. Version 3.4 adds about a dozen new checks including

Checkstyle is published under the LGPL.

Subversion 1.0.4 has been released. Subversion is an open source version control system designed to replace CVS, the open source version control system we've all learned to hate. 1.0.4 is a bug fix release. "Of particular note this release fixes data loss that may occur on case insensitive file systems (e.g. Win32)."

ObjectWeb has released Speedo 1.0, a free (LGPL) implementation of the Java Data Objects (JDO) API.

Sunday, May 23, 2004

Pete Freitag has launched, a useful site for quickly loading standard class library documentation in by typing in your web browser's location bar. "The site is basically a URL shortcut to java documentation, for example if you want the documentation for the String class, simply type: You can also type in the full class name, but only the class name is needed (which is nice if your not sure what package a class is in)." This then redirects you to the appropriate page on Sun's site. Class name matching is case insensitive. They're a few hitches. If you're looking for java.awt.List, you'll need to type the fully package qualified name because points to java.util.List; but overall it just works. It's a startlingly useful hack that requires zero installation. It works today in essentially all web browsers. Why didn't someone think of this years ago?

Tom Copeland has released PMD 1.8, 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:

Version 1.8 adds five new rules: ExceptionAsFlowControlRule, BadComparisonRule, AvoidThrowingCertainExceptionTypesRule, AvoidCatchingNPERule, and OptimizableToArrayCallRule.

As is my wont, 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 I haven't changed much in XOM lately becuase I've been busy with other projects. Nonetheless it uncovered several dozen real issues including one possible genuine bug. 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.

QA-Systems has released QJ-Pro 2.1, another open source (GPL) static code analyzer for Java with plug-ins for Eclipse, JBuilder, and JDeveloper. I'd like to tell you how well this one work. Unfortunately, QJ-Pro follows the traditon in these sorts of tools of providing actively isleading documentation that describes file that aren't there, while not describing the files that are. PMD shares this problem, but I was at least able to figure out where the PMD docs differed from reality, and get it to run. QJ-Pro was completely non-functional. Doubtless there's some way to make it work, but I couldn't figure it out. :-(

Saturday, May 22, 2004

Cable provider Cox Cmmunications has submitted Java Specification Request 242, Digital Set Top Box Profile to the Java Community Process. (JCP). "The requested specification will define a Java 2 Platform, Micro Edition (J2ME) profile based on the Connected Limited Device Configuration (CLDC) appropriate for use by small-footprint, cable television set top boxes. The profile will consist of Java 2 APIs for I/O, networking, graphics, etc. appropriate for small-footprint cable television set top boxes and a subset of the Java TV API appropriate for such devices." We've finally come full circle.

Sun has submitted JSR 243, Java Data Objects 2.0 - An Extension to the JDO specification, to the JCP. According to the JSR,

The JDO API was released in spring of 2002 and had one maintenance release late in 2003. The initial release provided a database abstraction that permitted API access to datastores without detailed knowledge of the underlying datastore API.

This technology has been used to develop implementations for file storage and relational and object databases. Over a dozen commercial implementations have been developed to date. Additionally, the technology has been exploited to develop EJB Container Managed Persistence (CMP) for application servers.

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.
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.
Minor usability features:
A number of usability features will be considered, based on feedback from user discussions on sites such as TheServerSide and JDOCentral.
Friday, May 21, 2004

Linus Tolke has posted ArgoUML 0.15.6, an open source UML modelling tool written in Java. This is a bug fix release. ArgoUML is published under a BSD license.

Thursday, May 20, 2004

Oracle has posted the proposed final draft specification of Java Specification Request (JSR) 73 Data Mining API. According to the draft spec,

data mining [Mitchell1997, BL1997] includes the functional areas of classification, regression, attribute importance1, clustering, and association. These are supported by such supervised and unsupervised learning algorithms as decision trees, neural networks, Naive Bayes, Support Vector Machine, K-Means, and Apriori, on structured data. Common operations include model build, test, and apply (score). A particular implementation of this specification may not necessarily support all interfaces and services defined by JDM. However, JDM provides a mechanism for client discovery of supported interfaces and capabilities.

JDM is based on a generalized, object-oriented, data mining conceptual model leveraging emerging data mining standards such the Object Management Group’s Common Warehouse Metadata (CWM), ISO’s SQL/MM for Data Mining, and the Data Mining Group’s Predictive Model Markup Language (PMML), as appropriate

Implementation details of JDM are delegated to each vendor. A vendor may decide to implement JDM as a native API of its data mining product. Others may opt to develop a driver/adapter that mediates between a core JDM layer and multiple vendor products. The JDM specification does not prescribe a particular implementation strategy, nor does it prescribe performance or accuracy of a given capability or algorithm.

To ensure J2EE™ compatibility and eliminate duplication of effort, JDM leverages existing specifications. In particular, JDM leverages the Java Connection Architecture [JSR16] to provide communication and resource management between applications and the services that implement the JDM API. JDM also reflects aspects the Java Metadata Interface [JSR40] for the interface specification.

Sun has posted the second maintenance draft review for the Java Servlet 2.4 Specification. This just looks to incorporate various errata, mostly typos. Comments are due by June 10.

Nokia has posted an early draft review of JSR 234 Advanced Multimedia Supplements. This is a J2ME API for controlling multimedia features like cameras, videocameras, and audio playback on newer devices such as camera phones. Comments are due by May 21 (tomorrow).

Sun's has released the final draft specification of JSR 169, JDBC Optional Package for CDC/Foundation Profile. This defines an optional database connectivity package for Java 2 Micro Edition (J2ME) environments.

IBM has posted the proposed final draft specification of Java Specification Request (JSR) 95, J2EE Activity Service for Extended Transactions. Quoting from the introduction,

As the J2EE environment matures, increasingly complex business applications are placing greater demands on the container/server middleware to support more sophisticated transactional semantics than the short-lived ACID transactions provided by the Java Transaction Service (JTS). For example web service applications deployed into a J2EE environment are typically composed of loosely coupled interactions for which it may be necessary to relax the isolation characteristics of a transaction without completely sacrificing atomicity. This requires a different sort of transaction from a JTA transaction, perhaps extending over a more significant period of time and involving participants that require compensation to deliver atomicity. Many strategies are available for dealing with extended transactions, some appropriate for one type of application and some appropriate for another. But there is no single extended transaction model that will satisfy all types of application; what is required is a middleware framework that can be exploited by arbitrary, specific extended transaction models. The OMG Activity service2specifies such a framework for CORBA-based middleware. This document describes the system design and interfaces for a J2EE Activity service that is the realization, within the J2EE programming model, of the OMG Activity service.

The purpose of the Activity service is to provide a middleware framework on which extended Unit of Work (UOW) models can be constructed. An extended UOW model might simply provide a means for grouping a related set of tasks that have no transactional properties or it may provide services for a long-running business activity that consists of a number of short-duration ACID transactions. The Activity service is deliberately non-prescriptive in the types of UOW models it supports. The advantage of structuring business processes as activities with looser semantics than ACID transactions, for example by modeling a business process as a series of short-duration ACID transactions within a longerlived activity, is that the business process may acquire and hold resource locks only for the duration of the ACID transaction rather than the entire duration of the long-running activity. In a widely distributed business process, perhaps involving web-based user interactions and cross-enterprise boundaries, it is neither practical nor scalable to hold resource locks for extended periods of time. A typical problem with extended UOW models is that the failure scenarios may be quite complex, potentially involving the compensation of some or all of the ACID transactions that were committed before a long-running activity failed. The responsibility for providing the appropriate recovery from such a failure may be shared between the application itself, which is the component that understands what needs to be compensated, and the extended unit of work service provider, which might provide facilities to register compensating actions.

The Activity service provides a generic middleware framework on which many types of extended transaction and other unit of work, models can be built.

Metasolv Software has posted the proposed final draft specification for JSR 142, of Operation Support Systems (OSS) Inventory API in the Java Community Process. According to the introduction:

The Inventory API reduces the cost and complexity of integrating inventory components with other OSS components and integrating inventory components between them. The API provides a solution for managing cross-component inventory relationships, which is a complex task in a typical OSS system, due to incompatible APIs and different information models.

Through the technology-independent Inventory API, client applications use the functionality of inventory systems in support of the enterprise product offering. The API allows maintaining the relationships between the enterprise product offering, underlying managed resources and technology-specific system services. Although this API is defined for the communications industry, the approach to enterprise services and their planning and packaging is relevant to other industries as well.

The API addresses inventory functions in different areas of service provider operations: Customer Relationship Management, Service Management and Resource Management. For each of these functions the API specifies J2EE-based interfaces for update and query of inventory entities, entity specifications and the associations between them. It allows retrieving metadata and allows clients to receive notifications of inventory events.

The Inventory API provides B2B integration mechanisms via the specification of XML messages, exchanged across a JMS messaging infrastructure.

Wednesday, May 19, 2004

Subversion 1.0.3 has been released. Subversion is an open source version control system designed to replace CVS, the open source version control system we've all learned to hate. 1.0.3 fixes a security hole. All users are strongly advised to update.

Sun has posted the proposed final draft of Java Specification Request 204, Unicode Supplementary Character Support, in the Java Community Process. This spec defines how Java can handle Unicode characters that no longer fit into a single char. Basically it suggests using surrogate pairs (two chars equals one character) for character from outside the Basic Multilingual Plane (the first 65,536 Unicode code points). This isn't pleasant, as anybody who's had to do XML processing in Java already knows, but it does work. In addition, some additional methods have been added to String, StringBuffer, and related classes that use ints to represent code points. It's probably the best that can be done without breaking backwards compatibility.

Tuesday, May 18, 2004

Diomidis Spinellis has released UMLGraph 2.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. Version 2.1 can now creates groff-compatible pic files.

Dan Creswell has posted version 0.8.1 of a pure Java version of Blitz JavaSpaces, implemented on top of the Sleepycat DB Java Edition. It implements smart indexing, tuneable persistence, and active/passive lease cleanup.

Creswell has also released version 2.0.6 of the non-pure Java "server edition". This release improves performance, fixxes bugs, and supports unicast and multicast lookup.

The Jakarta Apache Project has posted the first alpha of HTTPClient 3.0. "Although the package provides basic functionality for accessing resources via HTTP, it doesn't provide the full flexibility or functionality needed by many applications. The Jakarta Commons HttpClient component seeks to fill this void by providing an efficient, up-to-date, and feature-rich package implementing the client side of the most recent HTTP standards and recommendations....Designed for extension while providing robust support for the base HTTP protocol, the HttpClient component may be of interest to anyone building HTTP-aware client applications such as web browsers, web service clients, or systems that leverage or extend the HTTP protocol for distributed communication." Changes since 2.0 include:

Monday, May 17, 2004

IBM has released version 1.21 of Jikes, their open source Java compiler written in C. Version 1.21 fixes a bug that caused Jikes to complain about supposedly invalid .class files. Jikes is published under the IBM Public License.

Sunday, May 16, 2004

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

Etienne Gagnon has released version 1.1.4 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.4 uses GNU Classpath 0.09, improves support for AWT and Swing, adds support for the AMD64, improves autodetection of build parameters on non-Linux systems, and fixes a number of bugs. SableVM is published under the GNU Lesser General Public License (LGPL).

The Jakarta Apache Project has released Cactus 1.6.1, a simple framework for unit testing server-side Java code such as servlets, Enterprise JavaBeans, tag libraries, etc. New features since 1.5 include

Saturday, May 15, 2004

Joe Walnes has released XStream 1.0, an open source library for serializing arbitrary Java objects as XML. The classes do not need to implement Serializable or provide no-args constructors. Java 1.4 or later is required for full functionality, though some of it appears to work in earlier VMs.

David Hovemeyer has posted FindBugs 0.7.3, an automated open source tool for finding potential bugs in Java code. This release improves the documentation, provides a -workHard option to reduce false warnings associated with infeasible or unlikely exception edges, adds a detector for code that catches IllegalMonitorStateException, a detector to find private methods that are never called, a detector to find suspicious uses of non-short-circuiting boolean operators (& and |, rather than &&and ||. Java 1.4 or later is required. FindBugs is published under the LGPL.

Slava Pestov has uploaded the thirteenth 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 adds Zope Page Template syntax highlighting and fixes various bugs.

Friday, May 14, 2004

Recently I've received queries from several readers of Chinese translations of Processing XML with Java asking why they can't get to this site (which provides errata and updates for the book, among many other things). I've now confirmed my suspicion that the Chinese government is blocking this and all other sites hosted on IBiblio. I suspect IBiblio's support for Tibetan freedom and independance might have something to do with this. There's probably a way to get around the firewall, but off the top of my head I couldn't tell you how to do it; and of course even if I did, the people who need to know couldn't read it here anyway. :-(

Pointless it may be to post it here, but Bil Hays suggests, "Assuming that ibiblio is completely blocked, the best thing would be if he could get an account with shell access on any other machine in the world that isn't being blocked to china, and isn't blocking ibiblio. Then he could use ssh to that machine to build a tunnel to ibiblio, mapping a local port on his machine to port 80 on ibiblio through the intermediate server. It would be a longer round trip, tho. If you haven't looked into this kind of thing before, I know it sounds complicated, but it's not really. I've got some theory up at <>."

Wes Felter and Fred Stutzman both suggested using the Tor overlay network. According to Felter, "It goes without saying that it's probably illegal in China, but I suppose people who are bypassing the firewall know the risk."

The Apache Commons Team has released Commons/IO 1.0, a class library that provides utility classes and methods for copying streams, endianness conversion, safely closing streams, creating Strings and byte arrays from streams and Readers, filtering files, and querying and manipulating the file system. It's published under the Apache license.

Thursday, May 13, 2004

Sun has posted the second public review draft (version 0.50) of Java Specification Request (JSR) 176, J2SE™ 1.5 (Tiger) Release Contents, to the Java Community Process (JCP). "This specification will define the target feature and API set for J2SE 1.5 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 1.5 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

Features dropped since the previous draft include a high resolution timer. Comments are due by June 10.

Sun has submitted JSR-245, JavaServer Pages 2.1, to the Java Community Process (JCP). According to the JSR, JSP 2.1

focuses on better alignment with the next release of JavaServer Faces. JavaServer Faces 1.0 (JSR-127) defines a standard framework for building User Interface components, and builds on top of JSP 1.2 technology. Because JSP 1.2 technology does not have an integrated expression language and because the JSP 2.0 EL does not meet all of the needs of JSF, a new expression language was developed for JSF 1.0. The JSF EG attempted to make the language as compatible with JSP 2.0 as possible but some differences were necessary. The JSF EG agreed that the JSF 1.0 EL will be phased out in the next release of the JSF specification in favor of the JSP 2.1 expression language. It is a goal, therefore, of JSP 2.1 to enhance the expression language to meet the needs of JSF technology. Many of these enhancements are likely to be useful in other contexts as well.

Enhancements to be considered for the JSP 2.1 expression language include, but are not limited to, the following:

  • moving the expression language chapter into its own specification document, to be delivered under this JSR with consultation from the JavaServer Faces expert group
  • ability to redefine the behavior of the "." operator through a Property Resolver API
  • ability to plug in Variable Resolvers on a per-application and per-page basis
  • ability to plug in Property Resolvers on a per-application and per-page basis
  • ability to express references to bean methods using the expression language and invoking those methods via a Method Binding API
  • ability to express references to bean properties using the expression language and getting/setting those attributes via a Property Binding API
  • ability to defer expression evaluation until a time of a tag handler's choosing

Comments are due by May 24.

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

The Eclipse Project has posted the second release candidate of 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."

Wednesday, May 12, 2004

Nobody knew of a service like the old postquery at that returned all the information posted (or gotten) by an HTML form, so I went ahead and wrote my own in PHP. Feel free to bang on it.

I'd like to expand on this a little. If anyone happens to know a way PHP can read the complete client request HTTP header or body without breaking it up into name-value pairs, please drop me a line. I could also use a way to retrieve arbitrary fields from the HTTP header by number, sort of like URLConnection.getHeaderField(int) or HttpServletRequest.getHeaderrNames() in Java. That is, I don't want to assume I know the names of the header fields in advance.

Update: I think what I need is $HTTP_RAW_POST_DATA. Nope, I spoke too soon. That doesn't work. Still looking. Hmm, OK maybe I need php://input? Yes, that seems to be it. This gives me the raw, unencoded body of the request. I still need to figure out how to get all the headers though.

Robert Oloffson has posted version 0.42 of Java Memory Profiler (JMP). JMP uses the Java Virtual Machine Profiling Interface (JVMPI) interface to track objects and method times in a JVM. It uses a GTK+ interface to display statistics. The current instance count and the total amount of memory for each class is shown as is the total time spent in each method. This release adds popup menus to various tables and lists for easier navigation between the objects owned by an instance and the owner of the instance. JMP is written in C for Linux.

Tuesday, May 11, 2004

TRIEMAX Software has released Jalopy 1.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. New features in version 1.1 include Java 1.5 support, configurable method sorting via custom Javadoc tags, Javadoc templates for Getters/Setters, and customizable comment removal. Java 1.3 or later is required.

Ralph Jocham has posted version 0.97 of JCSC (Java Coding Standard Checker), a configurable tool for checking Java source code for adherence to standard conding conventions such as naming conventions, code structure, class size, and line length. Version 0.97 fixes bugs, enhances the Ant task, and adds a plugin for IntelliJ IDEA 4.x. JCSC is published under the GPL. Java 1.3 or later is required.

Monday, May 10, 2004
Picture of a Cat, Tomcat logo

The Jakarta Apache Project has released Tomcat 5.0.24, 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.

Gaudenz Alder has released version 3.4.1 of JGraph, a free-as-in-speech (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. According to Alder, "This release allows spline + bezier curves, fixes minor bugs, and has changed default settings."

Tuesday, May 4, 2004

Gaudenz Alder has released version 3.4 of JGraph, an open source 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. According to Alder, "This release can handle overlapping edges, and has static inner handles for better subclassing. Among other minor API changes some control methods were moved to the handles." Of course, various bugs have been fixed as well.

Dan Creswell has released Blitz JavaSpaces 2.0.5, an open source implementation of JavaSpaces that is Jini 2.0 enabled. It implements smart indexing, tuneable persistence, and active/passive lease cleanup.

Monday, May 3, 2004

The Gnu Project has released version 0.09 of GNU Classpath, an incomplete free implementation of the core Java class libraries. Newly implemented packages in this release include javax.print and javax.imageio. This release also updates various classes and packages including GNU JAXP. It also delegates much of to java.nio, which strikes me as a colossally bad idea. java.nio really only works well for certain important but still special purpose cases. It tends to be slower than regular I/O for basic operations with small files. I wonder if anyone's actually profiled this? GNU Classpath is published under the GPL with library exception.

IBM has released the Jikes Research Virtual Machine 2.3.2 (RVM), an open source virtual machine that

Jikes RVM runs on Linux®/IA-32, AIX™/PowerPC™, OS X/PowerPC, and Linux/PowerPC platforms and advances the state-of-the-art of virtual machine technologies for dynamic compilation, adaptive optimization, garbage collection, thread scheduling, and synchronization. A distinguishing characteristic of Jikes RVM is that it is implemented in the Java™ programming language and is self-hosted i.e., its Java code runs on itself without requiring a second virtual machine. Most other virtual machines for the Java platform are written in native code (typically, C or C++). A Java implementation provides ease of portability, and a seamless integration of virtual machine and application resources such as objects, threads, and operating-system interfaces.

Version 2.3.2 removes all dependencies on the Sun VM.

The GNOME Platform Bindings initiative has released the Java-GNOME bindings 2.6.0. "Java-GNOME is a set of Java bindings for the GNOME and GTK libraries that allow GNOME and GTK applications to be written in Java. The project consists of two libraries: java-gtk, a GTK-only binding, and java-gnome, a GTK and GNOME binding. Java-GNOME is not a Swing look-and-feel mimicking the GTK look, it is not a GTK/GNOME rewrite in Java, and it is not a set of GTK peers for AWT. It is a JNI layer that delegates the calls out to the native GTK or GNOME C libraries." libgnome 2.6 or higher and/or gtk 2.4 or higher are required.

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

Sunday, May 2, 2004

The Apache Jakarta Commons Team has released Commons Net 1.2.0 (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. "This release adds, for the first time, autodetection of FTP server type when retrieving an FTP listing so that non-unix FTP servers can automatically provide usable listings with valid dates, etc. Server types supported in this are Windows NT, OS2, VMS, OS400. Formerly only unix was supported in this way. This enables its automatic use in Ant's FTP task, for example, for these server types as well as the original unix."

Saturday, May 1, 2004

Slava Pestov has uploaded the twelfth 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 is mainly a bug fix release."

Not to be outdone, Bare Bones Software has released version 7.1.4 of BBEdit, my preferred text editor on the Mac. This release allows the current search strings to be modified by the scripting interface. It also fixes numerous bugs. BBEdit is $179 payware. Upgrades are free for 7.0 customers.

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
Last Modified May 9, 2004