November, 2006 Java News

Wednesday, November 29, 2006 (Permalink)

Accendia has released JNetStart 2.1, "a secure network class loader that enables the user to launch a Java Swing application deployed on a remote server without the need to install or download the application component files. JNetStart is unique in the granularity of the components downloaded in the startup process. Instead of application jar files, JNetStart loads classes and resources on the client machine. This makes large Swing applications instantly available to the user." JNetStart costs $495 per server.

Sunday, November 26, 2006 (Permalink)

Ben Gardner has posted Uncrustify 0.30, a source code beautifier for C, C++, C#, D, Java, Embedded SQL, and Pawn. Uncrustify is published under the GPL.


Bruno Lowagie has released iText 1.4.7, an open source Java library for creating documents in PDF, XML, HTML, and RTF. It can also convert XML documents into any of these formats. This release adds support for AES encryption and fixes bugs. iText is published under the Mozilla Public License.


JetBrains has also released TeamCity 1.1, an "IDE independent, integrated team environment targeted for .NET and Java software developers and their managers. It automates and coordinates key collaborative processes to eliminate manual systems and delays, providing tight integration with multiple build and test tools, real-time unit test frequency, server-side inspections and code coverage analysis." Version 1.1 adds support for TestNG, IE 7, and Firefox 2. TeamCity is $399 payware.

Saturday, November 25, 2006 (Permalink)

Andrei Kouznetsov has released Unified I/O 2.7.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 bug fix release.


Paul R. Holser has released JOpt Simple 2.3, an open source "Java library for parsing command line options, such as those you might pass to an invocation of javac. As closely as possible, JOpt Simple attempts to honor the command line option syntaxes of POSIX getopt() and GNU getopt_long()." JOpt Simple is published under the Academic Free License. This release now works with JOpt 1.3.


Michael Fuchs has released DocBook Doclet 1.5, a doclet that creates DocBook SGML and XML documents from JavaDoc. Version 1.5 upgrades to DocBook 4.5 and docbook-xsl 1.71.1. It also adds syntax highlighting.


IBM's alphaWorks has released the Pattern Modeling and Analysis Tool for Java Garbage Collector (PMAT) 1.3. "PMAT analyzes IBM verbose GC traces by parsing the traces and building pattern models. PMAT recommends key configurations by executing a diagnosis engine and pattern modeling algorithm. If there are any errors related with Java heap exhaustion or fragmentation in the verbose GC trace, PMAT can diagnose the root cause of failures. PMAT provides rich chart features that graphically display Java heap usage." This is mostly a bug fix release.


Martin Auer has released UMLet 7.1, "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. This release fixes bugs and adds online help. UMLet is published under the GPL. Java 1.5 is required.

Friday, November 24, 2006 (Permalink)

Robert Bajzat has released DocWrench 0.8, a JavaDoc doclet that produces more modern, frameless DHTML JavaDoc than the standard doclet. However, viewing the sample code I have to say what it produces is decidedly inferior to the standard output, and suffers from pretty much all the flaws common to Web 2.0 applications (poor usability, poor search engine optimization, JavaScript dependence, etc.) What I'd really like to see is a doclet that generates well-formed, valid, frameless XHTML styled with CSS. Maybe I'll even write one. However for now I just postprocess my JavaDoc with TagSoup instead. Java 5 is required.


Polarion Software has posted Subversive 1.1.0 M9, a pure Java, open source Eclipse 3.2 plug-in that provides Subversion integration. New features in 1.1 include "Branch from Revision" and "Tag from Revision" actions.

Thursday, November 23, 2006 (Permalink)

Petr Nejedly has released Insane 1.11, an open source tool for performing postmortem memory leak analyses. According to Nejedly,

When doing performance work, one often faces questions like "how big is this structure", "what happens if I register one more thing here" and so on. When chasing some hard-to-reproduce memory leak, one often needs to come to a long-running full-heap application and analyze its heap without restarting it. There are several approaches to these problems, but none of them seemed optimal:

  • Profiling structures using profiler needs complicated instrumentation and is hard to perform automatically from memory regression tests.
  • Long-term running the application in the instrumented environment significantly reduces its performance and you need to prepare instrumentation in advance.

This lead me to the development of the Insane technology, quite simple solution for reflective inspection of heap from inside of running VM.

Where did the name came from? OK, I consider it quite insane to introspect the whole heap from inside of the application doing the introspection. I consider dumping the whole heap image to a XML file hundred megabytes long even more insane. And finally, how would you call a person trying to parse that XML file?


Sun has posted the early draft review of JSR-246 Device Management API to the JCP. According to the draft:

JSR 246 Device management API is an optional package for the Java Micro Edition (JME). It provides a generic interface to the Device Management implementation in the device, to enable device management via natively implemented Device Management protocols. The API provides the possibility for Java applications to access parameters that can be managed remotely using the Device Management protocols, and that are physically stored by the implementation. It enables the use of the underlying device management implementation. It also provides mechanisms to control additional functionality in the Device Management subsystem, such as triggering management sessions, notifying the application about DM Tree changes etc.

The API's focus is on the widely available Device Management protocols SyncML/OMA DM and WAP/OMA Client Provisioning. The API is a high level API that provides a common set of management commands that are available in management protocols.


Sun has released the final draft of JSR 208, Java Business Integration (JBI). According to the spec,

Enterprise application integration (EAI) and business-to-business integration (B2B) solutions have traditionally required the use of non-standard technologies to create functional systems. This has required end users to either “lock in” to a single vendor of such technologies, or create their own. Each approach has disadvantages. No single vendor can cover the vast functional space of EAI and B2B (consider the thousands of applications and protocols to be supported). This leaves users of integration technologies in the uncomfortable position of selecting less than ideal solutions to their integration problems, and paying dearly for them.

