January, 2006 Java News

Tuesday, January 31, 2006 (Permalink)

Sleepycat Software has released Berkeley DB Java edition 2.1.30. Berkeley DB JE is an open source, non-relational embedded database written in Java. The data is exposed through "a Java Collections-style interface, as well as a programmatic interface similar to the Berkeley DB API." New features in this release include multi-key secondary databases. Performance has been improved as well.

Monday, January 30, 2006 (Permalink)

The Object Refinery Ltd has released JFreeChart 1.0.1, a free-as-in-speech (LGPL) chart library for Java. JFreeChart supports:

  • 2D and 3D pie charts
  • Regular and stacked bar charts
  • Line and area charts
  • Scatter plots and bubble charts
  • Time series, high/low/open/close charts and candle stick charts
  • Combination charts
  • Pareto charts
  • Gantt charts
  • Wind plots, meter charts and symbol charts
  • Wafer map charts

1.0.1 is a bug fix release.

Saturday, January 28, 2006 (Permalink)

The Eclipse Project has released Eclipse 3.1.2, an open source integrated development environment (IDE) for Java. Eclipse also doubles as a base platform for your own applications, an alternative to the AWT and Swing, and a powerful floor wax and dessert topping. 3.1.2 is a bug fix release.

Friday, January 27, 2006 (Permalink)

Five Square Software has released CatSlapper 1.0.1, a a $12.95 payware Mac OS X application for installing and managing multiple Jakarta Tomcats. Mac OS X 10.4 and Tomcat 5.0.x are required.

Steve Roy has released Jaree, a free-as-in-beer utility that wraps a user interface around jar and javap to inspect the content of JAR files.

Thursday, January 26, 2006 (Permalink)

Tom Copeland has released PMD 3.5, an open source tool for automatically checking Java code for various classes of bugs. Version 3.5 adds twelve new rules including:

  • UselessOperationOnImmutable
  • MisplacedNullCheck
  • UnusedNullCheckInEquals
  • IntegerInstantiation
  • UseAssertNullInsteadOfAssertTrue
  • AppendCharacterWithChar
  • ConsecutiveLiteralAppends
  • UseIndexOfChar
  • AvoidConstantsInterface
  • UseArraysAsList
  • AvoidArrayLoops
  • BooleanInversion

Some of the optimizations suggested strike me as extremely questionable, and may well be the result of naive benchmarking.

I've been doing some new work on XOM 1.2 lately, and there's quite a bit of code in the current CVS that hasn't previously been tested by this sort of tool, so I ran it on XOM. My initial runs hit some out of memory errors, so I tried it one ruleset at a time. The new rule to "Avoid concatenating characters as strings in StringBuffer.append" found a couple of places I could fix. ConsecutiveLiteralAppends only found false positives that I could see. It's a little buggy. The basic ruleset took a long time to run, but didn't find anything important. The other new rules didn't catch anything either.

Apple has posted the fifth beta of Java 5 Release 4 for Mac OS X 10.4 (Tiger) on the Apple Developer Connection (first born child required). This is based on Sun's J2SE 1.5.0_06. Most importantly it finally makes Java 1.5 the default instead of 1.4. This release is now compatible with the Intel Macs, and enables native Quartz rendering by default though this is configurable.

Wednesday, January 25, 2006 (Permalink)

Bernd Eggink has released Autojar 1.3, a tool that for "creating jar files of minimal size from different inputs like own classes, external archives etc. It starts from one or more given classes (e.g., an applet), recursively searches the bytecode for references to other classes, extracts these classes from the input archives, and copies them to the output. The resulting archive will only contain the classes you really need. Thus you can keep size and loading time of applets low or make applications independent of installed libraries." However relefection is a problem. Autojar is published under the GPL.

Robert Oloffson has posted version 0.49 of Java Memory Profiler (JMP). JMP uses the Java Virtual Machine Profiling Interface (JVMPI) interface to track objects and method times in a JVM. It uses a GTK+ interface to display statistics. The current instance count and the total amount of memory for each class is shown as is the total time spent in each method. 0.49 fixes bugs. JMP is written in C for Linux.

Tuesday, January 24, 2006 (Permalink)

Martin Clausen has released the IBM Secure Shell Library for Java, "a lightweight implementation of the IETF SSH-2 protocol. The library currently implements only the basic SSH features such as password log-in and command execution. Advanced features such as tunning and X-forwarding are currently not supported." Licensing is not immediately apparent but this looks to be closed source.

