December 2002 Java News

Monday, December 30, 2002

Luca Lutterotti has posted version 0.1 of the JNIAltivec Java native library that provides Altivec acceleration to Java mathematical functions on Mac OS X 10.2.

Nathan Fiedler's released version 2.12 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.12 adds "minor interface enhancements and bugfixes, polishing the interface so that it looks somewhat professional." JSwat is published under the GPL.

Sunday, December 29, 2002

I'm continuing to clean up my Inbox. I have now answered the last messages from 1997. Today, I hope to get through 1998. With lot of work, I may finish the last millemium before New Year's. Part of the problem is that the older messages tend to be the most complex, the ones that require research and experiment to answer and deal with. Thus they tend to be put off for an exceptionally long time.

I've added some further thoughts on the Enoch Root mystery to my Cryptonomicon page. There's more supposition and even some extra evidence that Root may be an angel.

A couple of weeks ago I also asked about what the next sleeper technology might be. There were numerous suggestions, though nobody seemed to agree on what it would be. Suggestions included:

The last one is interesting. I have to explore it further. SWT could be a very big deal. The others may be important, but they're a little too specific to attract enough users to make for a successful book.

Saturday, December 28, 2002

Brad Cox has posted the initial version 0.1 of the Java+ Preprocessor. Java+ supports "long, multi-line strings with executable inclusions like Perl or Ruby, optionally segregates Java+ strings into ResourceBundle files, eliminates the need for JSP or ASP and their implied need for Java compilers on deployment servers (a security concern), and adds absolutely no overhead in either space or time. There are graphical and command line interfaces, and a simple, general, and recursive string syntax." Java+ is published under a BSD license.

Bernhard Bablok has released ShadowJAAS 1.2.0, a Java Authentication and Authorization Service-compliant authentication provider that uses Linux shadow passwords. According to Sun, JAAS "enables services to authenticate and enforce access controls upon users. It implements a Java version of the standard Pluggable Authentication Module (PAM) framework, and supports user-based authorization." ShadowJAAS is published under the LGPL. has released version 2.6.3 of JDebugTool, a standalone graphical Java debugger built on top of the Java Platform Debugger Architecture (JPDA). Version 2.6.3 adds the ability to launch an external text editor to edit the currently displayed source file. JDebugTool is $99 payware.

Friday, December 27, 2002

Slava Pestov's posted the seventh prerelease of version 4.1 of jEdit, an open source programmer's editor written in Java. This release fixes assorted nasty bugs, adds Freemaker syntax highlighting, and now requires double-clicks to open a directory in the file system browser (Using single clicks for this was one of my personal UI peeves in earlier versions.)

Tuesday, December 24, 2002

U.S. district court judge J. Frederick Motz has granted Sun a preliminary injunction in its lawsuit against Microsoft that requires Microsoft to bundle Sun's version of Java with some of its products. The exact list of which products itmust be bundled with has not yet been determined.

Sunday, December 22, 2002

I'll be visiting family for the Christmas week. I should have Internet access, but updates will probably be a little slow here until next weekend. Merry Christmas, Joyeux Noël, Happy Hanukkah, a Festive Kwanzaa, Season's Greeting's, and Happy New Year to you all.

Vamp's Rachel is an an open-source resouce loading toolkit for JavaWebStart/Java Network Launching Protocol that "vastly simplifies resource loading for Java Web Start apps".

Saturday, December 21, 2002

As part of my continuing end-of-the-year InBox purging (Only 1500 messages to go!), yesterday I went through all the mail announcing conferences and updated the Java Conferences page. So far, I know that next year I'll speaking at OOP 2003 in Munich in January, XML &. Web Services 2003 in London in March, Software Development 2003 West in Santa Clara in March, and Software Development 2003 East in Boston in September.

Mark Hale's released version 0.89 of JSci, a Java class library containing many useful mathematical and scientific functions such as complex arithmetic. New features in this release include Gram-Schmidt orthogonalisation, a RingMatrix class added, a JSci.maths.polynomials package, a JSci.astro package added for controlling computerised telescopes, and a custom doclet. that supports links to entries in the encyclopedia.

