Java-Python Extension (JPE) 2.0 has been released. "JPE lets you call Java objects and classes from Python, and vice-versa, within the same process space. JPE is reentrant (cross-language callbacks), and supports multi-threading concurently in Java and Python." This release improves the build system, which is important because it's distributed in source form only. Version 2.0 also adds Java bean support and cross-language native array access.
Version 2.2.5 of Java Service Wrapper, an open source "tool which allows Java applications to be installed and controlled like a native NT/Unix service" has been released. This includes "fault correction software to automatically restart crashed or frozen JVMs."
Sun's posted the proposed final draft of the J2EE Management Specification. This "defines a management information model for the J2EE platform, the J2EE Management Model. The model is designed to be interoperable with many management systems and protoccols. This specification includes standard mappings of the model to the Common Information Model (CIM), an SNMP Management Information Base (MIB), and to the Java object model through a server resident Enterprise JavaBeansTM (EJBTM) component, known as the J2EE Management EJB Component (MEJB). The MEJB provides interoperable remote access to the model from any standard J2EE application."
Sun's also posted version 0.9.4 of the Public Review Specification for JSR-22 Java Advanced Intelligent Networks (JAIN) Service Logic Execution Environment (SLEE) API Specification. "The specification includes complete descriptions of all the interfaces, classes, exceptions and requirements to develop portable telecommunication services and application framework so that services once developed will run on any JAIN SLEE compliant execution environment."
Apple's posted Macintosh Runtime for Java 3.2, an update to the MacOS X Java VM. It's available through the software update control panel. This release is still Java 1.3.1, not Java 1.4. (A preview but probably not a preview release of Java 1.4 on MacOS X is scheduled for Apple's WWDC conference in May.) Initial reports say that this release is much faster and fixes numerous bugs. According to the release notes, the "update delivers improvements for text, mouse, and printing components, as well as improving overall stability and compatibility." MacOS X 10.1.3 is required.
The JBeans project has released version 1.0 of their open source, genetically enhanced clone of the
java.beans package. "JBeans removes the need to do tedious reflection and does most of the work for you. It also provides support of nested properties and a complete type conversion system, which was non-existant in most other packages." Version 1.0
also adds the ability to create thread safe versions of the key classes in the package.
jPOS 1.4.0 has been released. jPOS is an "ISO-8583 library/framework that can be used to implement financial interchanges, protocol converters, payment gateways, credit card verification clients and servers (merchant/issuer/acquirer)." Version 1.4.0 adds support for Java Management Extensions (JMX), a new reliable store and forward channel, and various bug fixes.
GeoTools 0.8.0, an open source Java Geographical Information Systems (GIS) toolkit, has been released. "The emphasis is on client side mapping applets which require little or no server side support. The main file format for the moment is the ESRI shapefile."
DMS's Kopi version 2 has been released. The Kopi Project GPL'd Java "development environment for database applications using Java, JDBC and JFC/Swing." Tools include:
New features in this release include generic types, covariant return types (whatever those are), and greater programming by contract support than standard Java 1.4 assertions. that is byte-code (bit nut source code) compatible with the JVM. Java 1.2 or later is required.
Giovanni Martone's BeanMaker 1.1 is an open source tool for building JavaBeans from XML documents.
I'm pleased to report that late last night, I finally managed to get Gnome to launch automatically instead of icewm when I bring up X on my Linux laptop. I still don't know how I did it, really. None of the various configurations people suggested in .xinitrc or /etc/sysconfig/desktop or typing startx gnome-session instead of just startx had any noticeable effect. What did finally work was using drakconf to make the modifications instead of editing the files directly in vi and booting X automatically when my system starts instead of bring it up as a command line and then using startx.
As a side benefit, this version of Gnome finally gives me a menu item to shut down or reboot the computer so I no longer have to su to root just to halt the system.
GNOME Desktop 2.0 Beta 1 has been posted. New features include anti-aliased text, better internationalisation, and more accessibility features for disabled users. Personally I'm still trying to figure out how to get Gnome 1.4 to start automatically instead of icewm when I launch X.
Sun's posted the proposed final draft of the J2EE Deployment API Class Files 1.0. "This API allows any tool to deploy J2EE applications to any J2EE platform."
The finished versions of several Operations Support System (OSS) Trouble Ticket API related specifications and software have been released. These include:
In addition, Sun has posted early access releases of the OSS Quality of Service API Reference Implementation and Technology Compatibility Kit 1.0 and the OSS Service Activation API Reference Implementation and Technology Compatibility Kit 0.2 on the Java Developer Connection (Registration required).
Moniek Johansson suggested I add Audiogalaxy to my recent tests of P2P services. As near as I can tell, Audiogalaxy is a lot more like the original Napster than either Morpheus/Kazaa or Gnutella. The main directory is stored on a server and only audio files are shared. This apparently makes a big difference, because it was also as effective as the original Napster. It was far more effective at locating obscure songs by moderately well-known bands than the other services. I found dozens of songs I wanted that were simply not available on the other networks including a large collection of Quarterflash songs I hadn't listened to in years because I only had them on tape instead of CD. (For the last several years my PC has served double duty as my office audio system.) On the other hand, Audiogalaxy wasn't any more successful at locating songs by obscure bands. Given that, I'm beginning to question the common claim that P2P networks are going to help lesser-known bands achieve parity with the ones represented by the major labels.
Voyager JBoss OpenTool is an OT for JBuilder 6 Enterprise Edition that integrates the open source JBoss application server into JBuilder the same way other payware application servers like WebLogic are integrated.
netx-0.3 is an open-source Java Netork Launching Protocol (JNLP) client, "which means that it downloads code over the network, caches it, and runs it on the client computer. Sun's Java Network Launching Protocol (JNLP) uses an XML-based format for specifying what code to download and run from the network to run Java applications, applets, and installer programs."
Columba 0.9.5 is an open source email client written in Java 1.3. It supports multiple POP3/IMAP accounts, message filtering, and an address book.
Slava Pestov's posted version 4.0pre6 of jEdit, an open source programmer's editor written in Java. New features in this release include enhanced quick copy, Modula-3 syntax highlighting, Smalltalk syntax highlighting (Marcio Marchini), support for macros written in other languages, support for pluggable fold handlers. and various small enhancements and bug fixes.
The Jakarta Apache Project has posted
beta 3 of log4j 1.2, an open source implementation of the
Java Logging APIs.
adds JMX support, Mapped Diagnostic Contexts, and
buffered IO capability. It replaces the
Category class with
Logger class and the
Level class "in
order to facilitate migration from the JDK 1.4 logging API to
I have a request to make of the log4j team, as well as all the other Java programmers at the Apache Project, IBM alphaWorks, Sun, and everyone else who distributes JAR archives. Could you please attach a version number to all your JARs? I maintain several systems whose ext directories I try to keep in sync. However, it's extremely difficult to do this when there's no straight-forward way to look at log4j.jar (or xercesImpl.jar, servlet.jar, jedit.jar, saxon.jar, or any of the several dozen other jar archives I work with on a daily basis) and quickly tell which version it holds. I personally experience this problem mostly with XML related jars, but the problem is hardly unique to XML. It's especially problematic when some other software requires a particular version of a third-party jar. For instance, IBM alphaWorks' XML Security Suite works with Xerces 2.0 beta 2 but not earlier or later versions. The Apache XML Security project works with the release version of Xalan 2.2 or later. My own XInclude software works with Xerces 1.4.0 through 1.4.3 but not earlier or later versions.
Mostly I just add numbers to the jar archives when I copy them into my ext directory. However, that step is often forgotten, and it's almost never been done when I'm working with somebody else's system (e.g. trying to debug some student's homework for him or her). And when a distribution like FOP bundles several third party jars like Batik and the Bean Scripting Framework, they often don't bother to tell you which version they've bundled. It would be much easier if all JARs included appropriate version numbers in their names. It's also important that JARs name themselves with their sources for JARs that may come from multiple places. A good example of what to do is the Bouncy Castle JCE implementation. It's called "bc-jce-jdk13-112.jar". You can tell at a glance that it's version 1.1.2 of the Bouncy Castle implementation of the Java Cryptography Extension for Java 1.3. Even if that isn't obvious, you most certainly won't confuse this with any other implementation of the JCE (of which there are several).
I did some experimenting this weekend with various P2P sharing programs. I've been a Limewire user for some time, but recently I'd been having trouble finding some of the more obscure items I was looking for (mostly defunct New Orleans bands from the early 80s like The Cold and the Red Rockers) so I decided to give some alternatives a try. All tests were performed on Windows using my 784Kbps SDSL line. Here's what I learned:
All the programs are roughly equal when it comes to locating obscure music. Kazaa did manage to find one song the Gnutella programs and Morpheus couldn't find (China by the Red Rockers), but mostly the stuff I was looking for was too obscure for any of the networks, despite repeated searches over several days.
The combination of Half.com, eBay, and Amazon are much more reliable at finding older music, even when it's out-of-print, than the music sharing programs. I ordered used copies of two John & Mary CDs and may yet order the Red Rockers double CD. However The Cold's 16 Songs Off a Dead Band's Chest has still not been located. I may have to haunt some used record stores in New Orleans the next time I'm in town for that one.
Kazaa installs spyware even when you explicitly tell it not to.
The Kazaa/Morpheus networks uploaded files from my PC to other users much more frequently than LimeWire/Gnutella. On a typical day I might see one upload an hour on Gnutella. Kazaa generally had several uploads going on simultaneously. This is with the same collection of shared MP3s.
Downloads were much slower in Kazaa/Morpheus than LimeWire/Gnutella. Limewire routinely gives me at least 5 Kilobits per second (Kb/s), often 20 Kb/s, and sometimes as high as 60 or 70 Kb/s. Kazaa/Morpheus never exceeded a few kilobits per second, and often dropped below one kilobit per second. A relatively small MP3 could take nearly an hour to download. Possibly Kazaa/Morpheus has many more freeloaders and relatively few users willing to donate significant portions of their bandwidth to uploads.
On the Gnutella network, more than half of my uploads are either Pink Floyd or Tom Lehrer. (Poisoning Pigeons in the Park is particularly popular.) In Kazaa, the song choice seemed fairly evenly spread out over my entire collection. I have no idea what this means.
None of the GUIs were noticeably faster than the others. Morpheus did crash once. LimeWire, written in Java, has the best interface of all the programs I tried. This may perhaps reflect my greater familiarity with that program than the others I tried. Even so, however, we've definitely reached a point where the attractiveness and usefulness of GUIs depends more on individual design than on whether the GUI is written in Java or native code.
The first beta of version 1.1 of the SQuirreL SQL Client has been released. SQuirreL is a Java program that allows you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc in a GUI. Version 1.1 is based on a plugin architecture. Java 1.2 or later is required.
Jim Menard's posted DataVision 0.1.9, an open source "database reporting tool similar to Crystal Reports". DataVision is written in Java and supports multiple databases including PostgreSQL, mySQL, and Oracle.
Sun's posted the Japanese Supplement for the Java 2 SDK, Enterprise Edition, 1.3.1. This is a set of resource bundles containing Japanese localized messages. Localized tools include the deploytool, packager, verifier, and j2eeadmin as well as various documentation.
Sun's posted version 0.9 of the JSR-135 Mobile Media API Public Review Specification in the Java Community Process. This API provides "a high-level interface to sound and multimedia capabilities of a device running" Java 2 Micro Edition (J2ME).
The JBeans Project has released an open source clone
java.beans package under the LGPL.
The current version is 0.9.5.
Sun's posted the proposed final draft specification for Java Specification Request (JSR) 144, OSS Common API to the Java Community Process. According to the JSR:
The OSS through Java initiative (OSS/J) is focused on the operations and business support systems ("back office systems") of service providers. The OSS/J APIs are targeted at OSS developers within network equipment vendors, independent software vendors (ISVs), system integrators, and service providers.
There are currently three different OSS/J JSRs which are in, or completing, public review (OSS Service Activation API -JSR 89-, OSS Quality of Service API -JSR 90- and OSS Trouble Ticket API -JSR 91-). In addition, two new OSS/J JSRs (OSS IP Billing API -JSR 130- and OSS Inventory API -JSR 142) have been initiated and the initiative expects more OSS/J JSRs to initiate in the near future.
As a result of tight collaboration among the members of the OSS/J initiative, these JSRs have a consistent architecture and they share common design patterns. As a result, they have common base interfaces and classes, such as data types and exception definitions.
This specification will document and specify these common base interfaces and classes to avoid duplication of these interfaces and classes in each of the above OSS/J JSRs and to maintain consistency of these interfaces and classes across these JSRs.
The Jakarta Apache Project has posted the first beta of version 3.3.1 of Tomcat, an open source servlet container for the Apache Web server that supports the Java Servlet API 2.2 and Java Server Pages 1.1. Version 3.3.1 "contains many bug fixes and a number of small feature additions."
Sun's submitted Java Specification Request (JSR) 169, JDBC Optional Package for CDC/Foundation Profile, to the Java Community Process (JCP). This proposes developing "a JDBC Optional Package for Java 2 Micro Edition (J2ME), Connected Device Configuration (CDC) Foundation Profile. This optional package will contain equivalent functionality to the java.sql package provided in Java 2 Standard Edition (J2SE). The functionality required should be adjusted to take into account the limitations of CDC in terms of size, functionality and removal of deprecated APIs. The JDBC Optional Package for CDC would provide a strict subset of the functionality available in J2SE." Comments are due by February 19.
Day Software has submitted JSR-170 Content Repository for Java Technology API to the JCP. According to the JSR:
The API should be a standard, implementation independent, way to access content bi-directionally on a granular level within a content repository. A Content Repository is a high-level information management system that is a superset of traditional data repositories. A content repository implements "content services" such as: author based versioning, full textual searching, fine grained access control, content categorization and content event monitoring. It is these "content services" that differentiate a Content Repository from a Data Repository.
Many of today's (web)applications are interacting with a content repository in various ways.This API proposes that content repositories have a dedicated, standard way of interaction with applications that deal with content. This API will focus on transactional read/write access, binary content (stream operations), textual content, full-text searching, filtering, observation, versioning, handling of hard and soft structured content.
Comments are due by February 19.
Sun's released Java 1.4 (a.k.a. JavaTM 2 Standard Edition JavaTM Development Kit and JavaTM 2 Standard Edition JavaTM Runtime Environment, but how about I just call it Java 1.4?) for the usual batch of platforms, Linux, Windows, and Solaris. I've been running the various release candidates and betas for a while now, and mostly it seems to work. However, they're don't seem to be any stunning new features, at least not to me. The one most people are excited about is assertions. However, I continue to maintain that this is completely pointless in a language with exceptions. The way Java implements them, they're nothing more than syntax sugar for throwing exceptions that can be turned off at runtime (which is not something anybody should actually do).
There's a lot more bundled XML support, which is a bad thing because the unbundled support from the XML Apache Project and elsewhere is a lot more up-to-date and reliable. Fortunately, you can replace Sun's bundled implementations by using the new endorsed Extension mechanism. In brief, put.jar files in $JAVA_HOME/lib/endorsed and the VM will add them to its boot classpath ahead of the standard .jar files. That's a nice feature.
The Java Cryptography Extension in this release is a mess. The requirements for signed code are beginning to seriously interfere with third party crypto providers like IBM, Cryptix, and Bouncy Castle. I'm not sure if it's actually impossible to install a third party JCE implementation or just so difficult that I couldn't get it right after several hours of attempts. Either way I see this as a major problem, especially given my fear that Sun's inserted back doors into their JCE. (Call me paranoid, but I don't trust any non-source-available crypto implementation, doubly so when it comes from a company with massive ties to the U.S. military and government.) Most users will just default to Sun's implementation without a great deal of though. I do wish the open source crypto providers like Cryptix and Bouncy Castle would ditch their JCE compatibility and provide a much simpler cryptography API. The main reason Sun's is so complicated is precisely so they can lock out non-U.S. users from strong cryptography. If you designed an API from scratch without that requirement, you could come up with one that was a lot simpler and easier to use. (Actually it looks like Bouncy Castle has already done that. Now if third party products like XML-Security would just start coding to that API instead of JCE.)
In brief, I recommend you don't upgrade from 1.3 unless you have a specific need for a new feature in this release.
IBM's alphaWorks has updated their KeyMan tool with support for Java 2 KeyStore and Windows certificate stores. "KeyMan is a management tool for the client side of the public key infrastructure (PKI). KeyMan manages keys, certificates, certificate revocation lists (CRLs), and the respective repositories for storing and retrieving these items." It is written in Java, and requires Java 1.1 or later.
The Apache The Tomcat Team has released version 4.0.2 of Tomcat, an open source servlet container that's can be integrated with the Apache web server or run standalone. Highlights in this release include:
Greg Guerin's released "Notifications for Java". This implements the Macintosh Notification Manager in Java and runs on both MacOS 9 and MacOS X. It's distributed under the open source Artistic License.
I've posted Output from DOM, Chapter 13 of Processing XML with Java. This chapter answers the question of how, once you've built a DOM document in memory, to you stuff it back into a text file. The answers are distressingly implementation dependent, but I tried to stick to the most broadly useful techniques. This chapter includes a lot of bleeding edge material from DOM Level 3 and Xerces-2.
This is the last major chapter I have planned on DOM. Chapters 9 through 13 cover pretty much the entire range of the Document Object Model Level 2, with more than a few excursions into DOM3. Possibly, I'll add a chapter on abstract schemas at a later point if the implementations gel enough by the time I have to hand over the finished book to the publisher, and I'll probably discuss DOM3 XPath in Chapter 16. However, right now these five chapters pretty effectively cover the state of the art in DOM programming. The next two chapters are scheduled to cover JDOM, but I'm probably going to go out of order and write chapters 16 and 17 next. These cover XPath and XSLT APIs .
Sun's posted the proposed final draft of the Java 2 Enterprise Edition (J2EE) Deployment API Specification.
Sun's posted the maintenance review draft specifications for JSR-36 Java 2 MicroEdition (J2ME) Connected Device Configuration and JSR-46 J2ME Foundation Profile. Review closes on March 11. The changes appear to be quite minor and only affect documentation.
Slava Pestov's posted the fifth prerelease of jEdit 4.0. New features since the last prerelease I announced here include:
IBM's alphaWorks has updated their Focus code coverage tool to fix compatibility with Java 1.3.
Sun's announced a release candidate of Java 1.4 for general download. However, I think this is just the RC1 that was available earlier from the Java Developer Connection. Update: this is defnitely just the earlier release candidate. Nothing has changed.
Sun's posted the Winter 01 Update Release of the Java XML Pack. This bundles:
Sun's also posted the second public review draft specification of the Java API for XML-based RPC.
IBM's posted version 1.3.1 of their Java Software Development Kit for for Windows that's been optimized for the Itanium chip. This release improves performance and reliability; includes a just-in-time compiler, and new garbage collection technology.
IBM's alphaWorks has posted a bug fix release of their Regex for Java library to correct an incompatibility with Java 1.4.
Sun's released version 1.0.2 of the Java Access Bridge for Windows. This tool enables Windows based Assistive Technology to interact with the Java Accessibility API implemented in Swing. This is a bug fix release "that addresses compatibility problems with Java 2 SDK 1.3, as well as includes improvements to the installer."
Erik C. Thauvin's written a JSP Tag List for UltraEdit.
The Apache Avalon team has released version 4.1 of Excalibur. Excalibur contains several premade Avalon Components and utilities for server side programming including several pool implementations, component management implementations, and database management implementations.
I upgraded my laptop to Mandrake Linux 8.1 this weekend. It basically works, but there are a couple of issues:
The first login always fails. I type my user name and password. Then the computer runs some text across the screen way too fast for me to read, then presents me with the login screen again. The second time I try to login it succeeds. If this didn't start happening right after I upgraded (from an official Mandrake CD), I'd be convinced somebody was trying to steal my password. As it is, I'm not absolutely convinced that's not what's going on, but it seems more likely this is just some bug or configuration error. If it matters, I am not using a graphical login and do not have X set to start up immediately.
When I startx, Gnome does not come up. Instead, the Ice window manager launches. I can then launch gnome-session manaully, but I'm still stuck with icewm instead of Sawfish. /etc/config/desktop does indicate that Gnome should launch.
If anybody has any suggestions, I'd appreciate hearing them. Please email them to email@example.com. Thanks.
The Apache Avalon team ihas released version 1.0.1 of LogKit, an open source logging toolkit "designed for secure performance oriented logging. It's design encourages integration into existing products with minimal impact." Changes in version 1.0.1 include:
Loggerto determine if specified priority is enabled.
Greg Guerin's posted the first alpha of his "Notifications for MRJ". This implements the Macintosh Notification Manager in Java and runs on both MacOS 9 and MacOS X. It's distributed under the open source Artistic License.
Sun's released version 1.3.1 of the Java 2 SDK, Enterprise Edition. According to Sun, this release adds:
Sun's also released the J2EE Connector Architecture 1.0.1 Sample Source and Binary Code Adaptor.
|January||January, 2002||January, 2001||January, 2000||January, 1999||January, 1998|
|February||February, 2002||February, 2001||February, 2000||February, 1999||February, 1998|
|March||March, 2002||March, 2001||March, 2000||March, 1999||March, 1998|
|April||April, 2002||April, 2001||April, 2000||April, 1999||April, 1998|
|May||May, 2002||May, 2001||May, 2000||May, 1999||May, 1998|
|June||June, 2002||June, 2001||June, 2000||June, 1999||June, 1998|
|July||July, 2002||July, 2001||July, 2000||July, 1999||July, 1998|
|August||August, 2002||August, 2001||August, 2000||August, 1999||August, 1998|
|September||September, 2002||September, 2001||September, 2000||September, 1999||September, 1998|
|October||October, 2002||October, 2001||October, 2000||October, 1999||October, 1998|
|November||November, 2002||November, 2001||November, 2000||November, 1999||November, 1998|
|December||December, 2002||December, 2001||December, 2000||December, 1999||December, 1998|