December, 2004 Java News

Friday, December 31, 2004

Sun's posted the call for papers for JavaOne 2005. Submissions are due by January 31. Mostly, though, speaking slots at this conference seem to be increasingly restricted to Sun employees. From year to year it gets harder for anyone else to get a slot, and Sun exercises very tight control of the conference to make sure no one goes to far astray from the party line.

Eric Lafortune has released ProGuard 3.2, a free-as-in-speech (GPL) "class file shrinker, optimizer, and obfuscator. It can detect and remove unused classes, fields, methods, and attributes. It can then optimize bytecode and remove unused instructions. Finally, it can rename the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer." Version 3.2 fixes bugs and improves performance and documentation.

Rob Lougher has releeased JamVM 1.2.3, 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. 1.2.3 is mostly a bug fix release. JamVM only interprets code. It does not have a Just-In-Time compiler.

YourKit, LLC has posted the first public beta of YourKit Java Profiler 4.0, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features Automation of memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA, Borland JBuilder integration. Version 4.0 adds support for Mac OS X and simplifies analysis of custom class loaders and the classes they load.

Wednesday, December 29, 2004

Etienne Gagnon has released version 1.1.8 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.8 can now run Eclipse 2 and 3. It also improves support for Jikes and Quicktime/Java. SableVM depends on GNU Classpath. This release updates the bundled version of GNU Classpath and can now run with unmodified versions of GNU Classpath. SableVM is published under the GNU Lesser General Public License (LGPL).

Monday, December 27, 2004

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

Saturday, December 25, 2004

BlueJ 2.0.3, a free integrated development environment (IDE) for Java aimed at education, has been released. 2.0.3 is a bug fix release.

Thursday, December 23, 2004

I'll be travelling for the holidays for the next week or so. Updates will likely be fairly slow until I return.

Subversion 1.1.2, an open source version control system designed to replace CVS, has been released. 1.1.2 is a bug fix release.

Wednesday, December 22, 2004

The Apache Portal Project has posted the second release candidate of Pluto 1.0.1, the open source reference implementation of the Java Portlet Specification. According to the web page,

Portlets are designed to run in the context of a portal. They are written to the Portlet API which are similar to the Servlet API.

In contrast to servlets, portlets may not do things like sending redirects or errors to browsers directly, forwarding requests or writing arbitrary markup to the output stream to assure that they don't distract the portal web application which uses them. Another difference compared to servlets is that portlets rely on portal specific infrastructure functions such as access to user profile information, standard interface for storing/retrieving persistent settings, getting client information, etc. Generally, portlets are administrated more dynamically than servlets typically are.

A portlet container provides a runtime environment for portlets implemented according to the Portlet API. In this environment portlets can be instantiated, used and finally destroyed. The portlet container is not a stand-alone container like the servlet container; instead it is implemented as a thin layer on top of the servlet container and reuses the functionality provided by the servlet container.

Pluto serves as portlet container that implements the Portlet API and offers developers a working example platform from which they can test their portlets. However, it's cumbersome to execute and test the portlet container without a driver, in this case, the portal. Pluto's simple portal component is built only on the portlet container's and the JSR 168's requirements. (In contrast, the more sophisticated, Jetspeed project concentrates on the portal itself rather than the portlet container, and considers requirements from other groups.)

Sebastiano Vigna has released version 4.3.2 of fastUtil, a collection of type-specific Java maps and sets with a small memory footprint and faster access and insertion. The classes implement their standard counterpart interfaces such as java.util.Map and can be plugged into existing code. However, they also contain type-specific methods. For instance, the CharList class has not only the usual add(Object o) method but also an add(char c) method. Version 4.3.2 is a bug fix release. fastUtil is published under the Gnu Lesser General Public License (LGPL).

Gaudenz Alder has released JGraph 5.2.1, a free-as-in-speech (GPL/MPL) graph component for Swing that requires Java 1.4 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. Version 5.2.1 fixes some bugs, adds a few switches, re-enables auto selection, and adds new utility methods to the layout cache and graph model.

Tuesday, December 21, 2004