Java™ Business Integration (JBI) seeks to address this problem by creating a standards-based architecture for integration solutions. This infrastructure allows third-party components to be “plugged in” to a standard infrastructure, and allows those components to interoperate in a predictable, reliable fashion despite being produced by separate vendors. It is anticipated that this ability to interoperate will create a multivendor “ecosystem” which will give rise to large pool of integration-related technologies that can be sourced by end users. In addition, this ecosystem will foster new innovations in integration technologies, since it will permit innovators to concentrate on a particular technology or problem area, without having to worry about providing all the other pieces needed to build a complete integration solution.

Every integration problem is unique; an appropriate combination of JBI-compliant components will provide a solution that is sized appropriately to the problem at hand. By avoiding lock-in to a particular vendor of integration technologies, the user is free to choose components that provide the particular functions that he or she needs, and be assured that a functional integration solution can be assembled from those pieces.

In the past, attempts to compose third-party components into systems that have the attributes required of enterprise systems have not been very successful. JBI addresses this by adopting a service-oriented architecture (SOA), which maximizes the decoupling between components, and creates well-defined interoperation semantics founded on standards-based messaging. The SOA approach creates many other benefits that are applicable to enterprise integration solutions.

Wednesday, November 22, 2006 (Permalink)

Sun has posted the ninth update release for Java 5.0 Tiger with fixes for half a dozen assorted bugs. As usual, it's available for Solaris, Windows, and Linux. This is free-as-in-beer, not yet as-in-speech.

Tuesday, November 21, 2006 (Permalink)

Sun has posted the first release candidate of Java 6 Mustang for Windows, Linux, and Solaris.


SuperBonBon Industries has released UPNPLib, an open source (Apache license) universal plug and play library for Java."UPNP™ is a protocol based on SSDP to discover UPNP™ compliant devices on a network. Specific search can be made to only look for a specific type of device or for all devices available. Once a device is found on the network, the client can retreive the device description ( devices state variables and available operations ) and start to interact with it using XML messages." Java 1.4 or later is required.


Teodor Danciu has released JasperReports 1.2.8, an open source (LGPL) Java library for generating reports from XML templates and customizable data sources (including JDBC). The output can be displayed on the screen, printed, or written to XML or PDF files. Version 1.2.8 adds sortable data sources and custom date and number formatters,

Monday, November 20, 2006 (Permalink)

It's interesting that just as Sun and Java are finally jumping into the free-software pool with both feet, Novell is starting to climb out of that same pool. I don't think this is going to make any project switch from Mono to Java overnight, but this is certainly going to make some people think twice. Could this be the beginning of the end for .NET on anything but Windows?


Object Refinery Limited has released JFreeChart 1.0.3. This release features a new DialPlot class, a new XYErrorBarRenderer class, updatable markers, performance improvements for the time period classes, a sortable pie dataset, various new IntervalXYDataset implementations, and the usual slew of bug fixes. JFreeChart is free software under the terms of the GNU Lesser General Public Licence (LGPL), and requires Java version 1.3.1 or later.

Saturday, November 18, 2006 (Permalink)

Kent Beck and David Saff have released JUnit 4.2. Version 4.2 is a bug fix release. JUnit 4 takes advantage of Java 5 features like annotations, varargs, and generics to simplify unit testing still further. If you're committed to Java 5, then JUnit 4 is big leap forward. Unfortunately while JUnit 4 is backward and forwards compatible with JUnit 3 test suites and test runners, it's completely incompatible with Java 1.4 and earlier so I'm afraid most of us will be sticking with JUnit 3 for some years to come.


JetBrains has released IntelliJ IDEA 6.0.2. This is a bug fix release. IDEA is $499 payware. Upgrades from pre-6.0 versions are $299.

Friday, November 17, 2006 (Permalink)

Based on my initial tests as well as reading a little deeper, I think what Sun is releasing under the GPL is the Java 7 source tree, a.k.a. Dolphin. This opens up several obvious projects. Take the Java 7 sources, rip out the new pieces, and create open source versions for Java 6, Java 5, and Java 1.4. Another obvious project is porting this to other platforms. If Apple doesn't GPL their VM, I'd definitely be interested in a third-party port.

Thursday, November 16, 2006 (Permalink)

IBM's alphaWorks has updated the IBM Thread and Monitor Dump Analyzer for Java to version 1.0.4:

During the run time of a Java process, some Java Virtual Machiness (JVMs) may not respond predictably and oftentimes seem to hang up for a long time or until JVM shutdown occurs. It is not easy to determine the root cause of these sorts of problems.

By triggering a javacore when a Java process does not respond, it is possible to collect diagnostic information related to the JVM and a Java application captured at a particular point during execution. For example, the information can be about the operating system, the application environment, threads, native stack, locks, and memory. The exact contents are dependent on the platform on which the application is running.

On some platforms, and in some cases, javacore is known as "javadump." The code that creates javacore is part of the JVM. One can control it by using environment variables and run-time switches. By default, a javacore occurs when the JVM terminates unexpectedly. A javacore can also be triggered by sending specific signals to the JVM. Although javacore or javadump is present in Sun Solaris JVMs, much of the content of the javacore is added by IBM and, therefore, is present only in IBM JVMs.

IBM Thread and Monitor Dump Analyzer for Java Technology analyzes javacore and diagnoses monitor locks and thread activities in order to identify the root cause of hangs, deadlocks, and resource contention or monitor bottlenecks.


