Java News from Friday, October 29, 2004 has released lint4j 0.7, a free-beer "static Java source code analyzer that detects locking and threading issues, performance and scalability problems, and checks complex contracts such as Java serialization by performing type, data flow, and lock graph analysis." Version 0.7 adds a number of tests for Enterpise Javabeans issues as well as pointless assignments, accidental assignment of a boolean value, and method/constructor confusion.

AS usual I ran this across the XOM code base. It found one unnecessarily shadowed local variable, which allowed me to eliminate one line of code. It also found a place where I should have been using an if-else block instead of a switch. Neither of these were real bugs, just minor code improvements. It also identified one area where XOM perhaps ought to be using string buffers instead of string concatenation. However, that particular bit of code is so convoluted that the StringBuffer algorithm is likely to be much more complex than the String based algorithm, so I chose not to fix it, at least not right now. These three were hidden in a large number of false positives, mostly involving deliberately ignored exceptions, switch statements without default branches, and using == instead of equals() for comparison.

JCraft, Inc has posted JSch 0.1.18, an open source, pure Java implementation of SSH2 that supports port forwarding, X11 forwarding, file transfer, etc. This version adds some minor features including handling hostkeys included in known_hosts file and setting timeout values for opening sockets. Java 1.2 or later and the JCE are required. JSch is released under a BSD license.

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