I am pleased to announce what I expect is the final beta and release candidate of XOM 1.0, my open source dual streaming/tree-based API for processing XML with Java. XOM focuses on correctness, simplicity, and performance, in that order. This final (I hope) beta implements a number of improvements to performance in various areas of the API. Depending on the nature of your programs and documents, you should see speed-ups of somewhere between 0 and 20% compared to the previous beta. There are no over-the-covers changes in this release. Under-the-covers a few classes have undergone major rewrites, and a couple of non-public classes have been removed. All the unit tests (now over a thousand of them) still pass, but please do check this release out with your own code. If no problems are identified in this beta, I expect to officially release XOM 1.0 possibly as early as tomorrow, and certainly by the end of the year.

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

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

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

How does it work?

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

Version 1.1 adds the ability to validate Eclipse SWT GUIs, generate Java source for GUIs constructed by the builder, and embed Java source code in RIB documents.

Monday, December 20, 2004

It never rains but it pours. Today, I have not one, not two, but three new articles to announce. First off, has posted an interview Chris Adamson conducted with me over the last couple of weeks. The discussion covers network programming in Java, with a little XML thrown in on the side. The interview was occasioned by the recent publication of the third edition of Java Network Programming. OnJava has also excerpted parts of Chapter 7, URLs and URIs, Proxies and Passwords, on their web site. The complete version of Chapter 7 is now available in PDF format from O'Reilly's website. The complete book is online at Safari, but you have to pay for that. :-)

In an unrelated and long overdue matter, I have finally written the promised second part of Overloading Int Considered Harmful. This article explains how to make object serialization work with the type-safe enum design pattern and other variants of singleton. It also addresses the issues that arise with these design patterns in multi-classloader environments. Finally, it explores the new enum keyword in Java 1.5, and demonstrates how Java can create multiple, non-equal instances of what are allegedly unique, equal enum constants.

Sunday, December 19, 2004

Beta 8 of Groovy, a JVM hosted scripting language, has been posted. This beta appears to be mostly a bug fix release.

Saturday, December 18, 2004

Sun's posted the fifth snapshot release of Mustang, a.k.a Java 1.6, a.k.a Java 6. This is basically an early development release that includes source code. It's currently published only under the Java Research License. It's available on the usual Sun-supported platforms: Linux, Solaris, and Windows.

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

This release makes various usability improvements and adds two new rules, AvoidProtectedFieldInFinalClass and SystemPrintln.

Friday, December 17, 2004

The Cafes,, and may or may not be unresponsive for a few hours this morning until DNS caches get cleared. I've switched over from my old SDSL line to a faster and cheaper ADSL line, which necessitated a change in the static IP address. However, everything else went unbelieveably smoothly. The line's a lot faster, and I now have absolute control over my firewall and NAT which should make integrating new servers much easier. I should have done this a year ago.

JetBrains is running one of their periodic sales on IDEA, $249 until January 15, half off the usual price.

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

IBM's alphaWorks has updated the JAR Class Finder, an Eclipse plug-in for finding JAR files containing a given class for the Java build path of a project, thus helping fix NoClassDefFound errors. This release adds support for Eclipse 3.1 and removes support for Eclipse 2.x. It also saves the search history across restarts.

Thursday, December 16, 2004

Sun has released NetBeans 4.0, an open source IDE for Java, written in Java. NetBeans is available for Windows, Linux, the Solaris(tm) Operating System and Mac OS X. New features in version 4 include:

Java 1.4.2 or later is required.

I've heard good things about this release, but so far only from people inside Sun. I don't think I've yet noticed anybody outside Sun who prefers NetBeans 4.0 to IntelliJ IDEA or Eclipse. I know some of the people at Sun who are saying how much they like this release, and I don't think they're just parroting the company line. They do honestly like this product. I just wonder what's in the Kool-Aid over there to give them such a different perspective from everyone external to Sun.

The Jakarta Apache Project has released Commons Transaction 1.0. "Commons Transaction aims at providing lightweight, standardized, well tested and efficient implementations of utility classes commonly used in transactional Java programming. Initially there are implementations for multi level locks, transactional collections and transactional file access. There may be additional implementations when the common need for them becomes obvious. However, the complete component shall remain compatible to JDK1.2 and should have minimal dependencies."

