Bill Venners has released the Service UI API 1.1. This API allows Jini service providers and third parties to attach user interfaces to Jini services. Multiple Service UIs can be attached to a single Jini service, and Jini clients can select the UI that best fits their capabilities and user preferences. Venners writes, "Service UI is a defacto standard in the Jini Community, and it is about to become an official standard. We are planning to run it as the first API through the new Jini Decision Process to test out the process." ServiceUI is released under the Sun Community Source License (SCSL).
Bare Bones Software has released BBEdit 7.0.1. This is a free update for all 7.0 users. BBEdit is the Macintosh text/HTML/XML/programmer's editor I nomally use to write this page (though once again I'm out of town and using my laptop instead, this time with jEdit 3.2 on Windows. I'd prefer to be using Linux, but it doesn't seem to support the probable WinModem in my Dell laptop, and I've only got a dial-up connection here.) Version 7.0.1 fixes assorted bugs.
Weather permitting (and it may not) I'll be visitng family over the Thanksgiving break. Updates will probably be a little slow until next week.
The first beta of Aspect-J 1.1 has been posted. It several small new features to the language, improves the functionality of the compiler, and supports NetBeans 3.4. AspectJ is an aspect-oriented language for Java programmers. I'm still trying to get my head around just what aspect-oriented programming is, but in brief it seems to involve writing code that is automatically part of many different methods and classes.
The Jakarta Apache Project has released
Commons Lang 1.0.1, a "set of Java libraries which enhance the standard Java core of java.lang and A These packages provide assistance for
enumerations, nested exceptions prior to Java 1.4,
object serialization and more. This is a bug fix release.
There's a lot of good stuff here. Everyone should check it out, at least for the ideas even if you don't want to use the library. I've already used some of their enum ideas (though not the actual code) in XOM.
Joining the ongoing effort to figure out just what's up with Enoch Root in Neal Stephenson's novel Cryptonomicon, Bill Greve wrote in to note that the new paperback edition of Cryptonomicon contains an excerpt of Neal Stephenson's upcoming novel Quicksilver in which a character named Enoch Root is searching for a character with the last name of Waterhouse in Boston in the early 1700s. He's led through town by a 10-year old Benjamin Franklin. I'll have to get down to Barnes & Noble soon and check this out.
Meanwhile, Pedro Jorge Romero, the Spanish translator for Cryptonomicon, has written up his own thoughts on the matter (in Spanish). He seems to prefer the less science-fictional, "it's all a hoax" explanation and translated accordingly. Still he also notes parallels between Gandalf and Enoch Root; and as all good geeks know, Gandalf the Grey apparently dies in the first book of the Lord of the Rings only to be resurrected as Gandalf the White in The Two Towers. It's also never quite clear whether or not Gandalf is exactly human. Various of Tolkien's writings indicate that the five wizards may be a race onto themselves, and they certainly seem longer-lived than typical humans. Anyone know if Stephenson's a Tolkien buff?
Javier Cantero also has some comments on all this in Spanish. He points out that in the Ethiopian Book Of Enoch, Enoch is the father of the famously long-lived Methuselah.
In related news, Amazon is now showing Quicksilver as scheduled for November, 2003 and available for preorder. Furthermore, a new subtitle calls it volume 1 of the Baroque Cycle. Apparently Cryptonomicon was just the beginning.
Greg Warnes has released HYDRA MCMC Library 1.0.1, an open-source Java library for performing Markov Chain Monte Carlo.
The OpenJMS Project has posted version 0.7.3.1 of OpenJMS, an open source implementation of the Java Message Service API 1.0.2. Features include:
OpenEJB 0.9 has been released. This is an open source (BSD license) Enterprise JavaBeans (EJB) Container System and EJB Server. It includes EJB Servers for both local and remote access. Version 0.9 fixes bugs, adds documentation, enhances usability, adds a few options on the command line tools, and otherwise cleans up the code.
Version 0.5 of jTDS has been released. jTDS is a 100% pure Java (Type 4) open source JDBC 2.0 driver for the Microsoft SQL Server series (6.5, 7.x and 2000). It's originally based on the work of the FreeTDS project. Version 0.5 improves cursor-based result sets, prepared statements, escape sequences and adds a "complete meta data implementation." Various bugs are fixed as well.
I got down to J&R Computer World yesterday to try out a Tablet PC. My initial impressions are that it's not even close to usable for anything other than note taking and drawing. I certainly wouldn't want to use it to write an e-mail, for example, much less a book. The recognition was horrible, worse than voice recognition was eight years ago when I used PowerSecretary to write much of the first edition of Java Network Programming.
Presumably it would get better with training and practice, but even then holding the stylus was just plain awkward. Possibly, this is because, much to the annoyance of my parents and grmmar school teachers, I never learned to hold a pen, pencil, or fork in the usual way. The way I do hold such implements works well enough for me, but it does mean that my hand tends to be tightly wrapped around the button that shifts the stylus from input to mouse mode so half the time when I thought I was writing I was clicking and vice versa.
So it looks like my next laptop is going to be a PowerBook. Maybe I'll pick up a cheap graphics pad and try out the handwriting recognition in Mac OS X 10.2. Unlike, the Tablet PC, this doesn't require any changes on the application's part. However, it does need a separate graphics pad. You can't just write on the screen.
Sun's posted a beta of the Java Advanced Imaging API 1.1.2. JAI "provides extensible, scalable, network-aware support for complex image processing applications on the Java platform, version 1.3 or higher. This version of the API includes new operations for mosaicking, optimal color quantization, and high quality thumbnail generation (subsampling), as well as better exception handling and memory management." It's available on Windows, Linux, and Solaris.
Markus Falkhausen has published class diagrams for much of the Java 1.4 libraries. These look like variations of standard UML diagrams that use syntax coloring, alignment, and font styles instead of symbols like + and underlining. Version 0.8 contains 221 class diagrams that can be viewed online or downloaded in PDF format.
My two-year old Dell Latitude LS gave me a bit of a scare at the Software Development Conference last week. Five minutes before my first class was set to begin Monday morning I shut it down to attach the VGA cable to the projector. Then I pressed the power button to turn it back on again. Nothing happened. Zip. Zilch. Nada. Rien. I unplugged it and tried again. Still nothing. Unplugged the mouse. Didn't help. Barry, the AV tech, suggested pulling out the battery. I did that. Still nothing. I put the battery back in. Nothing. Tried this a couple more times, and suddenly the computer started up again like nothing was wrong, and I went on to teach my class.
I very nearly went out that afternoon and bought a new laptop then and there. If I had a known a little more about Boston computer stores or been a little less jet lagged after my recent return from Europe, I probably would have. Instead I went back to my hotel room and took a nap. Fortunately, the laptop survived the week, and delivered several more presentations. Still, every time I pressed the power button, I was wondering, "Is this the time it dies for good?"
So I think I need to buy a new machine before my next scheduled conference in January (OOP 2003 Munich). A month ago, I suspect I would have bought one of Apple's new PowerBooks, but now I'm wondering if I should get a Tablet PC instead. I'm a mediocre typist at best, and good handwriting recognition has always been something I've wanted. The biggest downside to these systems is that it means returning to Windows, and putting up with Microsoft's security holes, monopolistic pricing, and copy protection that screws consumers in order to protect the music and movie industries.
Slava Pestov's posted the sixth prerelease of version 4.1 of jEdit, an open source programmer's editor written in Java. This release fixes assorted nasty bugs, partially integrates AppleScript scripts on Mac OS X, and adds Maple, NET CIL, and NSIS2 syntax highlighting.
A quick note to Linux programmers everywhere: Unicode (or ASCII) code point order sorting is no sorting at all. Sorting requires language dependent algorithms that understand, for example, that in French a and á are sorted in the same position. In English (and most other multi-case languages) upper case letters do not sort before lower case letters. I suppose I can live with this brain damage in the shell for backwards compatibility reasons if I absolutely have to, but there's no excuse for this idiocy in GUI applications like gFTP or Mozilla. File dialogs and anything else that sorts by name should use a sort algorithm that's language aware and case-ignorant. Nautilus gets this right. It's time for the rest of Gnome, KDE, and third party apps to catch up.
IBM has released version 1.18 of Jikes, their open source Java compiler written in C. This is a bug fix release.
Bare Bones Software has released version 7.0 of BBEdit, the $179 payware Macintosh programmer's editor I normally use to create this site (though right now I'm on the road with my Linux laptop so I'm typing in gEdit.) New features in version 7.0 include:
Upgrades are $49.
Jason Hunter's released a new version of his com.oreilly.servlet utility package. This release "includes numerous file upload enhancements, bug fixes, and workarounds for various browsers."
Java Specification Request 130, OSS IP Billing API, is now a finished recommendation from the Java Community Process. According to the original JSR:
In Operation Support Systems (OSS), the area of IP Billing is vast and complete standards or even de-facto standards in this area are lacking. Several products manage specific parts of Billing. They can be integrated into an end-to-end solution, but these custom integrated solutions are tremendously complex and difficult to achieve, due to the lack of integration standards.
Therefore, the ability to reduce the integration effort via a set of standard, reusable software components to assemble OSS applications in a much shorter time is an appealing prospect for all players in the OSS marketplace.
The OSS IP Billing API specification will define an API via the OSS through Java initiative that enables construction of total OSS solutions for IP Billing by assembling commercial-of-the-shelf components.
Version 1.0.1B of the of Java Transaction API (JTA) has been posted. "JTA specifies standard Java™ interfaces between a transaction manager and the parties involved in a distributed transaction system: the resource manager, the application server, and the transactional applications." This is a maintenance release.
Oracle has submitted JSR-198 A Standard Extension API for Integrated Development Environments to the Java Community Process. According to the JSR:
This proposed specification has the goal of defining a standard IDE extension API that allows developers to implement IDE addin modules once and have their feature run with any IDE supporting the standard specification.
Where there are many areas of integration that could be addressed in this JSR, for purposes of the first scope, viability and time, this JSR will focus on the following IDE addin integration points:
- Menus - The addin will be able to add menu items to the IDE
- Menubar menus
- Context menus
- Toolbar items
- New Gallery items (if present)
- Project Tree - The addin will be able to add nodes and node types to the tree or similar component that manages the project files. This is oftenalled the navigator.
- Editor - The addin will be able to register an editor for a particular navigator node type
- Wizards - The addin will be able to add custom wizards to the IDE
- Source File
- Listeners - The addin will be able to listen for changes on the in-memory source file
- Buffer - The addin will be able to get/set the contents of a source file buffer
- Data Model - The addin will have access to the metadata model for a source file (Class, method, members, etc.)
- Log Window - The addin will be able to write to the IDE log window
Comments are due by November 25.
Oracle has also posted the first public review draft specification of JSR-73 Data Mining API. According to the JSR, "The JDMAPI specification will address the need for a pure JavaTM API that supports the building of data mining models, the scoring of data using models, as well as the creation, storage, access and maintenance of data and metadata supporting data mining results, and select data transformations." Comments are due by December 12.
Sun's posted the proposed final draft specification of Java Specification Request 169, JDBC Optional Package for CDC/Foundation Profile. This defines an optional database connectivity package for Java 2 Micro Edition (J2ME) environments.
Sun's posted the second proposed final draft specification for JSR-151 Java 2 Enterprise Edition (J2EE) 1.4 in the Java Community Process. According to the spec:
The primary focus of J2EE 1.4 is support for web services. The JAX-RPC and SAAJ APIs provide the basic web services interoperability support. The Web Services for J2EE specification describes the packaging and deployment requirements for J2EE applications that provide and use web services. The EJB specification was also extended to support implementing web services using stateless session beans. The JAXR API supports access to registries and repositories.
Several other APIs have been added to J2EE 1.4. The J2EE Management and J2EE Deployment APIs enable enhanced tool support for J2EE products. The JMX API supports the J2EE Management API. The J2EE Authorization Contract for Containers provides an SPI for security providers.
Many of the existing J2EE APIs have been enhanced in J2EE 1.4. J2EE 1.4 builds on J2SE 1.4. The JSP specification has been enhanced to simplify the development of web applications. The Connector API now supports integration with asynchronous messaging systems, including the ability to plug in JMS providers.
Changes in this J2EE platform specification include support for deploying class libraries independently of any application and the conversion of deployment descriptor DTDs to XML Schemas.
Sun's also posted a second proposed final draft specification for JSR-112 J2EE Connector Architecture 1.5. New features since 1.0 include asynchronous integration with enterprise information systems and Java Message Service (JMS) provider pluggability.
The final version of Java Specification Request (JSR) 24, JAIN Service Provider API, has been released. "JAIN SPA 2.1 is the Java specification of the Parlay API Version 2.1 interface. The API is intended to allow software developers to rapidly develop external Service Provider type applications using abstract primitives that hide the heterogeneity of underlying networks."
Meanwhile, JSR-196, JAIN ULS API, has been posted for initial comment The "User Location and Status (ULS) 2.x API is the Java specification of the ETSI/OSA ES 202 915 Mobility 2.x, Parlay Mobility 4.x and 3GPP/OSA Mobility 5.x APIs. The API is intended to allow software developers to rapidly develop external Service Provider type applications to interrogate the location and status of a user's mobile device." (Do we really want to let cell phone companies and the government do this?)
In other JAIN news, the public review draft of Java Specification Request 79, the JAIN MEGACO Protocol, has been posted. This effort has been lead by Hughes Software Systems. According to 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.
Sun's posted the maintenance review draft of JSR-28 Java SASL Specification. SASL stands for "Simple Authentication and Security Layer." It defines a protocoal independent method for adding authentication support to connection-based protocols. SASL is defined in RFC 2222. RFCs 2245, 2444, and 2831 describe particular SASL mechanisms, while RFC 2554 describes SASL used with SMTP, and RFC 2829 describes SASL used with LDAP. Comments are due by November 25.
I've posted the slides from Wednesday's talks at the Javapolis conference in Antwerp on:
Amazon has corrected their mispricing of Processing XML with Java. They now show the correct list price of $54.99, and they're selling it for 30% off at $38.49.
Michael B. Allen's posted jCIFS 0.7.0b8,
an SMB client library written in pure Java. It
supports Unicode, named pipes, batching, multiplexing I/O of threaded callers, encrypted authentication, full transactions, domain/workgroup/host/share/file enumeration, NetBIOS sockets and name services, the smb:// URL protocol handler, RAP calls, and more. The API is similar to
java.io.File. jCIFS is published under the LGPL.
I've returned from my excursion to Europe. The Javapolis conference was a lot of fun. I wish I had had another day to spend there. It was the first conference I've attended held in a movie theatre, which turned out to be a surprisingly good venue. (Perhaps only possible because Belgians don't go to movies on weekday afternoons?) The seats were incredibly comfortable, perhaps a little too comfortable to the point of encouraging attendees to nap during sessions. :-)
My room was the unofficial alternative OS track. Of the five sessions, two were run from a laptop running NetBSD, two run from a laptop running Red Hat Linux 8.0, and one from a Macintosh G4 desktop running Mac OS X. Windows was nowhere to be seen.
It was a very interesting and engaged group of attendees and speakers.
Discussions covered fuzzy logic, XOM, interfaces vs. classes,
design patterns, and many other subjects.
I had one "A-Ha" moment during the conference when Ian Darwin pointed out in his session of regular expressions in Java 1.4 that a regular expression can do anything
StreamTokenizer can do, and do it better.
I've been telling developers for a couple of years not to use
StreamTokenizer (They never do what anybody expects or wants them to do anyway. They're designed for parsing Java source code, not for reading tab and comma delimited files. ) However, I've been telling developers that if they need tokenizing functionality they should write their own class. Now I realize you don't even have to do that. Regular expressions - they're not just for search and replace anymore.
Over the next couple of days, I'll be catching up on 4000 backlogged e-mail messages that accumulated while I was away, as well as on recent news. Then it's off to Boston on Sunday for the Software Development 2002 East show. I'm going to try to keep up with my e-mail and site updates in Boston a little better than I did in Europe (which is to say, not at all). Still, if I have an early morning session, the news may be a little late in coming.
Sun's posted a prototype implementation of a Java compiler that supports generics as described in Java Specification Request 14, Adding Generics to the Java Programming Language v. 1.3. C++ programmers are familiar with generics under the name "templates".
Apple has announced that Java 1.4.1 and later versions of Apple virtual machines will no longer support the JDirect technology. JDirect is used to access the native Mac API directly from Java.
I am pleased to announce the official publication of Processing XML with Java. This is the most comprehensive and up-to-date book about integrating XML with Java (and vice versa) you can buy. It contains over 1000 pages of detailed information on SAX, DOM, JDOM, JAXP, TrAX, XPath, XSLT, SOAP, and lots of other juicy acronyms. This book is written for Java programmers who want to learn how to read and write XML documents from their code.
Normally, this is the point where I'd spend a few paragraphs describing just what's in the book and
how important it is to your education, your career, and your love life; but this time I've done something a little different. The entire book is available online. You can read every chapter and every page so you can see for yourself how well this book answers your questions such as,
"Why does SAX truncate the text in my documents after a few thousand characters?",
"How do I serialize a DOM
in an implementation-independent way?", or, "Why doesn't my significant other understand the importance of a building a life size Millennium Falcon in our backyard?".
Consequently, I'll forego the usual hype. Check the book out for yourself;
and if you like it, please buy a copy. I promise it's cheaper than printing all 1100+ pages on your laser printer.
I received my copy yesterday, and Amazon is reporting that it will be in stock tomorrow. They do have the wrong list price. It's $54.99, not $69.50, but their actual price is a quite reasonable $48.65. Barnes & Noble shows the list price as $49.99 (also wrong) and is selling it at $39.99. You may want to pre-order your copy today, because their initial shipments of my books tend to sell out very quickly once I announce them here. If you missed the first batch, don't worry. Addison Wesley will ship more very quickly. It does not normally take the advertised "2-3 weeks". Brick and mortar stores should have their copies very soon as well.
I'm heading off to Europe later today for a much needed vacation. (Well, a working vacation anyway. I'll be stopping by the Javapolis conference in Antwerp next Wednesday, November 13, to talk about Refactoring Java and the Top 10 Myths About Java I/O. It's only €150; and looks to be a really fun show. If you're not too far from Antwerp, check it out.) Consequently, updates will be slow to non-existent here for the next week. If you think I planned this just so my book hype would be front page news here for a week, well, OK. You caught me. :-) In the meantime, why don't you check out Processing XML with Java. If you like what you see, you can buy it at Amazon or any other purveyor of fine computer books.
In an unrelated note, elharo.com is down for the time being due to either Covad, Verizon, or Speakeasy problems. (Whose fault it is exactly has not been determined yet.) and may not be fixed until I return late next week. Cafe au Lait and Cafe con Leche are both hosted by the friendly and much more skilled folks at IBiblio and should be fine.
Lorenzo Bettini's released GNU Source-highlight 1.6.1, a GPL'd tool for reading Java, C/C++, Prolog, Perl, PHP3, Flex, ChangeLog, and Python code and translating them into syntax highlighted HTML and XHTML. Binaries are available for Unix, and it should compile on Windows with the appropriate libraries. 1.6.1 is a bug fix release.
The Zaval CE Group has released version 1.3.1 of the Zaval JRC Editor. Zaval is a visual localization string editor. In rough scope it reminds me of the old Macintosh tool ResEdit, in particular because it allows you to hack the strings inside a closed source application. ResEdit actually went further, letting you hack all sorts of resources including dialogs, icons, menus, and more; all without knowing or using any C or Pascal. Almost 20 years later, the rest of the world still hasn't caught up to where Macintosh software development was in the 1980s. :-( Zaval is published under the GPL.
The JBoss Project has released JBoss 3.0.4, an open source Enterprise JavaBeans application server implemented in pure Java. This is a bug fix release, no new features. JBoss provides JBossServer, the basic EJB container and JMX infrastructure, JBossMQ for JMS messaging, JBossMail for mail, JBossTX for JTA/JTS transactions, JBossSX for JAAS based security, JBossCX for JCA connectivity, and JBossCMP for CMP persistence. It integrates with Tomcat Servlet/JSP container and Jetty Web server/servlet container, and enables you to mix and match these components through JMX by replacing any component you wish with a JMX-compliant implementation for the same APIs.
I installed Red Hat Linux 8.0 on my two-year old Dell laptop last night. Linux is definitely improving. This is leaps and bounds beyond the last variant I tried (Mandrake 8.2. I haven't tried Mandrake 9.0 yet.) Visually, I'd say it's even better than Ximian Gnome 1.4, my previous favorite GUI. For the first time, I think I've seen a Linux that's on a par with current versions of Windows and the Mac OS. Also, a first: the fonts are deuglified by default. (I still don't think this is the prettiest GUI I've ever seen. Windows 2000 and Mac OS 9 are both superior. However, Windows XP and Mac OS X are significant steps backwards on their respective platforms, at least as far as the GUI goes, so they've lowered the bar Linux has to hurdle.)
Unfortunately it's still not all there yet. The installer picked the wrong mouse driver. My initial boot did not work with my laptop's trackpad. Fortunately I was able to plug a spare Microsoft Intellimouse into the USB port, and that worked fine. The installer also tested the wrong graphics configuration; that is, it correctly detected my screen as 1024 by 768 but tested it at 800 by 600. I don't know why. These were minor and fixable glitches, though they're still enough to keep me from recommending Linux for my non-technical friends. However, the worst problem is that the network just doesn't work. I've ruled out hardware problems. I can boot the same machine into Windows and surf the net just fine. However in Linux, all pings are "Destination Host Unreachable." This is on my LAN Ethernet connection using a static IP address, an SDSL line, and NAT to connect to the rest of the world. The laptop can't see either remote or local hosts or even the gateway. Some possibly related symptoms:
Suggestions for troubleshooting are appreciated. Comments to email@example.com.
Update: Problem is fixed. I'm a putz. I just typed my old router address instead of my new router address. It used to be 192.168.254.1, but after I switched ISPs when Northpoint went under it became 192.168.254.254. The network is now working fine. This is why pair programming is important. I had looked at that number about sixteen times; and, despite looking at it on my laptop side-by-side with the TCP/IP settings on my desktop Mac, not realized they were two different numbers. My brain refused to accept that 192.168.254.1 might not be the correct address. A second pair of eyes would have probably spotted it immediately. Duh.
Version 0.8.1 of the Abbot GUI testing framework has been released. New features in this release include:
I've posted version 1.0d8 of XOM, my open source, tree-based Java API for processing XML that strives for strict compliance to the XML specs.
There are no breaking changes in this release.
The big new feature is that XSLT works (modulo some obscure bugs in handling the undeclaration of the default namespace. I need to get some clarification on the proper behavior of SAX processors to fix this.)
As part of supporting XSLT, I discovered a need to undeclare the default namespace on a prefixed element. That is
<pre:name xmlns:pre="http://www.example.com" xmlns="">. You can now do this by passing an empty string for both the prefix and URI to
I'm travelling quite a bit in November so this is probably the last release until next month. The API, however, is starting to feel quite stable to me. Most of the things on my to do list involve implementation details, testing, documentation, benchmarking, optimization, and the like. One of the places I'm travelling this month is the SD Expo show in Boston. I'll be hosting a Birds of a Feather session there on "What's Wrong with XML APIs and How to Fix Them." I expect this to be more interactive than the XML SIG session in September.
Ralph Jocham's JCSC (Java Coding Standard Checker) is a configurable tool for checking Java source code for adherence to standard conding conventions such as naming conventions, code structure, class size, and line length. JCSC is published under the GPL.
Steffen Gemkow's JUnitDoclet 1.0.1 uses JavaDoc to generate skeletons for JUnit TestCases. JUnitDoclet is published under the LGPL.
Bernhard Bablok has released ShadowJAAS 1.0.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.
Nicholas Sushkin's Javadoc Search 0.9 is a "CGI script for indexing and searching html files produced by javadoc tool. Javadoc-search allows fast and convenient regular expression search for class and class member names and for full method signatures that include argument types. Javadoc-search examines index html pages generated by javadoc and installed in the local webserver document tree and builds its own index for classes, class members, and class methods. Whenever a search query is submitted, javadoc-search quickly matches the query against the index and displays a list of matching links. Javadoc-search provides assorted search and match display options. Javadoc-search is implemented as a single Perl CGI script requiring CGI, File, and Getopt modules."
The Jakarta Apache Project has released Validator 1.0, an open source class library for verifying (or disproving) that data satisfies certain rules.
|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|