Christian Schlichtherle has released TrueZip 5.0, a drop-in replacement for the java's file I/O classes. Apparently he's reproduced the java.io classes in a new package so you just change import java.io.* to import de.schlichtherle.io.*; and you're using TrueZip instead of java.io. It's an inspired hack. The reason for doing this is that TrueZip "enables an application to access EAR, JAR, WAR, ZIP or even RAES encrypted ZIP files as if they were just directories in a file's path name. This works recursively, so your ZIP compatible file may even be enclosed in another ZIP compatible file! Even if your application will never use any ZIP file, using TrueZIP might still be beneficial because of its enhanced file operations such as recursive renaming, deleting or (archive) copying with limited support for transactions. These operations use asynchronous I/O and hence deliver a performance which is comparable to the Channel.transfer(...) method in the java.nio package, although they operate on plain InputStream and OutputStream instances." TrueZip is published under the Apache 2.0 license.

The Jakarta Apache Project has declared the previously released version 5.5.15 of the Tomcat open source servlet container to be ready for production deployment. This is the official reference implementation of the Java Servlet API 2.4 and Java Server Pages (JSP) 2.0. "Tomcat 5.5 is designed to run on J2SE 5.0 and later, and requires configuration to run on J2SE 1.4....In addition, Tomcat 5.5 uses the Eclipse JDT Java compiler for compiling JSP pages. This means you no longer need to have the complete Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment (JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the binary Tomcat distributions. Tomcat can also be configured to use the compiler from the JDK to compile JSPs, or any other Java compiler supported by Apache Ant."

Monday, January 23, 2006 (Permalink)

CMP's posted the Call for Papers for Software Development Best Practices. I'm not sure yet if I'll be attending. I'll have to see what I can think of to talk about. Maybe I can come up with a new talk on experimental programming. Deadline is March 3. The conference takes place September 11-14 in Boston.

Thursday, January 19, 2006 (Permalink)

Kent Beck and David Saff have posted the second release candidate of JUnit 4, though I'd classify this as amore of an alpha (i.e. feature list and API still subject to change) than a real release candidate. According to Saff,

The first and most important point is this: early adopters, 99% of your JUnit 4 test cases still work, and now work better than before!

Back in October, Kent said "The remaining functionality we need to add is a way to specify test suites that is represented in source code and works with automated refactoring tools. Once that is in place we will javadoc everything, package it, and deploy." We thought about it, and realized that what this really meant was

  1. JUnit's extension mechanism should be so powerful that test suites can be just another extension.
  2. Extensions should work seamlessly with IDE test runners, meaning
    1. Since IDE's and UI's like to display the names of tests before they're run, and match up successes and failures with these names, there must be a standard way to display the components of an extended test suite.
    2. There should be a standard way to run just a single method from a test class, with extension-defined setup and teardown behavior
    3. JUnit 4 should respond gracefully to user cancellation requests that come in the middle of a run
  3. Extensions should work seamlessly with JUnit 3 test runners
  4. There should be a simple API for running test classes, sets of test classes, single test methods, and any other test specification.

To support these goals, we needed the following concepts:

  • Runner. An extension to JUnit will likely define a custom subclass of Runner.
  • Plan. Each Runner must report a Plan, a hierarchical tree of the names of the tests it will run. Test events are reported with respect to leaves in this tree.
  • Request. A Request is a specification of the desired tests to be run. Extensions may also define custom subclasses of Request, in order to, for example, read tests to be run out of an XML file--if you think that's a good idea. :-)

There is an important distinction between Requests and Plans. A Request might be "Please run all tests in class ValidationTest", with the corresponding Plan being "I will run methods foo, bar, baz, and foobar in class ValidationTest".

Again, nothing has changed about the basic annotation-based test definition API, so your existing test cases still work. A revised overview of the packages and classes as they stand now, and how to run a JUnit 4 test using a JUnit 3 runner, is at


We believe that this robust extensibility, explicit IDE support, backward compatibility, and simple API are worth the extra time you've waited. We're very interested in feedback. To try things out, you can download the code from CVS, or, for a limited time only, download a list-members-only distribution from


We're especially interested in:

  1. Results of running JUnit 4 tests with various JUnit 3 runners.
  2. Experiences using JUnit 4 to write tests.
  3. New Runners and Requests.

