September 2000 Java News

Friday, September 29, 2000

IBM's alphaWorks has updated ABLE, the Agent Building and Learning Environment. This is a toolkit from the IBM T.J. Watson Research Center for developing hybrid intelligent software agents and agent applications in Java. This release adds new neural and Bayesian learning algorithms, GUI enhancements, XML rule parsing, bug fixes, and documentation on adding custom beans. According to IBM:

ABLE provides a set of reusable JavaBean components, called AbleBeans, along with several flexible interconnection methods for combining those components to create software agents. AbleBeans implement data access, filtering and transformation, learning, and reasoning capabilities. Function-specific AbleAgents are provided for classification, clustering, prediction, and genetic search. Application-specific agents can be constructed using one or more of these AbleBeans. AbleAgents are situated in their environment through the use of sensors and effectors, which provide a generic mechanism for linking them to Java applications. A GUI-based interactive development environment, the Able Agent Editor, is provided to assist in the construction of AbleAgents using AbleBean components.

In the ABLE framework, an agent is an autonomous software component. It could be running on its own thread of control or could be called synchronously by another agent or process either through a direct method call or by sending an event. By combining one or more AbleBeans, agents can be extremely lightweight (e.g. a few lines of Java code) or can be relatively heavy weight, using multiple forms of inferencing (e.g. fuzzy rule systems, forward and backward chaining) and learning (e.g. neural classification, prediction, and clustering).

reads data from flat text files
filters, transforms, and scales data using translate template specifications
writes data to flat text files
Back Propagation
implements enhanced back propagation algorithm
Self-Organizing Map
supports batch updates, Gaussian neighborhood function
Boolean inference engine
processes if-then rules using forward and backward chaining
Fuzzy inference engine
processes if-then rules containing fuzzy sets and supports multi-step forward chaining
Naive Bayes
learns a probabalistic model for classification
Radial Basis Function
uses radial basis functions to adjust weights in a single hidden layer neural network
Temporal Difference Learning
uses reinforcement learning for time series forecasting; gradient descent is used to adjust
network weights

AbleAgents provided include:

Genetic search agent
manipulates a population of genetic objects which may include AbleBeans
Neural classifier agent
uses back propagation to classify data
Neural clustering agent
uses self-organizing maps to segment data
Neural prediction agent
uses back propagation to build regression models

Thursday, September 28, 2000

Borland's announced (but not shipped) JBuilder 4. The new release allegedley supports J2EE Enterprise JavaBean development, improves team collaboration features, and can debug Java Server Pages. However, the most interesting promised new feature is built-in support for CVS. That would be useful.

Wednesday, September 27, 2000

Matthias Pfisterer has released version 0.3.0 of Tritonus, an implementation of the Java Sound API for Linux and Windows. This release includes:

Tuesday, September 26, 2000

Sun's posted the first beta of the Java Media Framework (JMF) .1.1 on the Java Developer Connection (registration required). JMF is a standard extension API for audio, video and other time-based media. Version 2.1.1 updates the RTP API, improves lip-sync over RTP, optmizes MPEG over RTP, adds a DirectAudioRenderer for reduced latency, and extends the JMF Customizer to work on performance packs.

The US Supreme Court has refused the government's request to fast-track the DOJ-Microsoft case, which means it will go to Appeals Court first.

Monday, September 25, 2000

Sun's released the JAIN TCAP and JAIN OAM API specifications. JAIN stands for "Java for Advanced Intelligent Networks". Both of these are used in public switched telephone networks (i.e. the phone companies) but aren't of a lot of interest to most of the world.

Sunday, September 24, 2000

Luca Lutterotti has updated his "classic" MacOS Look & Feel for Swing. This release fixes assorted bugs, and is overall a little more Mac-like.

Slava Pestov's posted the seventh beta of JEdit 2.6, a programmer's editor written in Java and published under the GPL. This release fixes assorted bugs and adds some minor new features and UI enhancements.

Bill la Forge has released version 3.3 of Quick, a toolkit for integrating Java and XML. Quick's binding schema, QJML, binds XML elements and Java classes. In version 3.3, QJML now fully models Java inheritance and supports elements with non-unique names. This means that different Java classes can be bound to the same XML element name, depending on context.

Saturday, September 23, 2000

Sun's posted an early access version of JavaMail 1.2 on the Java Developers Connection (registration required). Version 1.2 fixes many bugs and adds several new features including:

Apple's released Mac OS Runtime for Java 2.2.3 to fix a few bugs, increase performance, and use less memory. This is still a Java 1.1 VM. To get 1.2, you'll have to upgrade to MacOS X. The big new feature in 2.2.3 is "JAR caching" which saves downloaded JAR archives on your local disk for later reuse. This release also has better support for applets with Chinese and Japanese file names.

Wednesday, September 20, 2000