SolarMetric Inc. has released Kodo JDO 2.4, an implementation of Sun's Java Data Objects (JDO) 1.0 specification. JDO permits Java objects to be transparently stored in relational databases. Version 2.4 can now be integrated with various IDEs including JBuilder 7 and 8, NetBeans, SunOne Studio, Eclipse, and WebSphere Studio. It can also now use an underlying logging mechanism, such as Apache Log4J, JDK 1.4's native logging, or simple file/stdout logging. Kodo JDO Standard Edition sells for $600 per developer license, and Kodo JDO Enterprise Edition sells for $3000 per developer license and adds J2EE application server support.

Friday, December 20, 2002

The Apache Jakarta Project has released Tomcat 4.1.18, an open source servlet container/Java Server Page engine for the Apache web server. Tomcat 4.x implements the Java Servlet 2.3 and JavaServer Pages 1.2 APIs. Version 4.1.8 fixes some security holes that snuck into 4.1.16beta and 4.1.17 that could enable a denial of service attack. All users of those versions should upgrade.

Sun's posted the public review draft specification of Java Specification Request (JSR) 121, Application Isolation API in the Java Community Process (JCP). According to the FAQ list:

The JSR-121 Java Application Isolation API adds multiple application support to the Java Virtual Machine. Each application, called an "Isolate" by the API, is given the illusion of running in its own isolated virtual machine: each application gets its own system properties, its own classpath, its own static class state, etc. Isolates can be cleanly terminated. Pure Java mechanisms for application life cycle control and communication are also provided. The API is flexible enough that VMs can implement it using the underlying OS process facilities, or the VM can isolate all the separate applications within a single process.

Comments are due by March 18.

The Eclipse Project has taken over development of AspectJ from Xerox Parc, and posted the second beta of AspectJ 1.1. This beta "includes a small number of new language features as well as major improvements to the functionality of the compiler." The compiler is now believed to be feature complete but still needs some work in error checking and performance.

Software 7 has released Helen 1.1, a $149 payware JavaHelp JavaHelp authoring tool. has released version 2.6.1 of JDebugTool, a standalone graphical Java debugger built on top of the Java Platform Debugger Architecture (JPDA). Version 2.6 adds a memory usage dialog and a properties dialog. JDebugTool is $99 payware.

Thursday, December 19, 2002

As part of my continuing end-of-the-year InBox purging, yesterday I went through all the mail announcing new user groups and mailing lists and updated the mailing lists and user groups pages. I've gone from almost 4000 messages to under 1900 in the last week. With a little luck, I may get to 0 by the end of the year. Don't be surprised if you get a reposnse from me to a message you've forgotten about. The earliest message in my InBox dates to June, 1997, but most of them are from the last three years.

Mark Hale's released version 0.881 of JSci, a Java class library containing many useful mathematical and scientific functions such as complex arithmetic. The major new feature in this release is that all the periodic table classes have been replaced by XML documents (packaged in the jar file). "Element objects can be instantiated using the new factory method PeriodicTable.getElement(). This makes the data easier to update and more accessible for processing. As a consequence, a periodic table reference in HTML is now included with the documentation - generated by applying an xsl stylesheet to the xml files." Other changes in this release include non-square sparse matrix support, direct sum and tensor product methods in DoubleMatrix, and improvements to Graph2D code.

Wednesday, December 18, 2002

Russian company ElcomSoft has been acquitted of all charges based on the Digital Millennium Copyright Act, apparently because the prosecution failed to prove that ElcomSoft knew its software violated the DMCA. There may have been a bit of jury nullification at work too.

The Apache Jakarta Project has released Tomcat 4.1.17, an open source servlet container/Java Server Page engine for the Apache web server. Tomcat 4.x implements the Java Servlet 2.3 and JavaServer Pages 1.2 APIs. Version 4.1.7 is mostly a bug fix release.

Sun's posted the proposed final draft of Java Specification Request (JSR) 139 Connected, Limited Device Configuration (CLDC) 1.1 to the Java Community Process.

The main goal of the CLDC Specification is to standardize a highly portable, minimumfootprint Java™ application development platform for resource-constrained, connected devices.

Cell phones, two-way pagers, personal digital assistants (PDAs), organizers, home appliances, low-end TV set-top boxes, and point of sale terminals are some, but not all, of the devices that might be supported by this specification.

The most important changes in version 1.1 appear to be:

Robert Oloffson's Java Memory Profiler 0.24 (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.

Tuesday, December 17, 2002