The Apache Jakarta Commons Team has released Commons Net 1.3.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, discard, rexec, rcmd, rlogin, Time and Echo. 1.3 adds support for the Network Time Protocol (NTP) and the Simple Network Time Protocol (SNTP). It also fixes numerous bugs.

Wednesday, December 15, 2004

Nokia has submitted JSR 264, Order Management API, to the Java Community Process. According to the JSR,

This specification continues the work that has been started with the OSS Service Activation API (JSR 89). The goal of JSR 89 was to specify an API, which standardizes an interface to service provisioning products in an Operation Support Systems environment.

While that target has been reached and the JSR is well adopted, it has now become necessary to include features that have been intentionally left out in JSR 89, and to extend the scope to cover other related use-cases, which have not been in the original scope of JSR 89.

The two main abstractions of JSR 89 were services and orders. While the order model was specified in detail, the service model had to be kept simple to allow implementations of all kinds of services. In fact JSR 89 is an Order Management API, which constraints order items to services only, and leaves the concrete service definition up to the implementation.

This limitation will be overcome in this JSR, as a more generic Order Management API will be defined. Starting from JSR 89 the existing order management model will be used and extended in scope and functionality.

The concept of an order will be generalized from only dealing with services to dealing with an abstraction that represents anything orderable or that is needed to be fulfilled by an order. This includes but is not limited to products, services, resources and work order items, since concrete instances of the generic order item abstraction will be defined in this API to cover the full eTom provisioning stack on one hand (product, service and resource activation) and on the other hand the ability to process work orders (as order items).

Dan Creswell has released version 2.1.12 of the Blitz JavaSpaces Server Edition and version 1.0.1 of the pure Java edition. Bltiz is an open source (BSD license) implementation of JavaSpaces that is Jini 2.0 enabled and implements smart indexing, tuneable persistence, and active/passive lease cleanup. This release is mostly a bug fix release, but does provide information about Entry schemas in the dashboard.

Tuesday, December 14, 2004

I've posted a new article in The Cafes about Using HTML Labels on Swing Components. This article was originally written a few years ago for a site that's now defunct, but it's still relevant today.

Monday, December 13, 2004

Cenqua has released Clover 1.3.3, a $250 payware unit test coverage tool. Besides bug fixes, this release improves support for Unicode source files, offers more flexible database merge, can spawn the Swing viewer from Ant, and improves output from the console reporter.

Clover modifies the source code to enable it to follow which statements are executed when, and keeps a running count of how many times each statement is executed during the test suite. Any statement that executes zero times is not being tested. Unlike Jester, Clover only tests whether the tests execute each statement and follow each branch. (It occasionally misses branches on the edges of >= or <=.) It does not test whether the tests correctly detect bugs. On the other hand, it runs orders of magnitude faster than a tool like Jester does. It's easy to use Clover several times a day. Indeed you can use it after each change to the test suite. By contrast, a Jester run can take several days to complete. Ideally you'd want to use both a tool like Jester and a tool like Clover since they do different things.

Clover has been a major help in developing XOM. It has located numerous bugs in XOM over the last year, and is largely responsible for the completeness of XOM's test suite. Clover has also helped to optimize XOM for both speed and size by finding dead, unreachable code I could cut out. As usual, I tested the new release on the current XOM code base, and as usual with upgrades it didn't work:

   [clover] Error processing /tmp/clover32127.tmp/src32128.tmp/nu/xom/tests/
   [clover] No character defined for unicode escape '\u0245'
   [clover] cloverantlr.N: No character defined for unicode escape '\u0245'
   [clover] ** Error(s) occurred and the instrumentation process can't continue.

I'm sure I'll get this figured out soon, but just in case you might want to hold off upgrading for a few days. Clover integrates with Ant, NetBeans, Eclipse, and IntelliJ IDEA. new in this release is support for Oracle JDeveloper 10g. Clover can generate test coverage reports in XML, HTML, PDF, or via a Swing Viewer. Java 1.2 or later is required.