Michael B. Allen has posted jCIFS 1.2.10, 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 1.2.10 now supports long Unicode share name enumeration and MSRPC.

Wednesday, November 15, 2006 (Permalink)

NetMind Consulting has released Simple Persistence for Java 2.0.0, a free-as-in-speech (LGPL) library for storing Java Beans in relational databases. Queries return lists.


Micromata has released Transec, a free-as-in-speech (GPL) JSP tag library for secure online authentication, even in the presence of key loggers and spyware.


Version 3.3.2 of EJBCA, an open source, Java 2 Enterprise Edition (J2EE) Certificate Authority, has been released. EJBCA can be used standalone or integrated into other J2EE application. It supports multiple levels of certificate authorities, individual enrollment and batch production of certificates, PKCS12 and PEM export, configurable certificate contents. revocation and certificate revocation lists, and more. This release adds a new hart token profile and fixes bugs. EJBCA is published under the LGPL.


TMate has released SVNKit 1.1, a pure Java Subversion client library formerly known as JavaSVN. Version 1.1 adds support for file system repositories, Subversion 1.4.2, and repository replication.


Peter Arrenbrecht has released JCite 1.6. According to Arrenbrecht, "JCite makes it possible to cite snippets of Java source code in your HTML documents - API documentation, for instance. The snippets are copied out of real, live Java class source files, which should be part of the regular build. This guarantees that the cited snippets are always up-to-date." This release adds new citelets for citing Excel sheets and plain text/HTML snippets. JCite is published under a BSD license.


JPOX 1.1.4, an open source implementation of Java Data Objects (JDO) 2.0, has been released. that provides transparent persistence to Java objects. It supports most major SQL databases and can be queried using either JDOQL or SQL. 1.1.4 is a bug fix release. It's published under the Apache 2.0 License.

Tuesday, November 14, 2006 (Permalink)

Further thoughts on the GPLing of Java today:

  • Jonathan Schwartz and Rich Green are no Steve Jobs, though they were trying. I simply zoned out through most of their presentation. Even their "one more thing" (open sourcing Duke) had in fact been announced on this site hours earlier. I think I read it on some Sun employee's blog somewhere. If that employee worked for Apple, they'd have been escorted off the premises by now.

  • Solaris may soon be GPL'd as well. Sun is considering that. This would be a good thing. License proliferation is a pain.

  • Apparently the Novell-Microsoft deal annoyed Sun so much that they chose the GPL out of spite at the last minute. Thanks Microsoft!

  • One thing I'd love to see come out of this is a more open bug database. Lord knows Bugzilla isn't an ideal system but at least Eclipse, Mozilla and other open source projects that use it let you see what you've submitted and comment on and update the reports. I just submitted a bug involving POSTing with the HttpURLConnection classes and 301 redirects, but I can't link to the bug report yet; and I can't expand on my report until they've reviewed it, even though something else relevant just occurred to me.

  • It's a shame the Java class where the bug appeared isn't open source yet, because this particular bug actually falls smack in the middle of my expertise. Thus it's exactly the sort of bug I could and would submit a patch for given the opportunity.

It takes a while to turn a ship, though. There's more to making a project open source than merely changing the license, and I think Sun knows that. Bug tracking's just part of it. They've got fifteen years of proprietary build systems, code formatting, contracts, and other details to straighten out, and this won't happen over night. However, I'm now confident that it will happen. That's a very good thing. Kudos all around to Sun. I haven't been this excited about Java in years.

Monday, November 13, 2006 (Permalink)

Sun is releasing Java under the Gnu General Public License (GPL) today. More specifically:

  • They are releasing a full "buildable" version of the Java Platform Micro Edition (Java ME). This includes "the source code for Sun's feature phone Java ME implementation, the next generation version of the platform that currently enables rich mobile data services in over 1.5 billion handsets. Also available is Sun's source code for the Java ME testing and compatibility kit framework, the foundation for Sun's Java ME compatibility tests. Later this year, Sun will release additional source code including its advanced operation system phone implementation and the framework for the Java Device Test Suite."

  • They are releasing only part of the Java Standard Edition today, Specifically, they are releasing:

    My guess is that they don't have quite all the legal details worked out for the standard libraries and some other tools, but the other pieces should follow by next March.

    Part of the hold up is simply that Java 6 is not currently fully buildable with open source tools. That is, you can't just type "ant" and build the whole thing. Java 7 is much better in this respect, and Java 6 should be by the time it's released.

  • The Technical Compatibility Kit (TCK) might not be open sourced; or if it is, it may not be released under the GPL. That decision has not been made yet.

  • This will be part of the OpenJDK Project on java.net.

  • Sun will also be continuing with the existing, non-free, "commercial" license for those who prefer that. A few components licensed from third parties may only be available in this version, but I don't expect this will be anything too major or irreplaceable.

  • Updated: Java programs compiled and run against the GPL VM, but which do not include any Sun code except by linking to it will not become infected by the GPL. According to Sun executive vice president Rich Green, ""In the case of Java SE we're enhancing with the classpath exception, so when you're working on top or shipping applications with the libraries and virtual machine, you're not affected by the Java license."

  • Possibly the existing free-beer license will go away. Instead there'll be two licenses: GPL and a contracted, commercial license featuring indemnification which you'll have to pay Sun quite a bit of money for. Most of us will just use the GPL version. The commercial version is essentially what's been sold to licensees like Apple and IBM that redistribute derivative VMs.

  • GPL licenses do not require any agreement on the part of users. However I expect Sun won't realize this, and will put it in one of their annoying click-to-install screens anyway. If they do, I may just go ahead and repackage the JDK under the real GPL without any click-through licenses (if no one else beats me to it).

  • Will Apple, IBM, and other current commercial licensees open source their VMs? That's really up to each one. It may also require contract renegotiation, since the existing contracts may not have foreseen the possibility of an open source Java, and may explicitly take away rights the GPL would grant. I'm expect that Sun won't stand in the way of any current licensees that want to follow in their footsteps, and release their own VMs.

  • I'm not sure what this means for independent efforts to develop a free VM such as Gnu Classpath and Apache Harmony. License incompatibilities prevent these projects from accepting Sun code, even under the GPL. Kaffe, however, is GPL'd and should now be able to freely trade code with Sun. On the other hand, it may well become an also-ran since it's primary advantage relative to the standard VM was the license. That advantage has now been neutralized.

  • Forks are allowed (of course) but still cannot use the word "Java" or the coffee cup logo. Duke, however, is now fair game.

  • The Glassfish Java Enterprise Edition application server, currently available as open source under the Common Development and Distribution License (CDDL), will also be dual licensed under the GPL by March of next year.

  • Debian and Ubuntu will finally be able to bundle a complete, current Java virtual machine. It probably won't quite make Feisty Fawn (unless Sun can shave a few months off their schedule or Ubuntu is willing to slip their release dates) but it should be in the release after that. Going forward this is going to be very important for Java's adoption on the desktop. It should make Java a much more attractive option for Linux development.