Excelsior JET is a Windows-native compiler for Java. The Professional edition adds support for dynamically loaded classes not known at compile time. Pricing ranges from $200 to $2250 depending on version and support options. Site licenses are available.

Juliet is a $99 payware Java code browser and syntax colorer. Juliet is currently in beta. Java 1.4 is required.

Ericsson has posted the final 1.0 version of Java Specification Request 90, Operation Support Systems (OSS) Quality of Service (QoS) API. A reference implementation (RI) and technology compatibility kit (TCK) are also available. Unless you work in the telecom industry, you probably don't care about this.

Monday, December 16, 2002

Sun's published version 1.2 of the Java Management Extensions (JMX) Specification as well as a reference implmentation and a technology compatibility kit.

The Jakarta Apache Project has released Validator 1.0.1, an open source class library for verifying (or disproving) that data satisfies certain rules.

JUnitEE 1.6 is an open source extension to JUnit that allows standard test cases to be run from within a J2EE application server. It is composed primarily of a servlet which outputs the test results as HTML.

Sunday, December 15, 2002

I'm doing my end-of-year mailbox cleansing over the next couple of weeks. As I try to reduce my inbox from almost 4000 messages down to something more manageable, those of you who've written to me in the last year or two may be getting some belated replies. So far I've reached July of 2001, and I'm down to 3200 messages. :-)

The Jakarta Apache Project has released CLI, a "simple API for working with command line arguments and options."

Jochen Wiedmann's posted DrMem 0.06, a non-interactive Java heap profiler based on the Java Virtual Machine Profiling Interface that creates statistics about classes and objects in use. This is a bug fix release. DrMem is in the public domain.

Saturday, December 14, 2002

The Jakarta Apache project has posted a beta of Tomcat 4.1.16, , the servlet container/JSP engine for the Apache web server and the official reference implementation of the Servlet 2.3 API and Java Server Pages 1.2. This version "includes many bugfixes and performance tweaks over Tomcat 4.1.12.

Sun's released the final version 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." New features in version 2.0 include:

The MIDP 2.0 reference implementation (RI) and technology compatibility kit (TCK) can be MIDP">licensed through Sun's Java Partner Engineering group.

The Expert Group for JSR 116 has posted the proposed final draft specification of the SIP Servlet API, a "high-level extension API for SIP servers. It enables SIP applications to be deployed and managed based on the servlet model." SIP, the Session Initiation Protocol, establishes and manages multimedia IP sessions.

The Object Refinery has posted JFreeReport 0.8.0, an open source Java class library for generating reports that outputs PDF. Java 1.3 or later is required. JFreeReport is published under the GNU Lesser General Public Licence (LGPL).

The Apache Jakarta Project has released a Benchmark Java Server Page (JSP) Custom Tag Library that "should aid in the performance testing of other taglibs and JSP pages in general. This library isn't a full-featured benchmarking package. It's just a simple way to get rough data if you want to sketch the relative performance of tags, tag combinations, or arbitrary JSP fragments."

They have also updated several JSP Custom Tag Libraries with various bug fixes and repackagins:

Friday, December 13, 2002

IBM's alphaWorks has released Xedit for Java, a Java emulator of the XEdit line editor used on IBM's VM/CMS mainframes and 3270 terminals.

JFCUnit 1.0.3 is a tool for building JUnit test cases for Java Swing-based applications. It can obtain references to windows opened by your program, locate particular components, and submit events to them. Version 1.0.3 supports an XML test definition, can exclude windows from cleanup, improves application exit handling, and can search for components with icons. JFCUnit is published under the LGPL.

Thursday, December 12, 2002

Nils Meier's InstantJ 1.4 is a library that can compile and execute Java code or evaluate expressions written in Java on the fly. This is useful when expressions are either assembled programmatically at runtime, read from descriptors, or received from user-input. InstantJ is published unde the LGPL.

jMechanic 0.3.0 is a profiling plug-in for the Eclipse Java Integrated Development Environment (IDE). It includes tools such as CPU Sampling and Heap Summary.

Sun's posted the proposed final draft (version 0.9.0) of the Java Architecture for XML Binding 1.0 (JAXB) on the Java Developer Connection (registration required). This includes a spec, API docs, and a reference implementation. JAXB compiles an XML schema into one or more Java classes. (First mistake: JAXB assume there's a schema. Second mistake: It assumes the schema is written in the W3C XML Schema Language. Third mistake: It assumes documents actually adhere to the schema.) JAXB can unmarshal schema-valid XML into Java objects; read, update and validate the Java objects against the schema, and write the result back out as XML.