After yesterday's rant about AppleScript several people (most in rabid agreement with my opinion of AppleScript) pointed me to Late Night Software's JavaScript OSA port. As long as I have to rewrite all my scripts anyway, maybe I can just port them to JavaScript. It isn't Java, but it's still leaps and bounds beyond AppleScript.

The ISO has formally closed the SC22 Java Study Group that was working on Java standardization. The group was effectively made meaningless by Sun's intense aversion to standards bodies, and never really accomplished much. A large part of the problem was that Sun repeatedly reneged on promises to adhere to various standards processes.

Sun's released the final version of the JDK 1.3.0 for Solaris.

Tuesday, September 19, 2000

Yesterday I upgraded from BBEdit 4.5 to BBEdit 6.0. Normally I avoid upgrades if at all possible and with good reason. It always breaks something. I'd avoided the upgrade to BBEdit 5.0, but I was getting annoyed with some of the bugs in BBEdit 4.5 that I thought 6.0 could fix, and I did need some of the new features like XHTML and XML support. (Incidentally, the upgrade hasn't fixed the main annoying bug in which the cursor is occasionally placed a line above or below where text will actually be inserted when I start typing. This bug is actually the result of another upgrade, from MacOS 8.5.1 to MacOS 9.0.4, an upgrade that significantly destabilized my system and is still causing several crashes a day. ) Unfortunately, this time proved to be no exception to the rule that upgrades always break at least as much as they fix. In particular, version 6.0 of BBEdit commits the mortal sin of completely changing its API so that all the scripts on which this site depends no longer run!

I'm slowly bringing all my scripts up to conformance with BBEdit 6.0. It's a long and painful process. A large part of the problem is that the language I'm using is AppleScript, possibly the worst designed programming language in history. Even Intercal would be an improvement. (OK, I'm exaggerating a little, but not nearly as much as you think I am.) Those of you who use AppleScript know whereof I speak. Those of you who don't, be glad; be very, very glad that you don't have to know just how bad it is. When inventing AppleScript, Apple designed a language that was supposed to be easy and intuitive enough for a novice non-programmer to use. They added lots of "easy-to-use" features like optional keywords and named variables that pop into and out of existence at unexpected places. The result is a morass that drives experienced programmers to distraction and is totally inaccessible to novices.

To give you just one example of the brain damage that is AppleScript, object properties (fields to Java programmers, member variables to the C++ crowd) can have names that include white space. In itself that's not too bad except that you can't use names that include white space in your code so that you can't actually access these properties from your program except through truly convulted painful indirections. Or at least you can't most of the time. Sometimes, for no apparent reason, you can. There's simply no predicting whether a given line of code will or will not compile.

Here's another example: the files aren't stored in plain text. Instead they're stored in a semi-compiled format that's dependent on the class libraries built into various applications. Upgrade or delete an application and instead of source that at least tells you what you we're trying to do you're looking at something like this:

tell «R*ch» to find "<!-- lm -->.*<!-- lm -->" with «class Grep» without «class Xsel»

What I originally wrote was the much more intelligible

tell application "BBEdit 4.5" to find "<!-- lm -->.*<!-- lm -->" with grep without extend selection

At least that's what I think I wrote. I can't really tell any more since AppleScript threw away my original source code! Imagine a Java editor that compiled everything to byte code, deleted your .java files, and expected you to edit the .class files directly from that day forward. That's the sort of brain damage AppleScript programmers struggle with every day.

The reason I and many other Mac users still use AppleScript is that although AppleScript itself is a travesty, there's a lot of power to be had by integrating all the different scriptable applications on a typical Mac. Doing what I do on Windows or Unix would be far more difficult since applications on those systems are not designed to be scripted. The AppleEvents model is quite powerful, even if the language most people use to access it is abominable. What's needed is a better language. There are alternatives to AppleScript, though most of them have problems of their own. What I really want is a Java-like language that can access the Open Scripting Architecture (OSA) on the Mac.

I don't have that yet, so in the next couple of days you may notice a couple of bugs in the system here as I try to port all my back end scripts to the new version of BBEdit. If you do notice a problem (say the quote of the day swapped with today's news or some such), please drop me a line so I can fix it manually. Thanks.

Monday, September 18, 2000

Sun has officially released version 1.2.1 of the Java Cryptography Extension. I strongly recommend that you do NOT upgrade from version 1.2.0. The only "functionality" this release adds is restrictions on who is allowed to implement cryptographic service providers. In this release all cryptographic service providers must be trusted and signed by Sun or IBM. Furthermore, Sun will only trust and sign service providers from companies that agree to adhere to U.S. export law, even providers that are outside the United States and are not required to adhere to U.S. law! Details are not provided for how to get IBM to sign a service provider, but they're likely similar. Both Sun and IBM are large U.S. companies with strong ties to the U.S. military-industrial complex that can be trusted not to rock the boat. Furthermore, mutual authentication helps ensure that service providers are not installed into a hacked version of the JCE that does not require Sun or IBM's code signing.