Details will be provided in an official announcement in Real Media at 12:30 P.M. EST today. I'll be listening carefully for the answers to these questions.

Sunday, November 12, 2006 (Permalink)

It's official. Sun "is releasing its implementations of Java technology as free software under the GNU General Public License version two (GPLv2). Available today, [Editor's note: actually tomorrow, Monday] are the first pieces of source code for Sun's implementation of Java Platform Standard Edition (Java SE) and a buildable implementation of Java Platform Micro Edition (Java ME). Details are available at: at http://www.sun.com/opensource/java. In addition, Sun is adding the GPLv2 license to Java Platform Enterprise Edition (Java EE), which has been available for over a year under the Common Development and Distribution License (CDDL) through Project GlassFish(TM) at http://glassfish.dev.java.net." I've been saying this would happen sooner or later for the last ten years, and I'm glad it's finally sooner than later. More details tomorrow.


I've finally gotten around to restoring the Fibonacci servers on elharo.com described in Processing XML with Java, after last spring's migration from Linux to Mac OS X. This involved rewriting the services in PHP instead of Java. Tomcat felt largely responsible for the constant failure of the servers over the last few years, and it seemed like way too heavyweight to install and maintain just for these few simple programs.

Saturday, November 11, 2006 (Permalink)

Novell has released Mono 1.2, an open source implementation of Microsoft's .NET framework that runs on Linux, Unix, Mac OS X, and Windows. New features in this release include:

  • The Windows.Forms 1.1 API
  • System.Drawing
  • System.ServiceProcess
  • System.Transactions
  • C# 2.0 compiler
  • Ports to x86, PowerPC, ARM, s390, SPARC, x86-64, s390x, and Itanium (IA64)

Joshua Marinacci has started an incubator project for the Misc API (org.jdesktop.jdic.misc) for small buts of native functionality. Currently this package contains the following APIs:

  • Alert API: indicate that a certain program (usually not the program currently focused) needs the user's attention.  On MacOSX this bounces the app's Dock icon. On Windows this flashes the task bar. Unix not supported yet.
  • Volume API: get, set, and monitor the system volume. (Mac OSX only)
  • DockMenu API: set a right click menu on the Dock icon (Mac OSX only)
  • Desktop background wallpaper API: set the background of the desktop. (Windows only)
  • Music Player API: Control the user's default music player (itunes, winamp, etc). (Mac iTunes currently supported).

Java 1.4 or later is required.


Jean-Marie Dautelle has released Javolution 4.0.2, a library that supports hard real-time compliant, multithreaded programming through concurrent algorithms, thread-safe collection classes, preallocated objects, and object recycling. It also includes a forked SAX that replaces java.lang.String with CharArray and CharSequence "to avoid forcing dynamic object allocations." Javolution is published under a BSD license.

Friday, November 10, 2006 (Permalink)

Timesys has posted the third maintenance release of JSR-1 Real-time Specification for Java . "The first two changes close a scoped memory leak. If an AEH uses the default initial memory area, 1.0.1's semantic 17 will prevent that memory area from ever returning to a zero reference count. In the case of a thread, the reference count could return to zero if and only if the thread is started and terminates. This set of changes primarily revises semantic 17 so being an initial memory area is only a source of non-zero reference if it is not the default initial memory area. This closes the above leak."


Sun's posted a maintenance release of Java Specification Request 118, Mobile Information Device Profile 2.0. MIDP describes "the core application functionality required by mobile applications - including the user interface, network connectivity, local data storage, and application lifecycle management - packaged as a standardized Java runtime environment and set of Java APIs." This release, 2.1, makes over 40 assorted changes, mostly relating to device support for various features.


Nokia has posted the early draft review of JSR-293 Location API 2.0 to the JCP. According to the draft:

This specification defines a Java ME Optional Package that enables mobile location-based applications for resource limited devices (referred to as 'terminals' in the following). The API is designed to be a compact and generic API that produces information about the present geographic location of the terminal to Java applications. This API covers obtaining information about the present geographic location and orientation of the terminal and accessing a database of known landmarks stored in the terminal [ JSR179].