The Jakarta Apache Project has posted Tomcat 5.5.6, 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.5 is designed to run on J2SE 5.0 and later, and requires configuration to run on J2SE 1.4....In addition, Tomcat 5.5 uses the Eclipse JDT Java compiler for compiling JSP pages. This means you no longer need to have the complete Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment (JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the binary Tomcat distributions. Tomcat can also be configured to use the compiler from the JDK to compile JSPs, or any other Java compiler supported by Apache Ant." This implements version 2.4 of the Java Servlet API and version 2.0 of Java Server Pages. Changes since 5.5.5 consist of bug fixes. The version numbering is funky. This is really more like an alpha release and is definitely not considered to be ready for production.

Websina has released BugZero 3.9.7, a $1299 payware (+$300 for maintenance) 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.9.7 fixes bugs.

Sunday, December 12, 2004

Ivan Moore has released Jester 1.3.6, an interesting unit test tester tool, sadly hobbled by CLASSPATH problems, a poor user interface, and bad error reporting. The basic idea of Jester is that it mutates your source code, for instance by changing an == to a !=, runs all the tests, and sees if any of them report a failure. If none of them do, then the line of code tested is either unnecessary or untested. The results of a Jester run are often eye opening. It's an extremely valuable tool, if you can actually get it to work.

Unfortunately, Jester is quite difficult to configure. First you have to make a copy of your source files, because Jester isn't smart enough to make its own copies before mutating them. This means you also need to make sure any paths are adjusted to the new location of the source files. You can't just copy your existing source tree and build system to a new directory because Jester insists that the source code has to be placed in the same directories as the compiled .class files. Then the CLASSPATH needs to be set up just so. It must be set through an environment variable, not via the -classpath command line argument or the ext directory. And even then the TestTester fails more often than not with no indication to the user of why the program could not run. A typical message is "Sun Dec 14 08:09:11 EST 2003 running command 'java jester.TestRunnerImpl nu.xom.tests.XOMTests' resulted in '[..................FAILED]'". Yes, I know it failed. Would it be too much to ask that Jester tell me why it failed? Could it not find the test class? Was some other class missing from the CLASSPATH? Was the source code in the wrong place? What was the exception? What was the stack trace? Anything at all that would help me debug the problem?

Finally, Jester is quite slow. The slowness isn't necessarily poor programming to the Jester code. It's just that it has to make hundreds of modifications in a file and rerun the complete test suite for each one. It's normally helpful to custom tune a test suite just for Jester that only contains the fastest tests, and puts the ones most likely to fail right up front. Even doing that, checking just one large file from XOM took 30 minutes on my dual 2.5GHz G5 PowerMac. As a rough estimate, the time to run Jester is approximately N*T/10.0, where N is the number of lines of code and T is the time normally required to run the unit test suite.

Still, despite all this, Jester may be worth the hassle. Jester tends to locate problems other code coverage tools do not. It determines not only whether the tests are executing a particular line of code, but also whether they're actually testing it. Most code coverage tools are fairly good at finding dead code that can't be reached through the public API. Jester is the only one I've seen that detects pointless code: code that is executed but doesn't actually need to be. The slowness and difficulty of Jester make it hard to believe you could use this on every line of an even moderately sized project. However, it may well be worth your time to use it on the core classes of your application.

Saturday, December 11, 2004

The Eclipse Project has posted the first milestone release of AspectJ 1.5/5.0 (stealing a version numbering scheme from the JDK). 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. This release is focused on Java 1.5/5.0 compatibility. By the way, would somebody please remind the Eclipse Project that unlinkable framed pages went out of style back in 1998? Thanks.

Friday, December 10, 2004

The Apache Incubator Project has released Apache Derby (formerly Cloudscape), an open source relational database written in pure Java.

The Apache Jakarta Commons Project has released Commons Math 1.0, an open source library providing many mathematical functions for statistics, random data generation, linear algebra, root finding, interpolation, erf, gamma and beta functions, arrays, factorials, complex numbers, distributions, matrices, and solving linear systems. It looks like it covers most practical math you might encounter at roughly the level of a typical undergraduate course in mathematical methods for physics. Based on spot checks of the Complex class and the factorial function, this looks like pretty solid work. I don't see any of the usual mistakes I'm used to seeing in such classes. For instance, the MathUtils.factorial() method throws an ArithmeticException if the result overflows the bounds of a long. Commons Math is published under the Apache 2.0 license.

The Apache Jakarta Commons Project has also released Commons Chain 1.0, an open source implementation of the Chain of Responsibility design pattern. According to the web page,

A popular technique for organizing the execution of complex processing flows is the "Chain of Responsibility" pattern, as described (among many other places) in the classic "Gang of Four" design patterns book. Although the fundamental API contracts required to implement this design patten are extremely simple, it is useful to have a base API that facilitates using the pattern, and (more importantly) encouraging composition of command implementations from multiple diverse sources.

Towards that end, the Chain API models a computation as a series of "commands" that can be combined into a "chain". The API for a command consists of a single method (execute()), which is passed a "context" parameter containing the dynamic state of the computation, and whose return value is a boolean that determines whether or not processing for the current chain has been completed (true), or whether processing should be delegated to the next command in the chain (false).

Commons Chain is published under the Apache 2.0 license.

Thursday, December 9, 2004

Sun has posted an early access review draft of JSR-245, JavaServer Pages 2.1, in the Java Community Process (JCP). According to the draft,

JSP 2.1 extends the JavaServer Pages 2.0 Specification (JSP 1.2) in the following ways:

  • The JSP specification now features a unified expression language, which is the result of the integration of the expression languages defined in the JSP 2.0 and Faces 1.1 specifications. The new unified expression language is defined in its own specification document, delivered along with the JSP 2.1 specification.
  • (PENDING)The JSP 2.1 specification requires the Java™ 2 Platform, Standard Edition version 1.4 or later for standalone containers, and version 5.0 for containers that are part of a Java 2 Enterprise Edition 5.0 environment. All JSP containers must be able to run in a J2SE 5.0 environment.
  • (PENDING)The JSP 2.1 specification uses the Servlet 2.5 specification for its web semantics.

Comments are due by January 7.

Sun has also posted the early access draft of JSR-252, JavaServer Faces 1.2. According to the preface, "Previous versions of the JavaServer Faces included an innovative, EL tailored to the needs of Faces. The main emphasis of this version of the Faces spec, and also the focus of the JSP spec corresponding to it, is to take those innovations and expose them to JSP page authors by creating a Unified EL that leverages the combined power of the Faces and JSP ELs. The Faces EL would then be deprecated, and the deprecated implementation would be written in terms of the Unified EL to preserve backwards compatability." Comments are due by January 7.

Wednesday, December 8, 2004

This week JavaRanch is running a promotion for java Network Programming in their Sockets and Internet Programming forum. Everyone who posts in the forum under their real name is eligible to win. The drawing will be held on Friday, December 10th. I'll be hanging out and answering questions there until then. Stop on by!

The Apache Software Foundation has released Maven 1.0.2, an open source "Java project management and project comprehension tool. Maven is based on the concept of a project object model (POM) in that all the artifacts produced by Maven are a result of consulting a well defined model for your project. Builds, documentation, source metrics, and source cross-references are all controlled by your POM.... Maven has many goals, but in a nutshell Maven aims to make the developer's life easier by providing a well defined project structure, well defined development processes to follow, and a coherent body of documentation that keeps your developers and clients apprised of what's happening with your project." According to the release notes, "This release contains further bugfixes since the Maven 1.0 release. In addition, all of the latest stable plugin releases are included, which include both bugfixes and some new features."

Michael Fuchs has posted version 0.62 of his DocBook Doclet that creates DocBook SGML and XML documents from JavaDoc. This release supports both DocBook 4.2 and 4.3 and can generate XMI files for creation of UML diagrams.

YourKit, LLC has released the YourKit Java Profiler 3.2, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features Automation of memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA, Borland JBuilder integration. Version 3.2 supports Tomcat 5.5, increases CPU tracing accuracy on Windows NT/2000/XP and Linux, and reports thread times instead of wallclock times on Solaris.

Tuesday, December 7, 2004

The Jakarta Apache Project has posted Tomcat 5.5.5, 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.5 is designed to run on J2SE 5.0 and later, and requires configuration to run on J2SE 1.4....In addition, Tomcat 5.5 uses the Eclipse JDT Java compiler for compiling JSP pages. This means you no longer need to have the complete Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment (JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the binary Tomcat distributions. Tomcat can also be configured to use the compiler from the JDK to compile JSPs, or any other Java compiler supported by Apache Ant." This implements version 2.4 of the Java Servlet API and version 2.0 of Java Server Pages. Changes since 5.5.4 consist of bug fixes. The version numbering is funky. This is really more like an alpha release and is definitely not considered to be ready for production.

Monday, December 6, 2004

Sun's posted the second release candidate of the NetBeans Integrated Development Environment (IDE) 4.0. NetBeans is available for Windows, Linux, the Solaris(tm) Operating System and Mac OS X. New features in version 4 include:

Saturday, December 4, 2004

The Apache Jakarta Project has released Commons Validator 1.1.4, an extensible framework for defining validation methods. Although it uses XML to define the validation rules, this component is intended for general data validation, not specifically or even primarily XML validation. 1.1.4 adds getMessage(key) and getMessages() methods to Field and a resource property to the Msg class to support the resource attribute specified in the DTD. It is published under the Apache 2.0 license.

Friday, December 3, 2004

I've posted a new article on The Cafes about Swing's ProgressMonitorInputStream class. This article was originally written a few years ago for a site that's now defunct, but it's still useful today.

Siemens AG has posted the early access draft for JSR 230, Data Synchronization for J2ME. According to the draft,

This JSR will be a J2ME optional package that can be used with the J2ME configurations CLDC and CDC. It enables applications to synchronize their application specific data stored in the terminal with corresponding data stored on a server, replicating any changes made to either instance of the data. It provides a generic interface to the data synchronization device implementation, to enable data synchronization via underlying implementations of data synchronization protocols. One example of the data synchronization protocols to be accessed from Java applications will be SyncML / OMA Data Synchronization. The API provides a common set of synchronization commands independently from the underlying synchronization framework’s implementation. The API covers the following aspects:

  • Management of synchronization sessions (starting a session from the client, notification of a session initiated from the server)
  • Synchronization operations (add, delete, change – both issuing of sync commands and notification of incoming commands)
  • Registration of applications for synchronization (to enable notification)
  • Management of a changelog

The reference implementation of the API will be based on SyncML / OMA . Therefore the design very closely follows the terminology and reference architecture defined by SyncML/OMA DS specifications. Nevertheless the JSR API should be adaptable to other data synchronization standards such as IrMC or vendor specific data synchronization APIs that come with operating systems.

Thursday, December 2, 2004

Robert Oloffson has posted version 0.45 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. 0.45 shows time per call in the method window and adds tenure levels to class and instance list. JMP is written in C for Linux.

Michael B. Allen has posted jCIFS 1.1.3, 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 Version 1.1.3 is a bug fix release.

Wednesday, December 1, 2004

There's some interesting discussion at The Cafes today about whether there's a significant speed difference between != and <=. I wouldn't have believed it, but it looks like there might be, at least on server VMs. I'm quite suspicious of such micro-optimizations, but I will have to investigate this further.

Sun has submitted JSR 260: Javadoc Tag Technology Update, to the Java Community Process (JCP). According to the JSR:

This JSR will investigate various improvements to javadoc tags, including for example:

  • categorization of methods and fields by their target use
  • semantical index of classes and packages
  • distinction of static, factory, deprecated methods from ordinary methods
  • distinction of property accessors from ordinary methods
  • combining and splitting information into views
  • embedding of examples, common use-cases along with Javadoc

This JSR will also investigate possible representations of the document generated by the Javadoc tool from Javadoc comments using new tags.

This sounds like something that's long overdue. Comments are due by December 13.

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