I'll have an addendum for Who Trusts the Trustees?Who Trusts the Trustees? soon to discuss these issues. In the meantime, the important point to remember is that this upgrade offers no benefits to anybody except those in the U.S. government trying to restrict the broad availability of strong cryptography around the world. You should not install it, and you should begin exploring alternative, non-encumbered cryptographic APIs such as the open source Cryptix. While Cryptix is currently an implementation of the JCE 1.2, the digital signature authentication requirements in JCE 1.2.1 probably make a fork inevitable.

Apple's posted the release notes for the version of Java included with MacOS X beta. In brief, it's a good 1.2.2 environment on its way to 1.3 with some annoying but non-critcial problems in the AWT.

Friday, September 15, 2000

Monash University has released version 1.1.1 of BlueJ, a free IDE aimed at education. This is a bug fix release.

Thursday, September 14, 2000

Apple's released the first public beta of MacOS X, a BSD-Unix based system. It does bundle Java 1.2 and parts of 1.3 including javac and the other usual JDK command line tools. These may or may not be included in the final release next year. More sophisticated developer tools are available by joining the Apple Developer Connection for $400 a year and a non-disclosure agreement.

The MacOS X beta is only available on CD for $29.95. (At least that's what Apple's announced. The Apple Store doesn't seem to be taking orders for it just yet.) It is not available for download. Worse yet, after paying to help beta test Apple's buggy software, users will have to pay Apple again for the release version. MacOSX runs on all G3 and G4 desktop PowerMacs and iBooks with a minimum of 128MB of memory. Processor upgrade cards are not supported.

Sun's released the second Public Review Draft of the Enterprise JavaBeans 2.0 Specification and the first Public Review Draft of the JDBC 3.0 Specification. Both are available in PDF and PostScript only. Review for both closes on October 12, 2000.

Tuesday, September 12, 2000

I'm still working on fixing the problems with bouncing pages caused by the unexpected domain name change to All links to the old domain name should still work, though I have found some unexpected problems in obscure services. Most pages should work, but I haven't tested the entire site At this point, if you see a page that won't load because of the redirection, please drop me a line with the complete URL you were trying to reach so I can fix it manually.

Sun's released version 1.1.1 of JavaHelp. This is a minor bug fix release.

Monday, September 11, 2000

You may get infinite loops on some of the pages inside this side and at Cafe con Leche. I'm working on fixing it, but it may take a little while. If you desperately need to get to something, try turning off JavaScript. You don't need to report any problems right now. I'm aware of them, but there's not a lot I can do about them. The webmasters changed the domain name out from under me last night and installed a new redirector without notice. I'm trying to get them to turn it back off.

IBM's alphaWorks has released Carribean, a Java framework for building Web applications providing asynchronous, event-handling, and monitoring services. Each user can keep a persistent "Event-Driven Object" like an "Agent" at server side.

AlphaWorks has also updated their BigDecimal class with a new toBigIntegerExact() method, faster multiplication, some bug fixes and updated documentation.

Sunday, September 10, 2000

I've cleaned up and posted the complete set of examples and source code from the second edition of Java Network Programming. This provides over one hundred different working network programs covering topics from sockets to the Java Mail API. I'll make a zip archive once I've had a chance to triple check everything.

Slava Pestov's posted the sixth beta of JEdit 2.6, a programmer's editor written in Java and published under the GPL. This release has assorted bug fixes and minor UI changes.

Saturday, September 9, 2000

There's lots of new and updated wspecs from the Java Community Process in the last week. First off, the Java Management Extensions (JMX) expert group has released the final version of the JMX specification in PDF format.

The Proposed Final Draft Specification for JSR 000036 Connected Device Configuration has been posted as a zip archive of JavaDocs. This describes what a Java virtual machine intended for 512K minimum ROM available, 256K minimum RAM, networkable devices must provide.

Finally, the Proposed Final Draft Specification for JSR-000046 J2ME Foundation Profile has also been posted as a zip archive of JavaDocs. This describes a set of APIs for applications running on small devices with some type of network connection.

Friday, September 8, 2000

Sun's posted a release candidate of JDK 1.3 for Linux on the Java Developer Connection (registration required). This includes HotSpot. There aren't any new features here, just bug fixes and performance improvements.

Thursday, September 7, 2000

ISNetworks has published an open source Java implementation of the RSA public key cryptography algorithm. It can perform encryption and decryption using either PKCS #1 padding, or OAEP padding, as well as digital signatures using PKCS #1 padding. Java 1.2 or later and the Java Cryptography Extension (JCE) 1.2 are required. You can also use a third party JCE implementation like Cryptix or the OpenJCE. However, Sun's JCE 1.2.1 will not workbecause it requires all cryptographic providers to be signed by Sun. (See my article Who Trusts the Trustees? for details on that last point.)

Zero G Ships has released InstallAnywhere 3.5, their cross-platform installer tool for Java. Version 3.5 adds Java 1.3 compatibility and Linux support. There are three versions: the Enterprise Edition, the Standard Edition, and Now!. InstallAnywhere Enterprise Edition is $1,995. The Standard Edition is $995, and InstallAnywhere Now! is free (as in beer). Upgrades are a little less than half those prices.

Mercatis Information Systems has released wingS, a servlet development library that uses Swing models, Swing events and the Swing API. The Java Servlet Development Kit 2.0 and JDK 1.2 are required wingS is published under the LGPL.

Wednesday, September 6, 2000

Python 2.0 beta 1 has been released. Most important are the new modules including XML support and internationalization. These include:

You also now have the option to collect cyclical garbage. (If I understand this right, this isn't anything Java hasn't been doing since 1.0 alpha 1.) Python 2.0 has also been sweetened with lots of syntactic sugar including:

The XML Apache Project is now publishing nightly builds of the Tomcat 4.0-dev development tree (which is being updated to support the new Servlet 2.3 and JSP 1.2 draft specifications) in both source and binary form. The binary distributions are available from: This code is not yet ready for production use, but should be useful to anyone who wants a head start on Servlet 2.3/JSP 1.2.

Slava Pestov's posted the fifth beta of JEdit 2.6, a programmer's editor written in Java and published under the GPL. This release adds a jEdit Command Line, rudimentary keyboard navigation in the VFS browser, and an activity log.

Tuesday, September 5, 2000

Chris Kelly's released JConfig 2.1, a class library that adds native functions for working with files, web browsers, processes, file types, and other system-level items the standard Java API does not expose. Version 2.1 mainly fixes and enhances file attribute handling on Windows and Mac.

Monday, September 4, 2000

IBM's submitted Java Specification request (JSR) 80, a USB API. This would let Java communicate with anything connected to the USB port including hubs, mice, keyboards, hard drives, CD burners, etc. Comments are due by September 11, 2000.

Sun's also posted JSR-79, the JAIN MEGACO Protocol. This was submitted by Hughes Software Systems Ltd. From the JSR:

The MEGACO/H.248 is a new protocol belonging to the Gateway Control class of Protocols. It is a protocol proposed jointly by IETF and ITU-T that specifies the syntax and semantics of messages that are used by the Call Agent (alternately called as the Media Gateway Controller in the Decomposed VoIP Gateway architecture terminology) to control and thereby establish media connections in a Gateway (alternately referred to as the Media Gateway in the Decomposed VoIP Gateway Architecture terminology). The protocol defines a model for the Gateway comprising objects called as Contexts and Terminations and defines APIs by which the Call Agent can manipulate these objects within the Gateway.

There are also new RFCs from the IETF covering Megaco Protocol 0.8 and Megaco Errata. Frankly, the actual description of this protocol sounds rather boring, but any protocol whose name sounds like a new Godzilla monster can't be all bad. :-) Comments are due by September 11, 2000.

Saturday, September 2, 2000

Unicode 3.0.1 is now available as a list of changes to Unicode 3.0. This is a pretty minor update. The changes won't affect most users.

Friday, September 1, 2000

Sun's released version 1.0.2 of the Java Secure Sockets Extension (JSSE). The JavaTM Secure Socket Extension (JSSE) is a Java package that enables secure Internet communications. JSSE implements the Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols. It includes "functionality for data encryption, server authentication, message integrity, and optional client authentication. Using JSSE, developers can provide for the secure passage of data between a client and a server running any application protocol (such as HTTP, Telnet, NNTP, and FTP) over TCP/IP."

The big change in this release is that stronger cryptographic algorithms are now included in the export version of JSSE as well as the domestic version. However, they are not the same. The domestic version allows alternate SSL security providers; the global version must use the Sun SSL provider. I consider it possible that the Sun SSL service provider has been deliberately compromised to open backdoors to the NSA. I do not know that any such such backdoor exists, but Sun's close ties to the U.S. military-industrial-espionage complex don't lend themselves to trustworthiness. (See Who Trusts the Trustees? for some background on this.)

Other more minor changes include:

The JSSE is covered in depth in Chapter 12 of my recently released book, Java Network Programming, 2nd Edition. At first glance I don't think I'm going to need to write any update to cover this. The changes all appear to be in implementation, not in the public API.

You can also read the news from July, August, June, May, April, March, February, January, December, November, October, September, last August, or last July if you like.

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

Copyright 2000 Elliotte Rusty Harold
Last Modified October 8, 2000