The Location API 2.0 for Java ME extends JSR 179 Location API. This means that JSR 179 specification is part of the JSR 293 specification. Therefore applications written for Location API are upwards compatible with Location API 2.0 and will work without any changes in the Location API 2.0 complian terminals. In addition to minor clarifications to Location API [ JSR179], the version 2.0 adds several new features to the API. These features include:

  • a format and a mechanism for exchanging (importing and exporting) landmarks
  • a set of global landmark categories that are localized and present in all Location API 2.0 compliant terminals
  • interfaces for accessing location based service like map, navigation and geocoding services

Nokia and Sun have posted the public review draft of JSR-280 XML API for JavaTM ME . to the Java Community Process (JCP). This attempts to subset SAX, StAX, JAXP, and DOM to run in small devices. This strikes me as such as bad idea, it's hard to believe they're serious. If size is such a concern (and in small devices it is) then pick one API and stick with it; or design a new one. Don't try to pull out half of each. Including both SAX and StAX in particular really smells of design by committee. There's no need to force both on device vendors. Pick one and be done with it. Comments are due by November 13.


Subversion 1.4.2, an open source version control system designed to replace CVS, has been released. 1.4.2 fixes bugs and improves documentation.


Alan Ezust has uploaded the eighth pre-release of jEdit 4.3, an open source programmer's editor written in Java with extensive plug-in support and my preferred text editor on Windows and Unix. This release fixes bugs and cleans up the API.


JScape has released the Secure FTP Factory 6.1, a $599 payware class library for FTP, SFTP, and FTPS (FTP over SSL) protocols. This release adds relative path support and Sftp.getInputStream and Sftp.getOutputStream methods. It also fixes bugs.


Jayasoft has released Ivy 1.4.1, a free Java based dependency manager, that features transitive dependencies, Ant integration, Maven compatibility, and continuous integration. Some bugs have been fixed in this release.


Nokia has posted the maintenance review draft of JSR-135, Mobile Media API. The changes seem fairly minor, and mostly clarify a few unclear parts of the existing spec.

Thursday, November 9, 2006 (Permalink)

Smardec has released Allatori 1.3, a $775 payware Java byte code obfuscator.


David Cranshaw has released SQLiteJDBC 029, a JDBC driver for the SQLite database. "It is written as a thin driver on top of the SQLite 3.3.x C API. The native JNI library has SQLite compiled into it so all you need to do is include the two files packaged above in your project." It's published under the BSD license. This release fixes bugs.


The Big Faceless Organization has released the Big Faceless PDF Library 2.7.5, a $700 payware (more if you want support) Java class library for creating PDF documents. The $1300 Extended Edition adds the AcroForms support, digital signatures, and the ability to import and edit and existing PDF documents. Version 2.7.5 improves performance and supports certifying signatures that enable restrictions to be placed on the types of changes that can be made to a PDF after it has been signed.

Wednesday, November 8, 2006 (Permalink)

The Eclipse Project has posted the third milestone of Eclipse 3.3, 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. New features in this release. mostly minor, include:

  • DateTime control
  • Undo support for resource operations
  • Mixed mode launch APIs
  • Debug command API
  • More aggressive content assistance
  • Code clean up on save
  • Convert anonymous to nested class as quick assist

IBM developerWorks has published my latest article, Simple Xalan extension functions: Mixing Java with XSLT. Xalan can invoke almost any method in almost any Java class in the classpath. Taking advantage of this can improve performance, provide features like trigonometric functions that aren't available in XSLT, perform file I/O, talk to databases and network servers, or implement algorithms that are easy to write in Java but hard to write in XSLT. This article teaches the basics of invoking Java code from Xalan.

Tuesday, November 7, 2006 (Permalink)

Adobe has open sourced the JavaScript engine in Flash under the auspices of the Mozilla Foundation. I don't think this is all of Flash, but I could be wrong abnout that. (I'm not a big Flash person.) Specifically, they are releasing

the ActionScript™ Virtual Machine, the powerful standards-based scripting language engine in Adobe® Flash® Player, to the Mozilla Foundation. Mozilla will host a new open source project, called Tamarin, to accelerate the development of this standards-based approach for creating rich and engaging Web applications.

The Tamarin project will implement the final version of the ECMAScript Edition 4 standard language, which Mozilla will use within the next generation of SpiderMonkey, the core JavaScript engine embedded in Firefox®, Mozilla’s free Web browser. As of today, developers working on SpiderMonkey will have access to the Tamarin code in the Mozilla CVS repository via the project page located at www.mozilla.org/projects/tamarin/. Contributions to the code will be managed by a governing body of developers from both Adobe and Mozilla.

This code is licensed under the same Mozilla tri-license (MPL/GPL/LGPL) as other Mozilla code. They even beat Java out the door. Isn't that ironic?

Monday, November 6, 2006 (Permalink)

Tarantula Consulting has released JSFToolbox 1.2, a $149 payware suite of JSF design and coding extensions for Dreamweaver. Featuires include:

  • Visual JSF tags, inspectors, and drag-and-drop toolbars
  • Round-trip engineering with Java development environments
  • Design-time introspection of JSF beans, components, and configuration files
  • Web page internationalization with message bundles and locales
  • JSF and JSP expression language syntax auto-complete
  • Comprehensive documentation with code samples
  • Context-sensitive help for JSF Core and JSF HTML tag libraries

>
Sunday, November 5, 2006 (Permalink)