Wednesday, December 11, 2002 has released version 2.6 of JDebugTool, a standalone graphical Java debugger built on top of the Java Platform Debugger Architecture (JPDA). Version 2.6 adds a memory usage dialog and a properties dialog. JDebugTool is $99 payware.

Robert Oloffson's Java Memory Profiler 0.23 (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 fixes various bugs. JMP is written in C for Linux.

Paul Kinnucan has released the Java Development Environment for Emacs 2.3.1, an integrated development environment (IDE) for Java that supports multiple code browsers, a debugger, method and field completion, template-based and procedure-based code generation, Java source code interpreter, context-sensitive help, and more. It's published under the GPL and runs on Windows and Unix with emacs.

Sun has submitted Java Specification Request (JSR) 202 Java Class File Specification Update to the Java Community Process (JCP). This JSR proposes some small updates to the Java class file format, particularly,

  • Adding split verifier support.

    The split verifier architecture that was introduced in CDLC via JSR-030 and JSR-139 offers significant improvements over the classic JVM verifier, including reducing verification time. It appears useful to allow this verification format to be used with J2SE.

  • Increasing various size limits.

    Some applications that automatically generate JavaTM source code (such as JSP compilers) have reported encountering problems due to implicit size limits in the current class file format. This JSR will increase relevant limits where needed.

  • Adding support for class literals.

    Since JDK 1.1 the JavaTM language has included support for accessing class literals though expressions such as "MyClassName.class". However there has been no direct support for this in the class file format and it appears that adding class file support will allow significantly more efficient access to class literals.

  • Minor changes to support JavaTM language changes in Tiger.

    The JavaTM language changes that are planned for Tiger do not require any major JavaTM virtual machine changes. However, there may be some minor changes such as adding additional classfile attributes or flag bits. These JVM specification changes will be handled through this JSR, after consultation with the specification leads for the relevant language JSRs.

These four changes will be implemented as incremental updates to the existing class file format. Full compatibility will be maintained for existing class files and the existing class file format.

Comments are due by December 23.

Keith Long's Enterprise Gantt 0.4.2 is a Gantt chart library (on its way to becoming a generic charting library ) based on the Model View Controller architecture. Version 0.4.2 works better in applets. Enterprise Gantt is published under the Q public license.

Jim Menard's released version 0.5.5 of DataVision. DataVision is an open source "database reporting tool similar to Crystal Reports". Version 0.5.5 adds a new data source infrastructure, a data source that reads comma separated value files, and an example JSP file that runs a report. It also fixes various bugs. DataVision is written in Java and supports multiple databases including PostgreSQL, MySQL, and Oracle.

Tuesday, December 10, 2002

The most frequent response to yesterday's rant about why Processing XML with Java isn't meeting expectations was, "It's the economy, stupid!" There's certainly something to that. I've seen sales of other books, notably XML in a Nutshell, drop quite a bit over the last year, despite a really good second edition; and the computer book industry as a whole is still in a slump. Nonetheless, the Amazon ranks are a relative measure, not an absolute one, and even accounting for the economy the sales just aren't where I'd thought they'd be.

On the other hand, perhaps I'm using the wrong yardstick. Looking at the Amazon top 100, it contains exactly no computer books, very unusual. In the past, typically around 10 to 20 of the top 100 were computer books. This might also be seasonal as right now Amazon is skewing toward gifts. The highest ranking computer book is David Pogue's Mac OS X: The Missing Manual at around 135 (and I don't think I'm as talented a writer as David is.)

The computer bestseller list doesn't show any XML books, but Amazon's XML bestseller list shows it at number 2, so maybe it is doing well relative to the XML space. Number 1 is O'Reilly's XML CD Bookshelf, of which XML in a Nutshell is a part. If you don't count that as a book, then Processing XML with Java is number one. That's pretty damn good. The print version of XML in a Nutshell is number 8. The second edition of the XML Bible is number 22. Maybe the XML space is contracting, but I still seem to have a pretty hefty chunk of a smaller market. Time to start looking for the next big thing. Anyone want to guess what the sleeper technology for 2004 is going to be?

Monday, December 9, 2002