Remember that this is not the final release--the implementation and API may still change as we respond to your comments and shake loose the remaining issues. Thanks,

Java 5 is required.

Wednesday, January 18, 2006 (Permalink)

Apple has released version 2.2.1 of Xcode, "Apple's tool suite and integrated development environment (IDE) for creating Mac OS X Universal Binaries that run natively on PowerPC and Intel-based Macintosh computers. The IDE provides a powerful user interface to many industry-standard and open-source tools, including GCC, javac, jikes, and GDB. Xcode is designed to fully support the Carbon and Cocoa frameworks and Java. It contains templates for creating applications, frameworks, libraries, plug-ins, Java applications and applets, and command-line tools. Developers can use Xcode to construct a user interface, test code performance, and perform many other common development tasks." 2.2.1 is a bug fix release. Mac OS X 10.4 (Tiger) is required. Xcode and its updates are free beer. With Mac OS X Apple wisely stopped charging for developer tools. You'll still need an ADC membership (including the free membership) to get a copy.

Apple has posted the fourth beta of Java 5 Release 4 for Mac OS X 10.4 (Tiger) on the Apple Developer Connection (first born child required). This is based on Sun's J2SE 1.5.0_06. It also uses Sun's rendering by default instead of native Quartz graphics. (This will probably change again before final release.) Most importantly it finally makes Java 1.5 the default instead of 1.4. "This release is not compatible with the Intel-based Developer Transition Systems" One hopes it's compatible with the MacBook and the Intel iMac, but I don't really know.

Tuesday, January 17, 2006 (Permalink)

The Free Software Foundation has posted the first public draft of the GPL 3.0. Notable changes include increased compatibility with other free software licenses and prohibiting GPL'd programs from being used to enforce or enable DRM, limiting the fees that can be charged for source distribution, and an option for limited software patent retaliation. The basic principles remain the same.

The GNU Project has released version 0.20 of GNU Classpath, an incomplete free implementation of the core Java class libraries. New features in this release include:

  • New StAX pull parser and SAX-over-StAX driver.
  • Full XMLEncoder implementation.
  • javax.sound.sampled
  • javax.print.attribute
  • javax.print.event

GNU Classpath is published under the GPL with library exception.

Monday, January 16, 2006 (Permalink)

Sun's withdrawn JSR-189, Java 3D API 1.4 from the Java Community Process (JCP). I'm not sure exactly why.

Timesys has submitted JSR 289, SIP Servlet v1.1 to the Java Community Process. According to the JSR:

The SIP Servlet Specification (JSR116) is a container based approach (modelled on the HTTP servlet paradigm) to developing communication applications utilizing the Session Initiation Protocol (SIP) protocol. SIP is used to establish and manage multimedia IP sessions. This JSR requests the evolution of the SIP Servlet specification to address capabilities discovered by the industry as a result of using the specification. Some of the core requirements requiring the evolution of this specification are:

  • Application Composition: The ability to map certain communication features to SIP Servlets and in-turn invokes those features in an independent manner is desirable. It is clear that a SIP Servlet environment should be able to support the composition on a call of multiple SIP servlets application written by unrelated parties and to have that composition produce good, predictable results. It is necessary to define when, if or how one SIP Servlet application is invoked to service a request with respect to another SIP Servlet application.

  • Application Invocation: When multiple applications are invoked the SIP servlet environment should define behaviour for the order in which applications or the triggering rules are considered. While SIP Servlet v1.0 does dictate an order for triggering rules within a servlet application it does not dictate anything about the order in which servlet applications themselves or their rules should be considered for invocation.

  • Application Convergence: The ability to move seamlessly between HTTP and SIP servlets within a convergence application.

  • Deployer support for Application Invocation and Composition: There is a need to define a mechanism that enables the deployer to have control, either real time or operational, over when and how SIP Servlet applications are invoked to handle communication requests. This needs to be a standard, non-proprietary mechanism whereby the deployer has a well understood role in determining the invocation of SIP Servlet applications.

  • Enhanced SIP Servlet control of Application Invocation: SIP servlets should be able to convey their intentions about how they wish subsequent service invocation to take place. For example, a B2BUA SIP Servlet application can be invoked and receive an initial request as a UAS. When it issues another request as a UAC, it has no way to indicate to the container or any deployer logic that how it wishes the new INVITE to be considered. Should the INVITE be routed as if it were received anew by the container or, should this request continue to be "routed" to subsequent applications as if it were a 'continuation' of the service invocation process that had already been started and resulted in the invocation of the B2BUA application.

  • Formal Distinction between Caller and Callee services: The SIP Servlet specification defines no formal distinction between callee and caller services, therefore SIP servlets cannot easily determine on whose behalf they are being invoked. Many telecommunications features involve application logic that acts on behalf of a particular subscriber where the functionality of the application needs to be present whether the subscriber places or receives calls.