Peter Arrenbrecht has released JCite 1.5. According to Arrenbrecht, "JCite makes it possible to cite snippets of Java source code in your HTML documents - API documentation, for instance. The snippets are copied out of real, live Java class source files, which should be part of the regular build. This guarantees that the cited snippets are always up-to-date." JCite is published under a BSD license.


Motorola and Nokia have posted the public review draft of JSR-272 Mobile Broadcast Service API for Handheld Terminals to the Java Community Process (JCP). According to the JSR,

The proposed specification specifies an Optional Package API for client Java applications for interactive broadcasting purposes for mobile terminals. The API enables the Java applications to receive, exploit, and interact (via the interactive channel, for example wireless cellular link) with content received over a digital broadcast link. The API is targeted for CLDC/MIDP based mobile terminals.

Comments are due by November 6.

Saturday, November 4, 2006 (Permalink)

Sun has posted the proposed final draft of JSR-270 JavaTM SE 6 Release Contents to the Java Community Process (JCP). I don't think there are any surprises here, but it's worth reading over. Component JSRs include:

  • 105 XML Digital-Signature APIs
  • 173 Streaming API for XML (StAX)
  • 181 Web-Services Metadata
  • 199 Java Compiler API
  • 202 Java Class-File Specification Update
  • 221 JDBC 4.0 Early Draft Review
  • 222 Java Architecture for XML Binding (JAXB) 2.0
  • 223 Scripting for the Java Platform
  • 224 Java API for XML-Based Web Services (JAX-WS) 2.0
  • 250 Common Annotations Proposed Final Draft
  • 269 Pluggable Annotation-Processing API

Other possible additions include:

  • System-tray support \
  • Pluggable locale data
  • JTable sorting, filtering, and highlighting
  • Attach-on-demand
  • Critical file-I/O enhancements
  • java.util.concurrent updates
  • Password prompting
  • Generalized MBean descriptors
  • MXBeans
  • GIF image writer
  • Access to desktop helper applications>
  • Fast splash screens 137
  • Improved modal dialogs
  • Resource-bundle enhancements
  • Unicode string normalization
  • Baseline/gap APIs
  • Easy-to-use Swing layout manager
  • Improve Swing drag-&-drop
  • JTabbedPane: Tabs as components
  • Text-component printing
  • Access to heap contents
  • Multiple simultaneous agents
  • Array reallocation
  • Deques
  • Sorted sets and maps with bidirectional navigation
  • Core IEEE 754 recommended functions
  • Service-provider lookup
  • Generalized lock monitoring
  • Generic annotations for MBean descriptor contents
  • Internationalized domain names
  • Programmatic access to network parameters
  • Simple HTTP cookie manager

Sun has also posted Maintenance Review 2 for the JavaTM Platform, Standard Edition, Version 6. "This document provides descriptions of specification changes being made in version 6 of the Java™ Platform, Standard Edition (Java™ SE 6). Version 6 includes a set of new Java Specification Requests (JSRs) that introduce major new functionality. This Maintenance Review does not cover new APIs defined through those JSRs; it documents only smaller changes made under the JCP Maintenance Review process. Moreover, this Maintenance Review does not cover updates to specifications that are contained in Java SE 6 but that are also available stand-alone. Separate Maintenance Reviews will be held for any changes to such specifications. The descriptions in this document correspond to platform changes made since the release of Java SE 6 Beta. The specification change descriptions are provided for purposes of Java Community Process public maintenance review." There are lots of small but significant changes throughout the API. For instance, it's now possible to set the buffer size for pipe streams. Comments are due by November 13.


Sun has posted the sixth maintenance review change log for JSR 154: Java Servlet API 2.5 . Changes appear quite minor. Comments are due by November 6.


Sun has also posted a maintenance review change log for JSR 245: Java Server Pages 1.1 . "The purpose for the proposed changes to JSR-245, JavaServerTM Pages 2.1 Specification (JSP 2.1) is to take the expression language (EL) out of JSP 2.1 and make it a self-contained specification. The next version of the JSP specification will remove the description of the expression language and will instead reference and depend on the EL specification." Comments are due by November 6.


Motorola and Nokia have posted the finished draft of JSR-232 Mobile Operational Management to the Java Community Process (JCP). According to the document:

The Mobile Operational Management API specification defines an optional package1 for the Java 2 Platform, Micro Edition (J2METM). The specification has been produced in response to Java Specification Request 232 (JSR-232), and specifies the a component management framework that will allow mobile devices based on the J2ME TM Connected Device Configuration to evolve and adapt their capabilities by installing new components on demand. These components can be a combination of active elements with no user interaction (services), active elements with user interfaces (applications), and shared libraries (both native and Java). The framework will also provide for multiple applications to coordinate the use of sharable services. In order to ensure a safe environment, these components will be controlled via a mandatory security model based on the JavaTM 2 Platform security model.


Sun has posted Maintenance Review 2 for Java Data Objects 2. The changes look quite significant, and include better use of java 5 features, as well as documentation clarifications and assorted new methods. Comments are due by November 20.


Oracle has posted the public draft review of JSR-247 Data Mining 2.0 to the JCP. According to the draft,

The Java Data Mining (JDM) specification addresses the need for a pure Java API to facilitate development of data mining-enabled applications. Whereas the term “data mining” can be interpreted in different ways, we distinguish it from the querying of large databases or online analytical processing (OLAP), which are largely deductive technologies. Querying and OLAP rely on users to formulate queries and design constructs which can then be manipulated and interrogated. Data mining, and the more fashionable term predictive analytics, involves inductive technologies, that is, those that extract previously unknown knowledge from a potentially large volume of data.