Processing XML with Java has received three reviews on Amazon, all five stars. (Strangely, the link you follow to the book seems to affect whether you see all three reader reviews, just one, or none at all. The most reliable way to see all three reviews seems to be to go to Amazon's home page and search for it there.) People who read this book seem to really like it. It's been getting far more positive and less negative feedback than any of my previous books. I think putting it online so I could correct mistakes early had a lot to do with that. Certainly, I can point to a number of sections of the book that were added or modified heavily as a direct result of early reader comments.

On the other hand, it is definitely not selling as well as my previous books have. It is very unusual for one of my books not to crack the top 1000 at Amazon and stay there for several weeks after its initial release. This may also be a result of putting the entire book online. Then again, it could be because potential readers have already bought other books since this is not the first book on this topic or because the paper version is simply too big or any of various other factors. Then again it could be that readers would rather have two books, and since they can read this one online they buy another book in paper to get a different perspective. (I'm always in favor of getting multiple perspectives. I just wish readers would buy my book too.) Right now I am seriously considering whether I want to make my next book freely available online as I've done with this one. Doing so would definitely produce a better book, but if it cuts into sales this dramatically it may not be sustainable.

Sunday, December 8, 2002

Sebastiano Vigna's fastUtil 2.1 provides 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 for maps)and can be plugged into existing code. fastUtil is published under the GPL.

Marco Schmidt's Java Imaging Utilities 0.10.0 (JIU) is a Java class library for manipulating bitmapped images. It can read and write several popular image file formats including TIFF, BMP, PGM, RAS, PCD, annd IFF. JIU provides various algorithms for image editing, analysis, and processing. JIU is published under the GPL.

Saturday, December 7, 2002

The GNU Project has released SmartEiffel 1.0, an Eiffel compiler that can compile Eiffel to C source or Java byte code. It "should run on any platform for which an ANSI C POSIX compiler or a Java Virtual Machine exists." Naturally it's released under the GPL.

The first beta of EJBCA 2.0 has been posted. EJBCA is an open source, Java 2 Enterprise Edition (J2EE) Certificate Authority. 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. Version 2.0 adds a Web GUI for administration, speed ups, soft configurable types of signing device, new access control on method invocation, an option to generate JKS or PEM keystores, a CertificatePolicies extension, a return PKCS7 with full path to browsers, new configurable certificate profiles, more alternative names, user profiles for administrators of different groups, improved serial number generation, and a new logging mechanism. EJBCA is published under the LGPL.

David A. Wheeler's released  SLOCCount 2.20, a suite of programs for counting physical source lines of code (SLOC) in possibly large software systems (such as the Linux code base). SLOCCount can count most major languages including Java. SLOCCount runs on Linux, FreeBSD, and Windows with Cygwin. Version 2.20 adds support for Solaris. SLOCCount is published under the GPL.

The Jakarta Apache Project has released Torque 3.0. Torque is a persistence layer that generates all the database resources (SQL scripts + Java om/peer classes) required by an application and includes a runtime environment to run the generated classes. Torque was developed as part of the Turbine Framework, but is now decoupled and can be used by itself.

The Jakarta Apache Project has released the Mailer JSP Custom Tag Library 1.1. This Java Server Page library defines tags for sending e-mail. Version 1.1 fixes all known bugs.

Jochen Wiedmann's posted DrMem 0.05, a non-interactive Java heap profiler based on the Java Virtual Machine Profiling Interface that creates statistics about classes and objects in use. DrMem is in the public domain.

Friday, December 6, 2002

IntelliJ has released version 3.0.1 of IDEA, their popular payware Integrated Development Environment for Java. Version 3.0.1 speeds a few things up and fixes some bugs. Upgrades from 3.0 are free. IDEA costs between $99 and $699 depending on when you buy, how many licenses you buy, where you work, and how much support you want.

Thursday, December 5, 2002

Borland's released version 8 of JBuilder, their Java integrated development environment for Windows, Linux, and Solaris. Java 1.4.1 is required. Pricing starts at $399 and goes up to $3999 depending on the version. Upgrades range from $1599 to $3799.

Wednesday, December 4, 2002

Sun has submitted Java Specification Request (JSR) 201 Extending the Java Programming Language with Enumerations, Autoboxing, Enhanced for loops and Static Import to the Java Community Process (JCP). This proposes major changes to the core Java language including:

These are planned as standard features for Java 1.5, Tiger, which will probably be released in late 2003.

Tuesday, December 3, 2002

Sun's posted a second proposed final draft specification for Java Specification Request (JSR) 115, Java Authorization Contract for Containers, in the Java Community Process (JCP). This spec defines "new classes to satisfy the J2EE role-based, authorization model. The specification will define the binding of container access decisions to operations on instances of these permission classes."

Sun's also posted a maintenance review draft specification for JSR-922 Java Communication API (version 2.0.3) in the JCP. The Java Communication API is used to talk to serial and parallel ports. (How many systems these days still have serial and parallel ports? Of those that do, how many actually use them? I think it's about time that this were extended to more modern connectors like USB and Firewire.) This release fixes a few minor bugs.

Next Sun's posted a maintenance review draft specification for JSR-120 Wireless Messaging API (version 1.1). This API defines "a set of optional APIs that provides standard access to wireless communication resources. This will allow 3rd party developers to build intelligent connected Java applications. The WMA is designed to run on J2ME configurations and to enhance J2ME profiles with unique functionality. The intention of this JSR is to offer a set of reusable components that can be used singly or in any combination within any J2ME profile." The big change seems to be a new appendix D about "Deploying JSR 120 Interfaces on a MIDP 2.0 Platform". Comments are due by January 13.

NASA's released the Application Installation API 1.1 (JSR-38) Specification in PDF format, reference implementation, and technology compatibility kit. This is "a set of interfaces and classes that support the cross-platform and robust installation of software."

IBM has also posted the second proposed recommendation of JSR-109 Implementing Enterprise Web Services in the JCP. This includes the specification in PDF format, reference implementation, and technology compatibility kit. 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."

IBM's posted the proposed final draft specification for JSR-110, Java APIs for WSDL, to the Java Community Process (JCP). According to the spec,

The Web Services Description Language [WSDL] is an XML-based language for describing Web services. WSDL allows developers to describe the inputs and outputs to an operation, the set of operations that make up a service, the transport and protocol information needed to access the service, and the endpoints via which the service is accessible.

Java™ APIs for WSDL [JWSDL] is an API for representing WSDL documents in Java.

Refreshingly, the reference implementation is open source, and you don't have to click through any license agreements to read the spec.

Sun's submitted JSR-199 Java Compiler API to the JCP. According to the JSR,

The Java™ Compiler API is a set of interfaces that describes the functions provided by a Java™ Language Compiler, and a service provider framework so vendors can provide implementations of these interfaces.

The interfaces abstract the way a compiler interacts with its environment. While the existing command-line versions of compiler receive their inputs from the file systems and deposit their outputs there, reporting errors in a single output stream, the new compiler API will allow a compiler to interact with an abstraction of the file system. This abstraction will likely be provided by an extension of the NIO facilities in Tiger (1.5), and allow users to provide source and class files (and paths) to the compiler in the file system, in jar files, or in memory, and allowing the compiler to deposit its output similarly. Diagnostics will be returned from a compiler as structured data, with both pre- and post-localization messages available.

In addition, the new API should provide a facility for a compiler to report dependency information among compilation units. Such information can assist an integrated development environment in reducing the scope of future recompilations.

Future versions of this API might expose more of the structure of the program, for example the declaration structure of the program (ala the javadoc API), program annotations (JSR 175) or even the code itself (ASTs: Abstract Sytntax Trees). These are not goals of the initial version of this specifications.

Comments are due by December 9.

Finally, Sun has submitted JSR-200 Network Transfer Format for Java Archives to the JCP. This proposes to define a "dense download format" for Java class files that is significantly smaller than compressed JAR files. The JSR claims:

In recent years, we have had great advancement of processor speeds with comparatively poor improvements in network bandwidth, leaving us with high performing, low cost systems operating on slow networks. With the growing popularity of the Java™ Programming Language, the overall size and volume of Java™ applications have multiplied and it is desirable to reduce the download size for large web deployed Java™ applications. Currently the Java™ platform uses Java™ Archive (JAR) encapsulation of these applications and their classes. The Java™ archive format can compress these classes at the byte level only, leading to a meager reduction factor of about two. We need to compress the classes much more efficiently, thus making network transfers faster and therefore more reliable.

An example of a more effective compression technology is the Pack format which was developed to reduce the download size of the JRE (J2SE Runtime Environment) installer for windows in J2SE v1.4.1 and J2SE1.4.2. The Pack format simultaneously organizes the layout of all classes and resource files within a JAR, removing repetitions of shared structures, and yielding a reduction factor of seven to nine. (This relies on a post-packing compression step using, an off the-shelf-utility such as zip.) After a comparatively fast download, the receiving system uncompresses and unpacks the data, producing a locally stored Jar archive equivalent to the originally packed Jar. The unpacked Jar file is ready for the consumption of the JavaTM applications and the VM.

Pack has proven very effective at compressing the Java™ class files delivered within the JRE. We would therefore like to develop a Java™ community standard so that a similar highly compressed format can be used by application developers to package their Java™ applications.

While Sun is offering the Pack format as a potential starting point for the Network Transfer Format, the Expert Group will also be open to evaluating other formats or to enhancing the Pack format to achieve better compression.

Comments are due by December 9.

Monday, December 2, 2002

The Legion of the Bouncy Castle has released version 1.16 of the Bouncy Castle Java Cryptography API, an open source, clean-room implementation of the Java Cryptography Extension (JCE). It supports X.509 certificates, PKCS12, S/MIME, CMS, PKCS7, and lots of other juicy acronyms. It also includes its own light-weight crypto API that works in Java 1.0 and later, and does not depend on the JCE. Personally, I've always found the JCE to be a bit of a mess. Making it compatible with U.S. law made it a lot more complex than it otherwise would have needed to be. Thus, this lightweight API feels like a breath of fresh air. Version 1.16 has a number of speed-ups, especially in AES, adds PGPCFB support, rewrites the SMIME/CMS classes to support the CertPath API and multiple recipients/signers, and fixes various bugs.

Nathan Fiedler's released version 2.11 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.11 adds views of threads and thread groups in the threads panel, remembers the widths and positions of the columns in the panels which use table displays, adds a breakpoint condition and monitor editors, includes a source view popup menu which can launch an external source editor, and fixes some bugs. JSwat is published under the GPL.

Michael Fuchs has posted version 0.3.2 of his DocBook Doclet that creates DocBook SGML and XML documents from JavaDoc. This release adds a new Swing application called dbdoclet.TiDbiT (The ineffable DocBook imprimatur Tool) to manage documentation projects. dbdoclet.TiDbiT can produce PDF output via docbook-xsl and fop. It also fixes various bugs.

Steffen Gemkow's JUnitDoclet 1.0.2 uses JavaDoc to generate skeletons for JUnit TestCases. This release fixes assorted bugs. JUnitDoclet is published under the LGPL.

Brian Westphal has released version 2.1.0 of his Java Parser/Parser Generator. It builds parsers from straight EBNF notation files. It's published under the GPL. This release supports code integrated with grammar files and fixes a few bugs.

Kevin Herrboldt's posted version 0.7.1 of OpenJNLP, an open-source implementation of the Java Network Launching Protocol that lies at the foundation of Sun's Java Web Start. Version 0.7.1 addresses some launching issues and corrects a Mac OS X user interface problem.

Teodor Danciu's posted version 0.4.4 of  JasperReports, an open source Java library for generating reports from XML templates and customizable data sources (including JDBC). The output can be displayed on the screen, printed, or written to XML or PDF files. Version 0.4.4 improves HTML output and fixes bugs.

Older news:

JanuaryJanuary, 2002January, 2001January, 2000January, 1999January, 1998
FebruaryFebruary, 2002February, 2001February, 2000February, 1999February, 1998
MarchMarch, 2002March, 2001March, 2000March, 1999March, 1998
April April, 2002April, 2001April, 2000April, 1999April, 1998
MayMay, 2002May, 2001May, 2000May, 1999May, 1998
June June, 2002June, 2001June, 2000June, 1999June, 1998
July July, 2002July, 2001July, 2000July, 1999July, 1998
August August, 2002August, 2001August, 2000August, 1999August, 1998
September September, 2002September, 2001September, 2000September, 1999September, 1998
October October, 2002October, 2001October, 2000October, 1999October, 1998
November November, 2002 November, 2001November, 2000November, 1999November, 1998
December December, 2002December, 2001December, 2000December, 1999December, 1998

[ Cafe au Lait | Books | Trade Shows | FAQ | Tutorial | User Groups ]

Copyright 2002 Elliotte Rusty Harold
Last Modified December 12, 2002