This list of requirements is not necessarily complete and this will be explored further in the expert group - for example, additional support could be defined for initial and subsequent request, inter-servlet loop detection, additional protocol support, complex SIP dialog management, explicit header manipulation, JMX management, 3GPP IMS support and inter-servlet communication. It is intended that the priority of each of these enhancements be defined by the expert group with the goal of defining the API in an incremental manner satisfying a bulk set of requirements in each release. This is done to ensure timely delivery of the API as well as in order to gain experience with some of the more advanced features prior to standardization.

Timesys has submitted JSR 282, RTSJ version 1.1 (Realtime Specification for Java, to the Java Community Process. According to the JSR:

This proposal addresses some of the simpler enhancements that have been requested in the RTSJ:

  1. Add waitForNextRelease() and release() to RealtimeThread so real-time threads will be better able to handle aperiodic processing.
  2. Investigate a class, similar to the weak reference classes, that supports references between memory areas that would normally be forbidden by the RTSJ assignment rules.
  3. Relax the ?bi-directional reference rule? for parameter objects.
  4. Add new methods in the Timed and Timer classes to more easily support both start relative to now and start relative to the original start time, for reset and reschedule.
  5. Add a form of Timed.reset() that resets the timeout for the current execution.
  6. Add new methods to query the state of Timers and real-time threads.
  7. Add a method to Schedulable and processing group parameters, that will return the elapsed CPU time for that schedulable (if the implementation supports CPU time)
  8. Add an option for AEH that will cause the AEH?s memory area to be entered each time the AEH invokes handleAsyncEvent()
  9. Consider a method that determines whether there is more than one reference to an object. (To better support ?recycling lists?)
  10. Add a blocking factor value to ReleaseParameters to support better feasibility analysis
  11. Review the current support for real-time garbage collectors, and expand it if necessary.
  12. Associate a scheduling eligibility value with async events.
  13. Permit all errors associated with exceeding RTSJ resource limits to fire async events (or alternatively, release async event handlers). Currently some of them can only throw exceptions.
  14. Add new methods as necessary to consistently provide both a method that creates a returned object and one that takes a destination wherever those forms are appropriate.
  15. Update the documentation for the physical memory classes to improve their clarity. Make the minimum modifications to the semantics and APIs required to fix any problems that justify such changes.
  16. Update the semantics for cost enforcement to permit support of the invariant that a schedulable's CPU use in each period is bounded by the cost.
  17. Consider compatible modifications to the RTSJ that would make it easier to limit the use of immortal memory.
  18. Modify the specification as required to clarify any interaction with Java™ 5.
  19. Consider hierarchical processing group parameters.
  20. Consider improvements to the wait-free queue classes, or possibly new classes with similar services.
  21. Consider enhancements to the async event system to let events carry data.
Saturday, January 14, 2006 (Permalink)

Sun has posted the first release candidate of NetBeans 5.0, an Integrated Development Environment (IDE) for Java. versoon 5.0 "introduces comprehensive support for developing IDE modules and rich client applications based on the NetBeans platform, the new intuitive GUI builder Matisse, new and redesigned CVS support, Sun Application Server 8.2, Weblogic9 and JBoss 4 support, and a lot of editor enhancements."

On the plus side, version 5.0 finally puts the menu bar in the right place; and the CVS integration seems to be much improved, However, even in version 5.0 this product still has a ways to go. Issues include:

  • Non-native file dialogs
  • Dialog text that doesn't fit in the dialog boxes
  • My first attempt to import an existing Ant project failed completely without even any sort of error dialog. The second time I tried this it worked. I'm not sure what the difference was.
  • There must be a way to tell NetBeans to run a particular class that contains a main() method, but for the life of me I can't seem to find it. Why is this basic functionality hidden?

NetBeans is catching up. In a few ways it's superior to Eclipse; but overall I don't think it's quite there yet. Eclipse or IntelliJ IDEA still seem like the superior choice for most users. Netbeans is available for Windows, Linux, Mac OS X, and Solaris. Final release is still planned for later this month. Java 1.4.2 or later is required.

Friday, January 13, 2006 (Permalink)

TeamDev Ltd has released JNIWrapper 3.0, a $149 payware library for invoking native API calls from Java without writing your own JNI code. It runs on Mac OS X, Windows, and Linux. I have not tried this myself, but it sounds like what JNI should have been. I'm intrigued. I'd definitely evaluate this if I were doing closed source development that needed to call the native API; but since I'm not, I won't. However if anyone who is does want to take a look and let me know what they find, I'll post it here.

Thursday, January 12, 2006 (Permalink)

Grzegorz Kowal has released Launch4j 2.1, an open source (MIT License) tool for wrapping Java applications distributed as jars in Windows native executables.

Wednesday, January 11, 2006 (Permalink)

YourKit, LLC has released YourKit Java Profiler 5.0.9, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA, Borland JBuilder, NetBeans, and Eclipse integration. This is a bug fix release. Upgrades from 4.0 are free.

Tuesday, January 10, 2006 (Permalink)

MySQL A.B. has posted a beta of MySQL Connector/J 5.0.0, the Type-IV all-Java JDBC driver for MySQL. According to MYSQL's Mark Matthews,

Version 5.0.0 is a development release based on code from the stable tree. It is essentially Connector/J 3.1.13 with support for XA back ported from the Connector/J 3.2 branch, as well as some internal refactorings to support JDBC-4.0 features.

New features that are included:

  • Support for Connector/MXJ integration via url subprotocol "jdbc:mysql:mxj://....".
  • XA Distributed Transactions via the com.mysql.jdbc.jdbc2.optional.MysqlXADataSource implementation of javax.sql.XADataSource.
  • Statement.cancel() and Statement.setQueryTimeout().

Connector/J 5.0.0 is suitable for use with any MySQL version including MySQL-4.1, MySQL-5.0 or MySQL-5.1.

We expect that Connector/J 5.0 will soon stabilize, as the majority of the codebase is from Connector/J 3.1 which is a generally available release, with largely non-disruptive new functionality added (namely XA) to the 5.0 codebase (which is also why this is a "beta" release out of the gate).

Sunday, January 8, 2006 (Permalink)

Julien Ponge has released IzPack 3.8.1, an open source tool for building cross-platform installers in Java. 3.8.1 fixes bugs and adds Greek and Korean support. IzPack is published under the Apache License 2.0.

Saturday, January 7, 2006 (Permalink)

The Apache Project has released Geronimo 1.0, and a security hole has already been found in its bundled Jetty Web Container. What's an Apache Project doing using Jetty instead of Tomcat anyway?. Don't install this, at least not on Windows. Wait for 1.0.1.

Friday, January 6, 2006 (Permalink)

The XNap Commons project has posted Gettext Commons 0.9, a Java binding for GNU gettext. "The lightweight Gettext Commons library combines the power of the Unix-style GNU gettext tools with the widely used Java ResourceBundles. We find that the usual Java i18n approach of using custom property keys rather than the original text is cumbersome to use and makes programs harder to read. All user visible text is replaced by arbitrary keys complicating lookups of strings in the source." This is published under the LGPL.

The Jakarta Apache Project has released version 5.5.15 of the Tomcat open source servlet container and official reference implementation of the Java Servlet API 2.4 and Java Server Pages (JSP) 2.0. "Tomcat 5.5 is designed to run on J2SE 5.0 and later, and requires configuration to run on J2SE 1.4....In addition, Tomcat 5.5 uses the Eclipse JDT Java compiler for compiling JSP pages. This means you no longer need to have the complete Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment (JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the binary Tomcat distributions. Tomcat can also be configured to use the compiler from the JDK to compile JSPs, or any other Java compiler supported by Apache Ant." 5.5.15 is a bug fix release, but is only considered beta quality; i.e. not ready for production.

BlueJ 2.1.1, a free integrated development environment (IDE) for Java aimed at education, has been released. 2.1.1 is a bug fix release.

Thursday, January 5, 2006 (Permalink)

I've been getting serious about Atom and RSS lately, and using it to enable some new cool features here and elsewhere. You may have noticed the links on Cafe au Lait to the news items on my other sites, as well as the spiffy new full text Atom feeds. More is coming. I'm finding new uses of this technology everywhere I look.

Yes, I know I'm a little late to the party, but I just couldn't stomach the crash prone, unreadable, crippled, privacy invading, Web architecture violating, brain damaged, catty, and unusable software and specs that have been passed around in this space. However now that Vienna has crossed my personal usability threshold for a feed reader and the Atom group has begun producing XML-sane, HTTP-savvy specifications that don't trigger my gag reflex, I'm finding these technologies to be ready for real work.

To explore some of the issues, over the next few weeks I'm going to be doing a mini-usergroup tour here in the Northeast. I'll be talking about how you can use RSS and Atom to manage, read, and publish all sorts of information. Hint: it's not just about weblogs. Dates and locations are as follows:

OK. XOM and JUnit Code Coverage don't have that much to do with Atom; but I'll try to work something in; maybe an Atom example or two in the XOM talk. If you'd like me to reprise one of these talks for your group, drop me an email. Hope to see you at one or more of these!

Wednesday, January 4, 2006 (Permalink)

Kohsuke Kawaguchi has released args4j 2.0.2, an open source (MIT license) library for parsing command line arguments. Java 5 is required.

Gaudenz Alder has released JGraph, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. fixes bugs and improves performance.

Tuesday, January 3, 2006 (Permalink)

Jeffrey Hoyt has uploaded the third pre-release of jEdit 4.3, an open source programmer's editor written in Java with extensive plug-in support and my preferred text editor on Windows and Unix, dpeite a few serious user interface glitches. New features in this release include Gnuplot syntax highlighting. Java 1.4 or later is required. Java 1.3 is no longer supported.

The Apache DB Project has released OJB (Object/Relational Bridge) 1.0.4, an open source "an Object/Relational mapping tool that allows transparent persistence for Java Objects against relational databases."

OJB supports multiple persistence APIs to provide users with their API of choice:

  • A PersistenceBroker API which serves as the OJB persistence kernel. The OTM-, ODMG- and JDO-implementations are built on top of this kernel.
    This API can also be used directly by applications that don't need full fledged object level transactions. (See the Persistence Broker Tutorial for details.)
  • A full featured ODMG 3.0 compliant API. (See the ODMG Tutorial for an introduction.)
  • A JDO compliant API. We currently provide a plugin to the JDO Reference Implementation (RI). Combining the JDO RI and our plugin provides a JDO 1.0 compliant o/r solution.
    A full JDO implementation is scheduled for OJB 2.0. (See the JDO tutorial for an introduction to the JDO programming model.)
  • An Object Transaction Manager (OTM) layer that contains all features that JDO and ODMG have in common. (See the OTM tutorial for details).
Monday, January 2, 2006 (Permalink)

The JavaOne dates have shifted back a day. The conference is now May 16-19, 2006 instead of May 15-18, 2006. I hope no one's made unrefundable plane reservations yet.

Subversion 1.3, an open source version control system designed to replace CVS, has been released. "Subversion 1.3.0 is the first new feature release since 1.2.0 and includes a number of new improvements and features." Some of the most significant updates include:

  • Path-based authorization for svnserve
  • Improved logging and repository listing in mod_dav_svn
  • Better Python and Ruby bindings
  • Several new commandline switches
  • Some client and server performance improvements
  • Many improved APIs
  • Over 30 bug fixes

Oracle has also posted the proposed final draft specification of JSR-198 A Standard Extension API for Integrated Development Environment . According to the draft,

There are a diverse set of IDE products that are designed from the ground up to be extensible platforms where third parties can plug-in new extensions that enhance the IDE with additional features. In general, the layer that integrates an extension to an IDE is only compatible with the integration API of that single IDE. If we examine the IDE integration layer that typical IDE platforms provide we can see that:

  • It is a very thin layer of code (compared to the amount of code generally written by the third party to implement a useful feature)
  • There are many areas of similarity between the integration layers of the different IDEs

The Extension Software Development Kit (ESDK) proposed by this specification defines a standard application programming framework for extending IDEs written in Java with new functionality. It is designed to eliminate the need to write multiple versions of the integration layer that plugs-in the new functionality across different IDEs.

1.1 Specification Scope

Where there are many areas of integration that could be addressed by this specification, for purposes of the first scope, viability, and time, this version of the ESDK covers integration points that allow extension writers to:

  • Extend the IDE with new menus and commands
  • Extend the IDE data model with additional document types
  • Extend the IDE with new document creation wizards
  • Extend the IDE with new editor types
  • Extend the IDE new log pages
  • Extend the IDE preferences and project settings with new property pages
  • Define extension specific extension points
  • Access the IDE Environment information
  • Access extension registration information
  • Access project information
  • Access the Java structure model
  • Access the XML structure model
  • Access textual data
  • Manipulate documents through a virtual file system
  • Listen for data model change events
  • Listen for IDE events
  • Interact with the compiler
  • Interact with the debugger
  • Use IDE utilities such as message, warning, and error dialogs

While this is a good idea in theory, I'm not sure how practical it is now that IntelliJ IDEA, Eclipse, and NetBeans all have their own plugin APIs and actvie developer communities. This might fly if plugin developers demand it, or if adapters can be written that map between this API and the native plugin APIs.

Sun's posted a maintenance release of JSR-36 Java TV API 1.1. The changes are relatively significant, and include removing the javax.tv.carousel and javax.tv.media.protocol packages and incorporating APIs from Java Media Framework 1.0.

Sunday, January 1, 2006 (Permalink)

Happy New Year. I've got a little present for everyone today. I've often been asked for full text feeds, and I've responded that this would only happen "at such time as someone writes an RSS client that gives a user experience at least equal to a real Web browser." I also stipulated that said client had to be open source and run on my platform of choice. Privacy invasive server side solutions like Bloglines need not apply.

Well about a month ago, that happened. Steve Palmer released Vienna 2, the first open source, client based web browser for the Mac that passes my personal "It doesn't suck" test. There are still a few minor user interface glitches, mostly related to keyboard shortcuts and panel focus; but overall reading feeds in Vienna is equal or superior to reading them in a browser. And thus I am ready to announce something new:

Cafe au Lait is now publishing a full text feed. This includes not only the complete text of today's news. It also includes the quote of the day, all recommended reading links, and all recent news. If you prefer to read this site in a feed reader like Vienna, go right ahead. You won't miss a thing.

The feed is valid Atom 1.0 (At least it is when it doesn't pull in bad data from someone else's feed. That's fixed now.) Every hour or so, cron fires up an XSLT 1.0 stylesheet that scrapes this web page and generates the feed. If you'd like something added to the feed, holler. However, if your reader has trouble handling this feed, please file a bug with the reader vendor; or download a better reader like Vienna. I don't have the time or inclination to work around every bug in every feed reader on the planet.

Now one word of warning: Just because I'm publishing full text feeds does not mean I'm giving up my copyrights, any more than publishing a web page does. No one but me has the right to take my articles and republish them on another site. You're welcome to read them in your personal reader, just like you can read them in a web browser. I'm not going to get too worried if your personal reader is server based, like Bloglines. If you want to let someone track every article you read and every click you make, that's your business. But otherwise, republishing this content without prior permission is prohibited by U.S. and international law. The RSS summary feeds will remain available for any site that wants to aggregate the headlines from Cafe au Lait along with other sites. Full text, though, is available exclusively here.

Older news:

January, 2005 January, 2004 January, 2003 January, 2002 January, 2001 January, 2000 January, 1999 January, 1998
February, 2005 February, 2004 February, 2003 February, 2002 February, 2001 February, 2000 February, 1999 February, 1998
March, 2005 March, 2004 March, 2003 March, 2002 March, 2001 March, 2000 March, 1999 March, 1998
April, 2005 April, 2004 April, 2003 April, 2002 April, 2001 April, 2000 April, 1999 April, 1998
May, 2005 May, 2004 May, 2003 May, 2002 May, 2001 May, 2000 May, 1999 May, 1998
June, 2005 June, 2004 June, 2003 June, 2002 June, 2001 June, 2000 June, 1999 June, 1998
July, 2005 July, 2004 July, 2003 July, 2002 July, 2001 July, 2000 July, 1999 July, 1998
August, 2005 August, 2004 August, 2003 August, 2002 August, 2001 August, 2000 August, 1999 August, 1998
September, 2005 September, 2004 September, 2003 September, 2002 September, 2001 September, 2000 September, 1999 September, 1998
October, 2005 October, 2004 October, 2003 October, 2002 October, 2001 October, 2000 October, 1999 October, 1998
November, 2005 November, 2004 November, 2003 November, 2002 November, 2001 November, 2000 November, 1999 November, 1998
December, 2005 December, 2004 December, 2003 December, 2002 December, 2001 December, 2000 December, 1999 December, 1998

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

Copyright 2006 Elliotte Rusty Harold