Existing data mining APIs are proprietary. Using JDM, implementers of data mining applications can benefit from a single, standard API that will be understood by a wide variety of developers writing applications and components running on the Java™ 2 Platform. Similarly, data mining applications can be coded against a single API that is independent of the underlying data mining system. JDM targets for the JavaTM 2 Platform, Enterprise Edition (J2EETM) and Standard Edition (J2SETM).

In JDM 2.0, data mining [Mitchell1997, BL1997] includes the functional areas of classification, regression, attribute importance, clustering, association, feature extraction, time series, and anomaly detection. These are supported by a variety of learning algorithms as decision trees, neural networks, Naive Bayes, Support Vector Machine, K-Means, Apriori, Non-negative Matrix Factorization, and ARIMA.

JDM supports common data mining operations such as model build, test, and apply (score). JDM also supports the creation, persistence, access, and maintenance of metadata supporting mining activities. Also in JDM 2.0, the standard includes extensions for basic text mining, statistics, and transformations integrated with the mining process. A particular implementation of this specification may not necessarily support all interfaces and services defined by JDM. However, JDM provides a mechanism for discovery of supported interfaces and capabilities.

In JDM 1.0, we leveraged data mining standards such the Object Management Group’s Common Warehouse Metadata (CWM) [CWM, CWM-DM], ISO’s SQL/MM for Data Mining [SQL/MM-DM], and the Data Mining Group’s Predictive Model Markup Lan- guage (PMML) [PMML]. We continue reviewing these standards for JDM 2.0 to help ensure greater consistency across standards where possible. 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.

Comments are due by December 4.


Nokia has released the finished version of JSR 257, Contactless Communication API. This is basically an API for tracking RFID devices attached to products, pets, people, and anything else a corporation or government cares to know about.


Nokia and Vodafone have posted the proposed final draft of Java Specification Request 258, Mobile User Interface Customization API, to the Java Community Process. According to the draft,

This specification defines Mobile User Interface Customization API ( JSR 258), a Java Micro Edition optional package that allows software developers to query and manipulate the appearance of a mobile device user interface, and introduces a common exchange format for appearance data, to be used by content developers and distributors.

Personal mobile devices are typically equipped with a graphical user interface. It provides a rich user experience, and in many devices it can also be customized. Users are able to change background images, color schemes, ringing tones and alert tones, and other features to their liking. Proprietary methods of grouping collections of customization settings and related content as "themes" have been established by device manufacturers, to enable end users to more easily change them in one operation.

The kind of user interface customization related to appearance described above has become increasingly popular as the graphics and sound capabilities of mobile devices have been greatly enhanced. Different user interface themes are used not only by individual users to personalize their devices, but also by telecommunications operators/carriers and device manufacturers to establish their brand and make the user experience more appealing, more seamless and more predictable in terms of appearance.

In addition to systemwide user interface customizations, also individual applications can often be customized to have a distinct look, using both application-specific user interface elements created by the application and customized appearances for system user interface elements.


Motorola has posted the public review draft of JSR-263 Fault Management API to the Java Community Process (JCP). Quoting the executive summary,

Currently, the OSS fault management functionality supported by an OSS through JavaTM API is contained within the OSS Quality of Service API (JSR90). A software vendor that wishes to only implement fault management functionality is faced with the dilemma of being “partially compliant” to the OSS Quality of Service API”; and partially compliant is simply a statement that software vendors would prefer not to make.

This API, The OSS Fault Management API (JSR 263) was initiated to separate the two APIs, fault management and performance management from each other to enable software vendors to implement those portions that they would like to implement, and to be able to make the statement that their product is compliant to one or both of the aforementioned APIs.

The OSS Fault Management API focuses creating an interoperable fault management API that is compatible with the 3GPP Release 6 Alarm IRP. In accordance with the OSS through JavaTM Design Guidelines, the API defines JVT, XML/JMS and Web Service implementation profiles.

The design of the API leverages the design patterns defined within the aforementioned OSS through JavaTM Design Guidelines to ensure that the look, feel and usage of the OSS Fault Management API is familiar to anyone that has studied, implemented or used another of the OSS through

Comments are due by November 6.

Friday, November 3, 2006 (Permalink)

The Apache Project has released Geronimo 1.1.1, an open source J2EE application server. This release fixes numerous bugs. It's published under the Apache 2.0 license, natch.


The ObjectWeb Consortium has released ASM 3.0, "a Java bytecode manipulation framework. It can be used to dynamically generate stub classes or other proxy classes, directly in binary form, or to dynamically modify classes at load time, i.e., just before they are loaded into the Java Virtual Machine." Version 3.0 improves supports abstract and native methods, adds a new API for instruction lists in tree package, a new JSRInliner class, a CodeSizeEvaluator class, and adds several new methods to existing classes.


David Cranshaw has released SQLiteJDBC 028, a JDBC driver for the SQLite database. "It is written as a thin driver on top of the SQLite 3.3.x C API. The native JNI library has SQLite compiled into it so all you need to do is include the two files packaged above in your project." It's published under the BSD license. This release fixes bugs.

Thursday, November 2, 2006 (Permalink)

Sun has posted the second maintenance review change log for JSR 926: Java 3D . There are quite a few significant additions proposed including:

  • Non-power-of-two textures
  • NIO image buffer support for textures
  • By-reference support for geometry indices
  • Rendering error listeners
  • Vecmath accessors/mutators
  • Deprecated API

Comments are due by December 4.


