Sun's posted an early access prototype Java compiler on the Java Developer Conmnection (registration required) that includes the new language features planned for Java 1.5: generics, typesafe enums, varargs, autoboxing, foreach loops, and static import. This is not a full JDK 1.5 beta. The libraries are still 1.4—in fact, Java 1.4.1 is required—but you can start playing with the new features now. The prototype introduces an experimental type system known as variance that may or may not be included in the final release.
The NetBeans Project has posted the third release candidate of NetBeans 3.5, an open source integrated development environment for Java written in Java. This RC fixes a bug in the debugger and several bugs in the installer. Java 1.3 or later is required.
Slava Pestov has uploaded the second pre-release of jEdit 4.2, an open source programmer's editor written in Java with extensive plug-in support and my preferred text editor on Windows and Unix. New features in this release include a VIM/Emacs-style "kill ring", quick copy between text areas, files in the favorites list, and some new syntax highlighting modes were added.
Peter Graves has released version 0.19.0 of j, an open source, multiwindow programmer's editor written in pure Java. It can syntax color Java, C, C++, XML, HTML, CSS, JavaScript, Lisp, Perl, PHP, Python, Tcl/Tk, Verilog, and VHDL code. Features include automatic indentation, directory buffers, regular expressions, multifile find and replace, autosave and crash recovery, undo/redo, FTP/HTTP support, customizable keyboard mappings and themes. Version 0.19.0 adds a Java Platform Debuggin Architecture (JPDA) debugger. j is published under the GPL.
I've posted version 1.0d15 of XOM,
my tree-based library for processing XML with Java that strives for maximum simplicity and correctness. The primary focus of this release is XInclude. I believe that, modulo undiscovered bugs, this is now a fully conformant implementation of the XInclude Candidate Recommendation including support for fallbacks, the XPointer element()
scheme, and preservation of base URI information using xml:base
attributes. There are 24 unit tests for XInclude added in this release as well to try to keep the undiscovered bugs to a minimum.
There were a couple of other minor improvements in this release as well. The Element.getChildElements(String name, String namespaceURI)
now allows a null or empty string local name to stand for any local name, so you can use this method to get all elements in a certain namespace.
Serializer
no longer wraps and indents text when xml:space="preserve"
,
regardless of the setting of indents and maxlength.
This release should be completely compatible with code
written against 1.0d14. You should not even need to recompile
existing programs.
In related news, Bill Venners has posted part I of his interview with me at Software Development West back in March. The interview focuses on XOM and the principles that influenced its design. Finally, Linux Magazine has posted, Java XOM: XML Made Simpler, an introductory article about XOM by Rogers Cadenhead. He wrote with XOM 1.0d8, but looking at the code I think it still all applies to 1.0d15.
Nokia has posted the public review draft specification of Java Specification Request (JSR) 184, Mobile 3D Graphics API for J2ME, to the Java Community Process (JCP). The goal is "an efficient 3D Graphics API suitable for the J2ME platform, in particular CLDC/MIDP. The API is targeted at CLDC class of devices that typically have very little processing power and memory, and no hardware support for 3D graphics or floating point math. The API has been defined such that implementations on that kind of hardware are feasible. However, the API also scales up to higher-end devices featuring a color display, a DSP, a floating point unit, or even specialized 3D graphics hardware."
Nokia and Siemens have posted the proposed final draft of Java Specification Request 195 (JSR-195), Information Module Profile, a J2ME profile for networked devices that do not have graphical display capabilities.
Xref-Tech has released Xrefactory 1.6, a $29 shareware refactoring browser for Emacs, XEmacs, and jEdit. It supports C and Java, and runs on Unix and Windows. Supported refactorings include "method (function) extraction; renaming of packages, classes, parameters, variables, fields (structure records) and methods (functions); insertion, deletion and moving of parameters, field and method moving; pushing down and pulling up fields and methods; encapsulate field; and more."
In what I think is a first, four Sun-submitted Java Specification Requests (JSRs) have been voted down in the Java Community Process (JCP). These are
These four drafts would have updated the existing 1.0 versions of those specs to support Java 1.4. However, the nay-voters seemed seriously concerned about the increase in memory footprint this would have required. Sun now has 14 days to revise and resubmit the JSRs.
The NetBeans Project has posted the second release candidate of NetBeans 3.5, an open source integrated development environment for Java written in Java. Version 3.5 is mainly a bug fix release. In addition, Ant has been upgraded to version 1.5.1. Java 1.3 or later is required.
Nathan Fiedler has released version 2.17 of JSwat, a graphical, stand-alone Java debugger built on top of the Java Platform Debugger Architecture. Features include breakpoints, source code viewing, single-stepping, watching variables, viewing stack frames, and printing variables. Version 2.17 is a bug fix release. JSwat is published under the GPL.
Websina has released Bugzero 2.5, a $999 payware Web-based bug tracking system that supports multiple projects, group-based access, automatic bug assignment, file attachment, email notification, and metric reports. Bug Zero is written in Java and can run on top of various backend databases including MySQL. Version 2.5 makes a number of small changes.
Robert Oloffson has posted version 0.30 of Java Memory Profiler (JMP). JMP uses the Java Virtual Machine Profiling Interface (JVMPI) interface to track objects and method times in a JVM . It uses a GTK+ interface to display statistics. The current instance count and the total amount of memory for each class is shown as is the total time spent in each method. This release implements various speed-ups. JMP is written in C for Linux. This is a bug fix release. JMP is published under the GPL.
JRat 0.4.2 is an open source profiling tool that requires instrumentation of your code. This is a bug fix release. JRat is published under the LGPL.
Sun's posted the first beta of the Java Access Bridge for Windows 1.0.4 on the Java Developer Connection (registration required). This tool enables Windows based Assistive Technology to interact with the Java Accessibility API implemented in Swing. 1.0.4 is a bug fix release.
OOPS Consultancy has released XMLTask 1.6, an Ant task that that can modify "XML files as part of an Ant build. Unlike the standard filter task provided with Ant, it is XML-sensitive, but doesn't require you to define XSLTs."
Work has begun on wx4j, an open source Java binding for the cross-platform wxWindows C++ GUI toolkit. wx4j provides a Java GUI toolkit that uses native widgets for a native look and feel (like the AWT and SWT and unlike Swing).
I've posted version 1.0d14 of XOM, my tree-based API for processing XML with Java. XOM strives for maximum simplicity and absolute correctness. This release has undergone extensive profiling and optimization for both memory footprint and speed. It is much faster and the objects created are much smaller. Speed and space wise it should now be competitive with other tree-based APIs liker DOM and JDOM. API level changes since 1.0d11 (the last one I announced here) are fairly minor. They include:
Element.insertChild(String, int)
now throws a NullPointerException
if the first argument is null.insertBefore
and insertAfter
methods have been removed from ParentNode
.insertChild
(and checkInsertChild
and checkRemoveChild
) have been reversed. These methods are now:
public void insertChild(Node child, int position)
protected void checkInsertChild(Node child, int position)
protected void checkRemoveChild(Node child, int position)
removeChild
methods now return the Node
they remove:
public Node removeChild(int position)
public Node removeChild(Node child)
Builder
method
public Document build(String document, String baseURI)
IOException
like the other build()
methodsequals()
and hashCode()
methods were removed from the XSLTransform
class. getAttributeCount()
, getNamespacePrefix(int index)
, removeChildren()
, and getAttribute(int)
. In addition, the unit tests have been expanded significantly, which resulted in the detection and elimination of numerous bugs. More details about all of this are on the XOM page.
Cowsultants has released ITracker 1.7.1, an open source Java J2EE issue/bug tracking system "designed to support multiple projects with independent user bases." Features include multiple versions and project components, detailed histories, per project user permissions, multiple email notifications, internationalization, issue searching, file attachments, and dynamic reports with charts. ITracker is published under the GPL.
The Jakarta Commons Team has released Commons Codec 1.1, an open source Java class library providing common encoders and decoders including Base-64, hexBinary, Soundex, and Metaphone.
Apple has released Java 1.3.1 Update for Oracle. "Java for Oracle is an upgrade to 1.3.1 which provides support or Oracle 11i client applications on Mac OS X. it is recommended that you only update t to Java for Oracle if you need to use Oracle 11i client applications." Mac OS X 10.2.1 or later is required.
The Gnu Project has released version 3.3 of GCC, the GNU Compiler Collection. GCC contains frontends for C, C++, Objective C, Chill, Fortran, Ada, and Java as well as libraries for these languages. Changes to the Java compiler since the previous 3.2.3 release include JDBC 3.0, assertions, and a speedier bytecode interpreter. GCC is a clean room implementation of Java that doesn't use any Sun code, so it doesn't always exactly match Sun release versions, but this is roughly at the Java 1.4 level with some omissions.
WEBsina has released JLicense 2.6, a Java toolkit "for creating and validating license keys. It includes a simple GUI tool for creating the license file and a LicenseManager (which should be embeded inside your Java software) for validating the license. JLicense is feature based, and you can validate the license based on the features." The binary is free-beer. Source code is $50.
The UICompiler 1.1 is an open source rapid prototyping tool for Swing GUIs based on Qt Designer and JDOM.
The Eclipse Project has posted the second release candidate of AspectJ 1.1. 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.
David Hovemeyer has posted FindBugs 0.5.4, a tool for detecting a variety of common Java coding mistakes, including thread synchronization problems and misuse of API methods. It includes both Swing and commandline interfaces. Java 1.4 or later is required. 0.54 fixes a few bugs and improves the GUI a little. FindBugs is published under the LGPL.
Greg Guerin's updated his open source MacBinary Toolkit for Java. MacBinary is a format used to squash a two fork Macintosh file into a single byte sequence. This is a minor bug fix release. The MacBinary Toolkit for Java is published under the Artistic License.
JRat 0.4.1 is an open source profiling tool that requires instrumentation of your code. I was going to test it out, but the download at sourceforge seems to be offline at the moment. JRat is published under the LGPL.
David Hovemeyer has posted FindBugs 0.5.3, a tool for detecting a variety of common Java coding mistakes, including thread synchronization problems and misuse of API methods. It includes both Swing and commandline interfaces. Java 1.4 or later is required. 0.53 adds an ant build script and a plugin architecture for the bug detectors. FindBugs is published under the LGPL.
Gaudenz Alder has released version 2.1.1 of JGraph, an open source graph component for Swing that now 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. JGraph is published under the LGPL.
Michael Fuchs has posted version 0.4.3 of his DocBook Doclet that creates DocBook SGML and XML documents from JavaDoc. This release adds stylesheet support, recognizes comments on private and package private fields and methods, and fixes various bugs.
I woke up to news of yet another horrible terrorist attack this morning, this time in Saudi Arabia and probably carried out by Al Qaeda. Excuse me for asking, but isn't this exactly what the assaults on Iraq and Afghanistan were supposed to prevent?
I also noticed that the headline on the New York Times web site right now is "Attacks Kill 10 Americans in Saudi Arabia". Looking at the London Independent, however, the lead headline is "'50 killed' in Riyadh suicide bomb attacks". I wonder why the discrepancy? Could it be that the other 40 victims weren't Americans, and thus don't count as far as the "liberal" New York Times is concerned? Not that this is anything new. Witness, the anguish over the relatively light U.S. military casualties in Iraq vs. the complete non-concern for the thousands of Iraqi civilian deaths. The founding fathers may have written that "All men are created equal" but it doesn't feel like anybody in the U.S, media or government believes those words. Somehow I doubt matters are going to improve until we're ready to accept that the violent death of a Saudi, Filipino, or Iraqi is every bit as much a tragedy as the death of an American.
Teanm in a Box has released the Eclipse Metrics plugin 1.1.0, an open source tool for the Eclipse Integerated Development Environment that calculates various software metrics for java projects sucha s the McCabe Cyclomatic Complexity number. I tried this out yesterday on XOM, and found most of the metrics to be very rudimentary, mostly things I could easily figure out manually such a lines of code, number of statements, number of arguments, etc. It did not help me anything in XOM that needed refatoring.
FYI, judging by the bounce messages I'm getting, there seems to be another worm loose on somebody's system that has chosen to use my e-mail address to propagate itself. The suibject line is "legger_sienaert", whatever that means. This is the second time this has happened in the last couple of weeks. Since this is not coming from my systems, there's nothing I can really do about it; but if it hits you, my apologies.
Yesterday I finally found a copy of the paperback edition of Cryptonomicon so I could read the Quicksilver excerpt in the back of the book. This turns out to be a longer version of the excerpt posted on the Baroque Cycle. As previously reported, there is indeed a character named "Enoch Root" wandering around Boston in the early 1700s. I think this is probably the same person we were introduced to in the 20th century in Cryptonomicon, not an ancestor or another person using the same name. Most tellingly, there's a reference to Root's appearance of an indeterminate age. There are also references to alchemy and Leibniz. I guess we'll have to wait till September to find out more.
Krysalis Barcode 0.9, an open source SVG barcode generation package written in Java, has been posted. Krysalis Barcode currently supports the following barcode symbologies:
The Gnu Project has posted the second prerelease of GCC 3.3, the GNU Compiler Collection. Look for the files that have "20030508" in their names. GCC contains frontends for C, C++, Objective C, Chill, Fortran, and Java as well as libraries for these languages. This is a bug fix release.
The second beta of BlueJ 1.3 has been posted. BlueJ is a free integrated development environment (IDE) for Java aimed at education. The major new feature in 1.3 is a project submission extension developed at the University of Kent in Canterbury that enables students to submit BlueJ projects via file copy, email, ftp or http. New features since beta 1 include:
And of course many bugs have been stomped as well.
Jim Menard's posted version 0.7.8 of DataVision, an open source "database reporting tool similar to Crystal Reports". DataVision is written in Java and supports multiple databases including PostgreSQL, MySQL, and Oracle. This is a bug fix release.
Today feels like a slow news day so let's catch up on Quicksilver, the mystery of Enoch Root, and other matters reelated to Neal Stephenson's novel Cryptonomicon. There's now an official web site, with an encrypted Flash intro that further suggests an alchemical connection, and a very brief excerpt from the novel featuring a character identified only as "Enoch", who is apparently wandering around Boston on October 12, 1713. Several other ancestral characters are mentioned including Daniel Waterhouse and Jack Shaftoe. In this excerpt, Enoch only has a first name and no last name. The novel is due out on September 23rd according to the site. Plus, I've put lots of new hypotheses and unexplained bits on the main page. New questions readers raised include, "What is Rudy's interest in Leibniz on p.505?" and "What are the gold punch cards on p. 865?"
The JBoss Project has released JBoss 3.2.1, an open source Enterprise JavaBeans application server implemented in pure Java. This is a bug fix release, no new features. JBoss provides JBossServer, the basic EJB container and JMX infrastructure, JBossMQ for JMS messaging, JBossMail for mail, JBossTX for JTA/JTS transactions, JBossSX for JAAS based security, JBossCX for JCA connectivity, and JBossCMP for CMP persistence. It integrates with Tomcat Servlet/JSP container and Jetty Web server/servlet container, and enables you to mix and match these components through JMX by replacing any component you wish with a JMX-compliant implementation for the same APIs. Java 1.3 or later is required.
IBM has revised the change log for the
maintenance release
of
Implementing Enterprise Web Services 1.1 in the Java Community Process (JCP).
According to the introduction, "This specification defines the Web Services for J2EE architecture. This is a service architecture that leverages the J2EE component architecture to provide a client and server programming model which is portable and interoperable across application servers, provides a scalable secure environment, and yet is familiar to J2EE developers."
New features for the next release include support for anonymous types and xsd:any
.
The NetBeans Project has posted the first release candidate of NetBeans 3.5, an open source integrated development environment for Java written in Java. Version 3.5 is mainly a bug fix release. In addition, Ant has been upgraded to version 1.5.1. Java 1.3 or later is required.
SSHTools.com has posted J2SSH 0.1.6, a Java implementation of the secure shell protocol that "provides a fully featured SSH2 implementation specifically designed for cross platform development. Higher level components representing both the standard SSH client and SSH servers are provided which implement the protocol specification for user sessions and port forwarding." Supported features include public key and password authentication the SFTP protocol. This beta fixes assorted bugs. J2SSH is published under the LGPL.
The Jakarta Apache Project has posted the third alpha of HTTPClient 2.0. "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....Designed for extension while providing robust support for the base HTTP protocol, the HttpClient component may be of interest to anyone building HTTP-aware client applications such as web browsers, web service clients, or systems that leverage or extend the HTTP protocol for distributed communication."
Slave Pestov has uploaded the first pre-release of jEdit 4.2, an open source programmer's editor written in Java with extensive plug-in support and my preferred text editor on Windows and Unix. According to Pestov, "The main focus of this release, though, was rewriting the text area display code -- scrolling should be smoother, soft wrap should be faster, and folding and narrowing should be faster too." Otherwise, new features in 4.2 include:
This is a pretty bleeding edge release. Many bugs have been fixed, but doubtless more new ones have been added. Many plug-ins do not yet work. I'm sticking with the older version for at least a little while. (That reminds me. I need to upgrade to 4.1.)
Tigris.org's Scarab is an open source Issue/Artifact tracking system based on Java servlets that features:
Ian Bourke has released Barbecue 1.03, an open source barcode generator for Java that enables barcodes to be displayed as Swing and AWT components, printed on paper, and saved as images for Web pages.
Ozten has posted JFontChooser 0.22,
an open source (LGPL)
Swing widget that enables users to choose a font. It' modelled after
the Color Chooser dialog from Color.showDialog
.
Julien Ponge has released IzPack 3.0.8a, an open source tool for building cross-platform installers in Java. It's published under the GPL. This is a bug fix release.
David Hovemeyer's FindBugs 0.5.2 can detect a variety of common Java coding mistakes, including thread synchronization problems and misuse of API methods. It includes both Swing and commandline interfaces. Java 1.4 or later is required. FindBugs is published under the LGPL.
I'm quite fond of these sorts of lint-like tools in general. I tested this one by running it across the current XOM code base. It reported 25 problems. Most of those were cases where I had quite deliberately ignored an exception. A few others were also questionable in general, but had specific reasons within context; i.e. they were deliberate design decisions, not bugs, though I could see why they were reported. Only two were real issues, an unused private field in one class and an unread field in another. Maybe one more case was arguable, and six were actively wrong. (FindBugs incorrectly claimed that some private fields were not read.) However, the XOM code base is actually quite clean at this point, so I'm not sure if this is a fair test. One feature that was missing, and is clearly necessary is some form of "lint comment" that allows code to indicate that it really does want to do something that appears questionable to an automated checking tool.
IBM has released the IBM Toolkit for MPEG-4, a Java class library for working with MPEG-4 video and audio. Bundled sample applications include:
However, when I tried to run them, they were unable to read any of the MPEG files I tested. This is currently only available under a 90-day trial license.
Michael Clark has posted JMemProf 0.5, an open source, live Java memory profiler suitable for deployment in Web containers such as JBoss and Tomcat. JMemProf can retrieve memory profile information from a running application.
Steve Slaven has written a Staroffice/Openoffice to HTML Converter based on xsltproc and ImageMagick. This is published under the GPL.
J.P. Evans has released the JarJar ClassLoader 1.0, an open source class loader that loads classes .jar files stored another .jar file. This makes it easier to bundle third party libraries with applications. Missa think this a very good idea.