Sun's posted the Java XML Pack Winter 01 Release. This bundles together the:
Sun's posted the Public Review Draft Specification for Java Specification Request 77 J2EE Application Deployment Specification 1.4 to the Java Community process. Comments are due by January 18.
Sun's also posted the Public Review Draft Specification for JSR 98 JSR-000098 JAINTM User Location and Status API Proposed Final Draft Specification v1.0 to the Java Community process. Comments are due by January 18.
Sun's posted the Public Review Draft Specification for Java Specification Request 77 J2EE Management to the Java Community process. Comments are due by January 18.
One of my accomplishments over the Christmas break was to finally read Cryptonomicon from start to finish. It was fascinating page turner, as Neal Stephenson's books always are. But I do have one question regardiong a major inconsistency in the plot. Since it's a bit of a spoiler, I've put it on a separate page for anyone whose read the book.
I've returned to New York and my backups. Cafe au Lait and Cafe con Leche should be fully functional again.
The third prerelease of jEdit 4.0, an open source programmer's editor written in Java, has been posted. New features include disabling of two-stage save, a -noplugins command line switch, optional backups on every save, ActionScript syntax highlighting, an option to disable file system browser's tool bar, I/O errors are now batched into a single dialog box, ssmaller icons in file system browser, a new jEdit window icon, and many more too numerous to list here. In addition, many bugs have been fixed. jEdit now requires Java 1.3 or later. jEdit is published under the GPL, but PayPal donations are gratefully accepted.
Merry Christmas, Bon Noel, Feliz Navidad, Happy Holidays,
a Festive Kwanzaa, Joyeuse Fetes,
Season's Greetings, Happy Hanukkah, a joyous Winter Solstice
and all that. I have a small present for everyone today.
Chapter 9 of
Processing XML with Java has been posted.
This chapter begins the coverage of the Document Object Model (DOM)
by discussing its underlying data model and the
I hope you like it. :-)
Let's see if I can remember what I had planned to post on Friday, before a runaway cronjob deleted it. Sun has released JDK 1.3.1_02 for Windows, Linux, and Solaris. This is a bug fix release.
Yes, I know a runaway cron job replaced the December news with news from the same date last December. Possibly a crontab file I'd deleted got accidentally restored in a backup. Much more likely, I stupidly forgot to delete the old crontab file in the first place. Mea culpa. Mea maxima culpa.
I do have a copy of the old December news that got overwritten. Unfortunately, the old news is sitting in my Brooklyn apartment two thousand miles away from my parents' house in New Orleans where I'm spending the holidays, and for once I did not make complete copies of my web sites on my laptop. I tried, but Aladdin's StuffIt Deluxe crapped out when it was trying to make the necessary zip files, so I didn't get that done. I probably (no, make that definitely) should have figured out what the problem was and brought a backup with me; but I stupidly figured I could just download it off the web and didn't want to waste the extra time.
I do have a recent copy of the site with me on DLT tape in case my apartment building goes up in flames while I'm away, but unless I can find someone friendly in New Orleans with Retrospect and a DLT drive, that isn't any immediate help. There are mirror sites, but they haven't been updating since IBiblio switched to Linux and broke the mirror logins months ago. :-(
The short version is that news from the last week or two is temporarily lost in the ether. It will come back shortly before New Year's. I will still be posting new news here during the meantime. Thanks to everyone who wrote in to warn me of the problem.
Sun's posted a bug fix release for Java 1.3: Java 2 Standard Edition 1.3.1_02. It's available for Solaris, Linux, and Windows.
Researchers from Sun Microsystems Laboratories in Burlington, Mass. have released FreeTTS, an open source speech synthesis engine written in pure Java. It implements parts of the Java Speech API covering sspeech generation but not those related to speech recognition. FreeTTS is heavily based on earlier C and C++ work at the University of Edinburgh and Carnegie-Mellon. It's not clear which languages FreeTTS supports, but Festival advertises support for British English, American English, Spanish and Welsh Update: FreeTTS only supports English. Java 1.4 beta 3 is required.
released a new version of JSci, a class library containing many useful mathematical and scientific functions such as complex arithmetic. The
main changes in this release are in the graph classes.
You now need to write much less code to
extend the graph components.
There are new
The MathML Parser API can
convert simple MathML expressions
to JSci source code.
For the next chapter of
Processing XML with Java I want to compare the memory usage of different DOM implementations.
Does anybody know a simple way to determine how much memory a complicated nested graph of objects occupies? Object serialization is not an option, because the objects in question come from classes I didn't write and do not generally implement
Serializable (even leaving aside the question of how closely the serialized object structure would mirror the in-memory structure).
I'd like to avoid spending a huge amount of money on a profiling tool, but I could afford to spend something if I knew it would do what I needed.
Please send any suggestions to
Executor is a $20 utility that converts an executable .jar file into a self-contained Windows executable that invokes the JRE and runs your app. The jar contents are built into the executable so you only have one file to distribute, assuming your user has a JRE.
Kevin Herrboldt's released OpenJNLP 0.5.1, a JNLP launcher and provides an alternative to Java Web Start, an open source implementation of the Java Network and Launching Protocol. Version 0.5.1 "fixes some bugs from the previous version, most notably fixing updating of the app list when getting a new app and corrected the parsing of JNLP files to support properties."
After watching the bin Laden videotape and reading the transcript, I now think that bin Laden is in all likelihood guilty. I certainly hope he's caught and brought to trial, though by far the more likely scenarios right now seem to be that he either escapes or is summarily executed on the battlefield, either of which would rob us of justice.
One thing that shocks me about all this is the sheer ridiculousness of the motive. This wasn't about Palestinian oppression, children starving to death in Iraq, undemocratic monarchies propped up by American guns, or any of the legitimate grievances that exist in the Middle East. It seems likely that this happened because having non-Muslim soldiers in Saudi Arabia offended the religious sensibilities of a fanatic. The real problems in the Middle East probably helped bin Laden recruit the young men who murdered several thousand people on 9/11 and the others who've been fighting in the mountains and caves of Afghanistan for the last few weeks, but he couldn't have convinced them to throw their lives away without religion.
I'm not sure what else to say at this point. Killing people is still wrong, and it doesn't really matter whether they're lawyers in the World Trade Center or peasants in Afghanistan who've never heard of the World Trade Center. You shouldn't drop things out of the sky on top of them. That should be a pretty basic principal that we can all agree on. Unfortunately, "Do Not Kill" still seems to be conditional for a lot of people. It's conditioned on the color of their skin. It's conditioned on how rich or poor they are. It's conditioned on which country they live in, and which religion they do or do not profess adherence too. Most importantly, it's conditioned on how little they resemble the people holding the guns.
I'm still depressed about this. Yesterday my wife and I went to the theatre for the first time since the eleventh, and I came very close to breaking down in the first act, which had nothing to do with the play. I kept thinking about how wonderfully the year began in New York. We had the first big snowstorm of last winter, right at the start of a three-day weekend. The city looked gorgeous, and unusually for a storm of this size most of us New Yorkers didn't have to worry about which trains were running or digging our cars out or fighting the weather. Everyone just went out to the parks and the streets and played in the snow. It was a wonderful way to begin a new year and a new millennium, and it felt like a good omen. If only it had proved accurate. Instead we're facing unemployment and recession, rapid erosion of civil liberties, and continuing war. Needless to say, myself and a lot of other New Yorkers are still feeling a little depressed this holiday season.
IBM's alphaWorks has updated Tivoli JMX, an implementation of the Java Management Extensions (JMX) Specification, which "defines architecture, design patterns, APIs, and services for application and network management in Java. Tivoli JMX implements all of the specified JMX interfaces and classes but has yet to be tested for complete conformance by the JMX Technology Compatibility Kit." This release adds a new flexible logging facility, some "minor enhancements and bug fixes", support for DBCS, a new JAR Installer MBean, and documentation updates.
getMonitor()method that enables monitoring of local video.
IBM's alphaWorks has released JATE, the Java Test Case Driver, a tool for defining and running test cases for Java code and generating test coverage reports. Suites of test cases can be defined and run to perform unit tests, function verification tests, and system tests. Jate allows the execution of other test cases from within a test case, which makes it possible to build reusable test modules and automated test suites for regression tests.
Arrested Russian programmer Dmitry Sklyarov has cut a deal with federal prosecutors to drop the charges against him in exchange for his cooperation in the prosecution of his employer ElcomSoft. under the Digital Millenium Copyright Act. I'm not a lawyer, but it's not clear to me how exactly the U.S. intends to prosecute a company that's based exclusively in Russia. Sklyarov is still subject to court supervision for one year or until the case against ElcomSoft is complete, but will be able to return to Moscow.
Sun's released version 1.0.3 of the Java 2 Micro Edition Wireless Toolkit, "a set of tools that provides developers with the emulation environment,documentation and examples needed to develop CLDC/MIDP compliant applications." Java 1.3 or later on Windows is required.
Version 3.3 of the NetBeans open source Integrated Development Environment (IDE) for Java has been released. Version 3.3 cuts startup time in half, allows annotations in the editor, cleans up the user interface, and more.
The Castor Team has posted version 0.9.3.9 of Castor, an open source data binding framework for Java. Castor allows mapping the components of a given data format, such as SQL tables or an XML Schema, into a specific Java representation. Version 0.9.3.9 contains various new features and many bug fixes.
The Avalon team of the Apache Jakarta Project has released is version 4.1 of the Avalon Framework, Apache's Java Server Framework. Avalon is separated into five sub projects: Framework, Excalibur, LogKit, Cornerstone, and Phoenix. This release features many small corrections, addiiotns, improvements, and fixes.
Kevin Herrboldt's posted version 0.5 of OpenJNLP, an open source implementation of the Java Network and Launching Protocol. This release adds "meaningful user feedback during app launching." The cache has been overhauled and now provides automatic resource updating when resources are determined to be out of date. Launching has also been completely revamped resulting in a streamlined launch process. This release requires Java 1.2 or later.
NetNumber, Inc has submitted Java Specification Request 161, JAIN ENUM API Specification, to the Java Community Process. Thisn proposes to define a "portable application programming interface to query and provision E.164 telephone numbers and their service-specific Uniform Resource Identifiers (URI)." Comments are due by December 24.
I have a question that probably has a blindingly obvious answer to anyone whose familiar with Windows. I have a couple of PCs, one running Windows NT and one Windows 2000. Both log into the same file server automatically when they start up, or at least they used to. However, I recently changed the usernames and passwords on the server, and now the PCs insist on using the old usernames and passwords so I have to manually type in the password every time I boot up. Does anyone know how to make Windows remember a new password for an old server? Please send any suggestions to me at email@example.com. Thanks.
The Jakarta Apache Project has released version 1.2 of the Velocity Template Engine. Acccording to the web site, "When Velocity is used for web development, Web designers can work in parallel with Java programmers to develop web sites according to the Model-View-Controller (MVC) model, meaning that web page designers can focus solely on creating a site that looks good, and programmers can focus solely on writing top-notch code. Velocity separates Java code from the web pages, making the web site more maintainable over the long run and providing a viable alternative to Java Server Pages (JSPs) or PHP." Major improvements in this release include:
Version 0.9.2 of Lumberjack has been released. Lumberjack implements the the Java Logging API for JDK 1.2 and 1.3. Version 0.9.2 adds a GUI installer. Lumberjack is published under the Gnu LGPL.
Luxor is an open-source XML User Interface Language (XUL) toolkit for Java that supports hand-picked Mozilla XUL goodies and also includes a multi-threaded Web server, a portal engine, and Apache Velocity as its template engine. Luxor is Web Start-ready as everything fits in a single jar.
IBM's alphaWorks has updated the Install Toolkit for Java with "significant enhancements for Windows, Solaris, and Linux, and many other bug fixes." The Install Toolkit for Java is a program for writing installation programs for Java or non-Java programs that run on any platform that supports Java.
The University of Utah and the University of Washington has released ANTS 2.0.2. ANTS is the "Active Network Transport System, a Java-based execution environment for active network applications." Version 2.0.2 "is primarily a maintenance release that fixes some long standing bugs and contains a few conveniences for running it under anetd." ASNTS runs in Java 1.1 and later, and requires the Janos Java NodeOS (which is bundled).
Renato Datoc, a "long-time Cafe Au Lait lurker", wrote in to suggest Greg J. Badros's JavaML as an open source (LGPL) alternative to IBM's license-crippled Reengineering Tool Kit for Java. Both tools allow you to convert Java source code to XML, which can then be further processed via XSLT or other mechanisms to produce different formats like DocBook.
Greg Guerin sent in the following analysis of Curl, "yet another Java/HTML competitor."
(a) only a Windows version;
(b) no documentation except via the IDE: about which, see (a);
(c) provider-side licensing fees according to the size of the source code.
There's a preview version for Linux (presumably x86 Linux). Other non-Windows versions are also in the works, but no date given for any releases.
Tidbits from the pricing page, with my comments:
"Our license fees are $0.0005 per kilobyte of Curl language source code executed on a client device. This includes applets, packages and scripts written in the Curl content language; but does not include data or images. We only charge content owners or publishers, not end users."
It's not clear whether this is the raw size of the code, or the size of just the non-commenting source statements (NCSS). If it's the former, I'm sure that creating a direct monetary incentive to squeeze out every last byte from source files will only improve the reliability, robustness, and long-term maintainability of the code.
It's also unclear whether the fees apply for each use (download) of the code, or only for the first time. That is, do 10 page-hits from the same client to a Curlized (Curly?) page (click "Reload" 10 times in your browser) cost the page-provider 10 times the price of the initial page-load? If so, what a clever way to force a company to ring up charges against a third party (Curl Corp.). Even micro-fees eventually add up. Not to mention, what a fun new thing to do with an army of compromised slave/bot machines: distributed micro-fee run-up. And you thought DDoS was bad. A hacker wouldn't even need a large number of slaves.
"The Surge software platform and plug-in keeps track of Curl content executed and logs such usage."
I'm certain this will always be trustworthy, tamper-proof, and never a privacy risk. Remember, this log-entry is generated on the client-side (according to the description).
Yes, the page goes on to say exactly what's encoded into the logged entries. But where's the security layer that prevents tampering, forging, or replay attacks? And exactly when is this log-entry sent out, and to whom? Surely someone can record all the client IP-addresses along with each log-entry received, even if the entry's contents doesn't explicitly identify the client.
Oh, and remind me again how I examine or analyze the entire Curl security model without downloading and running the IDE?
Sun's posted the Maintenance Review Draft Specification for JSR-3 Java Management Extensions (JMX) Specification. This review closes on January 14, 2001.
Sun's also posted the Maintenance Review Draft Specification for JSR-21 JAIN JCC Specification. This review closes on January 14, 2001.
IBM's released version 2.0 of their International Components for Unicode, an open source library that includes:
ICU is available in both C and Java versions. This release updates to Unicode 3.1.1, improves transliteration and regular expressions, and fixes assorted bugs. It also switches to the X open-source license.
I've posted the first draft of SAX Filters, Chapter 8 of Processing XML with Java on Cafe con Leche.
This chapter covers the
XMLFilter interface and the
This chapter demonstrates how to write filters that modify the stream of events that flows between an XML parser and a client application.
This is a longish chapter, and some of the examples are a bit on the large side. I'm curious to know whether you think they make sense, or whether they're too long to follow. On the flip side, in several examples I've limited myself to only one class of several or even a single method, rather than including the entire set of classes needed to do something useful. I need to know if these are still comprehensible. As usual all comments are appreciated.
This is the last tutorial chapter on SAX. There'll be one more reference chapter later on. However, right now the first eight chapters form a very solid introductory text about processing XML with SAX2. If anybody notices any important topics in that domain that haven't been covered yet, I'd appreciate hearing about it. The next chapter will begin the coverage of DOM.
IBM's alphaWorks has released the Reengineering Tool Kit for Java, a tool for converting Java source code into XML documents. The XML documents aren't compilable, but they should be much easier to integrate into documentation. In fact, I may take a stab at using this to generate some of the reference appendices for Processing XML with Java. Java 1.3 or later is required. The license is unclear, but the download is free. Update: Anjan Bacchu reports that the license is non-commercial, evaluation only and will expire in 90 days.
I installed Java 1.4 beta 3 yesterday because I need to start using it for the second editions of a couple of books I'm working on. Swing performance is noticeably slower, but all my Java applications do still work, which is a relief.
On Windows, Sun still insists on installing two copies of the JRE with the JDK, one in the JDK folder and one in Program Files/Java. Not only is this a waste of space. It's very troublesome when the compiler and the intepreter have different JAR archives in their respective ext directories. Unlike Java 1.3, I was not able to figure out how to edit the registry to fix this brain damage. However, removing java.exe and javaw.exe from my WINNT directory did seem to allow me to use the JDK VM for both compiling and running Java.
Does anybody know if there's an open issue in the JDC Bug database about this? There's no really reason for Sun to be installing two separate VMs with the JDK. Nor should they assume they have access to the C: drive. In some places where I work, the C: drive is write-protected. I generally prefer to install most of my third party software on F:, but the JDK installer insists on putting JRE on my C: drive.
I've changed the host for www.cafeaulait.org. The switchover should be transparent. However, the address update is taking quite a while to propagate through the domain name system. I'm going to decommission the old site in the next few days so if www.cafeaulait.org stops responding, please try www.ibiblio.org/javafaq/ instead.
Christopher Clemens Lee has released version 15.32 of JavaNCSS, a GPL'd source measurement suite for Java. It can tell you how many "Non Commenting Source Statements" (NCSS) there are in your code as well as calculating the "Cyclomatic Complexity Number (McCabe metric)". This release adds a -out option for specifying the output file, an ANT task, and a basic ANT build file.
Slava Pestov's posted the second pre-release of jEdit 4.0, an open source text editor written in Java. New features include a MacOS plug-in for better integration with the Finder, some new Alt-key shortcuts added for commonly-used commands, and a View->Docking menu.
Sun's posted the proposed final draft specification of Java Specification Request (JSR) 51, New I/O APIs for the Java Platform in the Java Community Process.. This includes "APIs for scalable I/O, fast buffered binary and character I/O, regular expressions, charset conversion, and an improved filesystem interface."
Sun's also posted the public review draft specification for JSR-82 Java APIs for Bluetooth, a much hyped technology for interoperable wireless devices that seems to be following WAP's slide into irrelevance. Comments are due by December 29.
Last and probably least, Sun's posted the proposed final draft specification of JSR-17, JAIN ISUP Specification, a "Standard Java API for ISDN User Part (ISUP), an SS7 protocol."
|January||January, 2001||January, 2000||January, 1999||January, 1998|
|February||February, 2001||February, 2000||February, 1999||February, 1998|
|March||March, 2001||March, 2000||March, 1999||March, 1998|
|April||April, 2001||April, 2000||April, 1999||April, 1998|
|May||May, 2001||May, 2000||May, 1999||May, 1998|
|June||June, 2001||June, 2000||June, 1999||June, 1998|
|July||July, 2001||July, 2000||July, 1999||July, 1998|
|August||August, 2001||August, 2000||August, 1999||August, 1998|
|September||September, 2001||September, 2000||September, 1999||September, 1998|
|October||October, 2001||October, 2000||October, 1999||October, 1998|
|November||November, 2001||November, 2000||November, 1999||November, 1998|
|December||December, 2001||December, 2000||December, 1999||December, 1998|