The Jakarta Apache Project has posted the first beta of HTTPClient 3.1, an open source (Apache 2.0 license) HTTP 1.0/1.1 pure Java library for performing assorted HTTP operations. "Although the java.net 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." Features include:

  • GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE
  • HTTPS (HTTP over SSL)
  • HTTP proxies
  • Tunneled HTTPS connections through HTTP proxies, via the CONNECT method.
  • Transparent connections through SOCKS proxies (version 4 & 5) using native Java socket support.
  • Basic, Digest, encrypting NTLM (NT Lan Manager), and pluggable custom authentication
  • Multi-Part form POST
  • "Connection management support for use in multi-threaded applications. Supports setting the maximum total connections as well as the maximum connections per host. Detects and closes stale connections."
  • Cookies
  • KeepAlive in HTTP/1.0 and persistence in HTTP/1.1
  • Connection timeouts

According to Micahel Becke, "This version finalizes the RFC 2965 cookie management API and adds a number of improvements to the HTTP connection management classes."


Cedric Beust has released TestNG 5.3, an open source testing (unit, functional, and integration) framework based on annotations. Version 5.3 adds Annotation Transformers so you can "modify the content of all the annotations at runtime. This is especially useful if the annotations in the source code are right most of the time, but there are a few situations where you'd like to override their value." TestNG is released under the Apache Software License. Java 1.4 or later is required.


Apple has released version 2.4.1 of Xcode, "Apple's tool suite and integrated development environment (IDE) for creating Mac OS X Universal Binaries that run natively on PowerPC and Intel-based Macintosh computers. The IDE provides a powerful user interface to many industry-standard and open-source tools, including GCC, javac, jikes, and GDB. Xcode is designed to fully support the Carbon and Cocoa frameworks and Java. It contains templates for creating applications, frameworks, libraries, plug-ins, Java applications and applets, and command-line tools. Developers can use Xcode to construct a user interface, test code performance, and perform many other common development tasks." This release fixes bugs including some security holes in GDB. Xcode and its updates are free beer. With Mac OS X Apple wisely stopped charging for developer tools. You'll still need an ADC membership (including the free membership) to get a copy.


JCraft, Inc has posted JSch 0.1.30, an open source, pure Java implementation of SSH2 that supports port forwarding, X11 forwarding, file transfer, etc. This version adds gssapi-with-mic authentication, a hashed known_hosts file, and the zlib@openssh.com packet compression method, Java 1.2 or later and the JCE are required. JSch is released under a BSD license.

Wednesday, November 1, 2006 (Permalink)

Sun has posted the proposed final draft of JSR-199 Java Compiler API to the Java Community Process (JCP). According to the draft:

The Java™ programming language compiler API is a set of interfaces that describes the functions provided by a compiler. This API has three main objectives:

  • Allow invocation of a compiler from a program using standardized interfaces.
  • Provide interfaces enabling the compiler to report diagnostics in a structured way.
  • Provide interfaces enabling clients of the compiler to override how file objects are found. "File objects" is a file abstraction.

I've only had a chance to skim the API so far, but at first glance it strikes me as needlessly complex. Did they really need to invent a completely new file system interface just to manage compilation of a few files? I strongly suspect the working group could cut the number of classes and methods in half without losing anything, and probably cut it by two thirds without losing anything most programmers would miss. This looks like yet another case of the overly generic, overly abstract diseases that infects many of the smartest developers. I suspect someone needs to walk through the hallways at Sun one weekend and surreptitously remove every copy of Design Patterns from programmers' bookshelves. Abstract Factory and Factory Method are solutions to occasional and uncommon tough problems, not the first thing you should pull out of your toolbox for every class.


Sun has posted a beta of the Sun Java Toolkit 1.0 for CDC. This J2ME emulator supports the Connected Device Configuration 1.1, Foundation Profile 1.1, Personal Basis Profile 1.1, and the Advanced Graphics User Interface 1.0..


Sun has posted the first maintenance review change log for JSR 252: JavaServer Faces. There are quite a few significant changes, errata, and clarifications proposed.


Day Software has posted the early draft review of JSR-283 Content Repository for Java Technology API 2.0 to the JCP. According to the JSR:

Since this JSR represents an enhancement of JSR-170, the same general goals apply to this JSR as to JSR-170 (from the JSR-170 proposal):

The aim is to produce a content repository API that provides an implementation independent way to access content bi-directionally on a granular level. A content repository is a high-level information management system that is a superset of traditional data repositories. A content repository implements ?content services? such as: author based versioning, full textual searching, fine grained access control, content categorization and content event monitoring. It is these ?content services? that differentiate a content repository from a data repository. Many of today?s (web) applications interact with content repositories in various ways. This API proposes that content repositories have a dedicated, standard way of interaction with applications that deal with content. This API will focus on transactional read/write access, binary content (stream operations), textual content, full-text searching, filtering, observation, versioning, handling of hard and soft structured content.

In particular, the following functional areas will be reviewed by the expert group for possible inclusion in version 2.0:

  • Extensions in the area of management of a content repository such as access control management, workspace and nodetype management, retention aspects of content or repository construction patterns.
  • Improvement of content repository interoperability through the addition of new standardized node types, including node types for meta information and internationalization.
  • Extensions to content modelling capabilities.
  • Federation, cross-repository and cross-workspace functionality.
  • Active development of existing query-languages, versioning and observation.
  • Remoting and client/server protocol mappings.
  • Possibly other enhancements.

Tryllian Solutions BV has released the Agent Development Kit 3.2.0, a free-as-in-speech (LGPL) framework for mobile agents written in Java.


Older news:

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