June 2003 Java News

Friday, June 27, 2003

Sun has released Java 1.4.2 (Java 2 Software Development Kit 1.4.2) for Linux, Windows, and Solaris. Important changes and new features since 1.4.1 include:

There are also over 2400 bug fixes, and overall this release should be much faster that 1.4.0 and 1.4.1.

Yesterday, the 4th Circuit Court of Appeals reversed U.S. District Judge Judge J. Frederick Motz's preliminary injunction requiring Microsoft to ship Sun's Java with Windows. However, the court did uphold the requirement that Microsoft cease distributing its own Java virtual machine separately from Windows through Windows Update. Microsoft stopped doing this in February. However, this is all only about the preliminary injunction governing Microsoft's behavior before the trial. The actual trial will now continue, and Judge Motz may still find that Microsoft is required to ship Sun's Java. Does anybody still care about this? All these legal shenanigans seem less and less relavant with each passing day. The complete ruling is available in PDF format.

Bruno Lowagie has released iText 1.0, an open source Java library for creating documents in PDF, XML, HTML, and RTF. It can also convert XML documents into any of these formats. iText is published under the Mozilla Public License.

Nokia's posted the maintenance release of JSR-135, Mobile Media API to the Java Community Process (JCP).

Thursday, June 26, 2003

Oracle has submitted JSR-227, A Standard Data Binding & Data Access Facility for J2EE to the Java Community Process (JCP). Quoting from the JSR,

This proposed specification will define a framework of classes, called Declarative Bindings, that formalize the characteristic interactions between typical UI components and values and methods available on Business Services. By using the Declarative Bindings set forth in this specificiation, any Java UI rendering technology can declaratively bind to any Business Service. Example UI components and controller technologies include: JSP JSTL tags, JSF, Struts, and Swing. Example business services include SOAP Web Services, EJB Session Beans or any Java class being used as an interface to some functionality.

This looks interesting, but I'm not sure why this belongs in the JCP right now. Research like this should be performed in adavnce of standardization. Making it a required part of J2EE before it's actually been determined whether or not it works is a recipe for disaster, not to mention J2EE is just getting way too big an unwieldy. It seems like everyone's pet programming style, API, or technique is getting shoved in there under one rubric or another. We need to get past the idea that every technology and library has to be part of the core to be useful.

Ralph Jocham's posted version 0.95 of JCSC (Java Coding Standard Checker), 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. According to Rocham, version 0.95 "has been completely refactored. The core is now XML driven which makes the adding of further rules faster. Also, rules can be en-/disabled on a case by case basis and each rule can have a priority assigned. The priority can be used to group the parse results. These changes are reflected in an improved UI -- both in the ruleseditor and the generated XML/HTML documents. JCSC now supports CruiseControl2. This release also includes various bug fixes."

Wednesday, June 25, 2003

Anil Kumar has posted an early access release of JavaDBF, an open source (LGPL) Java library for reading and writing Xbase files. JavaDBF does not use JDBC, Instead it has a simple API of its own.

Sebastien Vauclair has posted the third beta of the Extensible Java Profiler 1.0 (EJP), an open source (GPL) profiling tool based on the Java Virtual Machine Profiler Interface (JVMPI). In contrast to Sun's hprof tool, Sun's hprof tool, which generates statistical information, EJP logs every single method invocation and thus can trace the execution of small parts of Java programs.

Jim Menard's posted version 0.7.9 of DataVision, an open source "database reporting tool similar to Crystal Reports". DataVision is written in Java and supports multiple databases including PostgreSQL, MySQL, and Oracle. This is a bug fix release.

Matthew Doar has released JDiff 1.0.9, "a Javadoc doclet which emits an HTML report of all the packages, classes, methods, and so on, which are different (the "diff" part) when two Java APIs are compared. Great for reporting what has changed between two releases of your product." This is a bug fix release. JDiff is published under the GPL.

Will Ready has released JavaWizardComponent 1.0, an open source Swing component that designed to be traveled through using Next, Back, Finish, Cancel. JavaWizardComponent is published under the LGPL.

Tuesday, June 24, 2003

Apple has posted a preview release of a revised JDK 1.4.1 for Mac OS X on the Apple Developer Connection. (Registration and annoying NDAs required.) "This seed consolidates a number of recent bug fixes to Java 1.4.1 and includes the changes to Java 1.3.1 from the recent Java Oracle bug fix release." Once installed this release cannot be uninstalled short of reinstalling the OS, so use with caution.

IBM has posted the public review draft specification for Java Specification Request 95, J2EE Activity Service for Extended Transactions. Quoting from the introduction to the spec,

As the J2EE environment matures, increasingly complex business applications are placing greater demands on the container/server middleware to support more sophisticated transactional semantics than the short-lived ACID transactions provided by the Java Transaction Service (JTS)1. For example web service applications deployed into a J2EE environment are typically composed of loosely coupled interactions for which it may be necessary to relax the isolation characteristics of a transaction without completely sacrificing atomicity. This requires a different sort of transaction from a JTA transaction, perhaps extending over a more significant period of time and involving participants that require compensation to deliver atomicity.Many strategies are available for dealing with extended transactions, some appropriate for one type of application and some appropriate for another. But there is no single extended transaction model that will satisfy all types of application; what is required is a middleware framework that can be exploited by arbitrary, specific extended transaction models. The OMG Activity service2specifies such a framework for CORBA-based middleware. This document describes the system design and interfaces for a J2EE Activity service that is the realization, within the J2EE programming model, of the OMG Activity service.

The purpose of the Activity service is to provide a middleware framework on which extended Unit of Work (UOW) models can be constructed. An extended UOW model might simply provide a means for grouping a related set of tasks that have no transactional properties or it may provide services for a long-running business activity that consists of a number of short-duration ACID transactions. The Activity service is deliberately non-prescriptive in the types of UOW models it supports. The advantage of structuring business processes as activities with looser semantics than ACID transactions, for example by modeling a business process as a series of short-duration ACID transactions within a longerlived activity, is that the business process may acquire and hold resource locks only for the duration of the ACID transaction rather than the entire duration of the long-running activity. In a widely distributed business process, perhaps involving web-based user interactions and cross-enterprise boundaries, it is neither practical nor scalable to hold resource locks for extended periods of time. A typical problem with extended UOW models is that the failure scenarios may be quite complex, potentially involving the compensation of some or all of the ACID transactions that were committed before a long-running activity failed. The responsibility for providing the appropriate recovery from such a failure may be shared between the application itself, which is the component that understands what needs to be compensated, and the extended unit of work service provider, which might provide facilities to register compensating actions.

Comments are due by August 7.

Monday, June 23, 2003

Ian Bourke has released Barbecue 1.05, an open source barcode generator for Java that enables barcodes to be displayed as Swing and AWT components, printed on paper, and saved as images for Web pages.

Sunday, June 22, 2003

The Apache Commons Project has released Commons EL, an interpreter for the Expression Language that is part of the JavaServer Pages (JSP) specification, version 2.0. This implements the javax.servlet.jsp.el package.

Saturday, June 21, 2003

The Eclipse Project has posted the first milestone release of Eclipse 3.0, an open source integrated development environment (IDE) for Java. It 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. From my perspective, the most important new feature in this release is much better support for Mac OS X. This is planned to be back ported to an upcoming 2.2.1 mainntenance release so Mac users won't have to wait for the final 3.0 release currently scheduled for 2004. Other new features are mostly minor. Overall this feels more like a 2.2 than a full version shift. These include:

There are also some significant improvements in the SWT, including support for multiple monitor configurations and right-to-left languages such as Hebrew and Arabic.

Richard Rodger has posted Jostraca 0.3.3, "a general purpose code generation toolkit for software developers. Code generation helps save you time and effort by reducing redundancy and drudge work. Code generation can be thought of as programming by example. Show the computer an example of what you want, and it does the rest. Jostraca generates code using the Java Server Pages syntax. However this syntax can be used with any language. Jostraca comes preconfigured for Java, Perl, Python, Ruby, Rebol and C, with more to come." Jostraca is published under the GPL. Jostraca is written in Java, and Java 1.2 or later is required.

Friday, June 20, 2003

IBM's alphaWorks has released Data Wizard for Java, a "a tool for building a simple graphical user interface (GUI) that makes it easy to collect necessary data. This tool enables the building of data wizard applications using only a scripting scenario in an XML format. Data Wizard for Java can help to produce a GUI by using a simple script to describe the necessary input parameters and the required tools or utilities to be called. Data Wizard for Java helps when it is necessary to develop a script or a utility that takes action in a development process, an installation, or a fix for a software package at a customer site. It is necessary to give the customer an easy way to pass the required parameters or data to such scripts or utilities. GUI interface is the optimal solution, but the development effort and cost is high. Data Wizard for Java solves this problem."

Thursday, June 19, 2003

At the end of last month four Sun-submitted Java Specification Requests (JSRs) were voted down in the Java Community Process (JCP). These are

These four drafts would have updated the existing 1.0 versions of those specs to support Java 1.4. However, the nay-voters seemed seriously concerned about the increase in memory footprint this would have required.

Sun has now revised these JSRs to use less memory, and the revised JSRs have passed, though IBM and Motorola still voted no. There also appear to be some disagreements within the JCP board about the licensing of these specs. Sun apparently plans to charge a "Per unit royalty fee which will be dependent on volume."

The Institute for System Architecture at the University of Technology Dresden has released JAP, an open source, personal anonymizing HTTP proxy written in Java. In my initial test it worked, though it was alittle slower than direct surfing. You do need to be sure to set it up as both your HTTP and SSL proxy.

Francois Beausoleil has posted version 0.6 of his Java GUI Builder, an open source tool that  reads an XML description of a GUI and then generates windows, controls, menus, and other objects for later retrieval by the program. This release adds event handler functionality. Java GUI Builder is published under the GPL.

Wednesday, June 18, 2003

Nokia has submitted JSR-226, Scalable 2D Vector Graphics API for J2ME to the Java Community Process (JCP). Quoting from the JSR,

This specification will define an optional package API for rendering scalable 2D vector graphics, including image files in W3C Scalable Vector Graphics (SVG) format. The API is targeted for J2ME platform, with primary emphasis on MIDP. The main use cases for this API are map visualization, scalable icons, and other advanced graphics applications.

The main target platform of this API is J2ME/CLDC/MIDP. The API is targeted at CLDC class devices that typically have very little processing power and memory, and no hardware support for 2D graphics or floating point arithmetic. The API shall allow utilization of native 2D graphics features of the device when applicable.

The API should include:

  • Ability to load and render external 2D vector images, stored in the W3C SVG Tiny format.
  • Rendering of 2D images that are scalable to different display resolutions and aspect ratios.

The EG shall consider possibilities for subsetting from Java 2D API / JSR-209. Where subsetting is not possible, the API should be efficiently implementable on top of the Java 2D API / JSR-209. The API should be rich enough to support an SVG Tiny implementation.

Last night at the monthly meeting of the New York XML SIG, David Megginson pointed out that the W3C is schizophrenic. It is both a research and development organization and a standards organization; and it often uses its standards wing to attempt to foreclose competition with its R&D. Think of schemas.

This morning I'm realizing the JCP is like that too. I've never even seen an SVG API, and hardly anyone is using one, yet here's Nokia proposing to standardize one (and charge $50,000 + $20,000 per year for the technology compatibility kit). The recent JSR 225 XQuery API for Java (XQJ) is similar. Both of these are very good subjects for research. Neither is yet appropriate for standardization, nor should we assume that whatever products comes out of these groups' research will automatically be standardized.

Perhaps what's needed is a more formal R&D organization for Java where different innterested groups like Sun, Apache, IBM, and Nokia can come together to work on topics of mutual interest that is not a standards body. Perhaps in the spirit of scientific research it could be a genuinely open process that doesn't require NDAs and big licensing fees. Such an organization should explicitly allow forking and incompatible implementations as part of the experimental process. If we don't try different approaches, we won't know which ones work best.

Tuesday, June 17, 2003

Andrew Sorensen and Andrew Brown have released jMusic 1.4.1, an open source Java class library for generating and manipulating music intended for computer assisted composition. It provides a music data structure based on note/sound events. jMusic can read and write MIDI files, audio files, and its own .jm files. Version 1.4.1 is a bug fix release. jMusic is published under the GPL.

Monday, June 16, 2003

Linus Tolke has released ArgoUML 0.13.6, an open source UML modelling tool written in Java. ArgoUML is published under a BSD license. This is a bug fix release.

Alexandre Brilliant has released JSyntaxColor 1.1, a €110 shareware Java library for coloring user text input in real time. JSyntaxColor supports Java, SQL, and Formula syntax out of the box, and can be customized for other languages.

Friday, June 13, 2003

Ximian Desktop 2 is out for SuSE 8.2 and Red Hat 7.3 to 9. This is a little late for me. I nuked my main Mandrake 8 desktop last week and installed Red Hat 8 instead. The older libraries in Manbdrake 8 were becoming a real problem. An increasing amount of crucial software just wasn't able to run. I tried to upgrade to Mandrake 9 first, but the upgrade failed and destroyed my system, so I went ahead and switched over to Red Hat, then restored my data from backups.

The default user interface in Red Hat strikes me as substantially superior to Ximian 1, and doesn't have any obvious flaws (unlike Mandrake 8 and Ximian 1). I may upgrade to Red Hat 9 now that I've finally finished downloading the ISOs, but it's not obvious to me why I should use Ximian at this point in time. Ximian seems to be running way behind the state of the art. The amount of time it took them to upgrade to Gnome 2 was just unacceptable, and that was hardly the only problem. Almost all software I got through Ximian was seriously out of date, and could not be easily upgraded. For instance, on my Windows and Mac systems I was running the latest Mozilla betas. On my Linux box, I was using Mozilla 1.0.1, and if I tried to change it, Nautilus broke. For a long time, Ximian supported essentially no current distributions. It's not clear that the desktop is a priority for them going forward. They seem much more interested in groupware clients and experimental development environments. I'm cautious about getting locked into an increasingly out of date system for another year.

Thursday, June 12, 2003

Adewale Oshineye suggested I take a look at Same instead of Condenser. Same is a code duplication detection tool written in Java (as opposed to Condenser, which is written in the uninstallable Jython). The documentation for Same suggested a rather complicated installation, but in a rare twist of fate, the documented install was much more complicated than the reality. I just had to edit the Same shell script to point at my Java installation, and run it on my files.

Same detected two places in the XOM code base where there was removable duplicated code, one in Verifier where checking URIs could be viewed as a special case of checking URI references, and one in Builder where one constructor could use this() to call another. However, the vast majority of hits were false positives. Most of them came from comments, either the LGPL comment at the top of almost every file in XOM, or JavaDoc comments for overridden methods in subclasses that were very similar to the original comments in the superclasses. If Same could be configured to ignore comments when searching for duplicate code, it would be a much more usable tool.

Apache has released version 1.2.4 of the Tomcat mod_jk web server connector. This connector enables Apache web server users to forward servlet requests to Tomcat while still using Apache for static pages. Version 1.2.4 "fixes a number of minor bugs and ports all features from the Apache 1.3 version to the Apache 2 version of mod_jk 1.2."

Michael B. Allen has posted jCIFS 0.7.9, 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. Version 0.7.9 fixes bugs. jCIFS is published under the LGPL.

Wednesday, June 11, 2003

Sun's released a minor maintenance update to the Java Development Kit 1.4.1. Version 1.4.1_03 fixes a few assorted bugs.

Sun's released version 2.1.1e of Java Media Framework (JMF). "This release includes a few bug fixes and an updated Linux performance pack."

Sun has posted version 1.3.1 of the Java 3D API. This "API enables the creation of three-dimensional graphics applications and Internet-based 3D applets. It provides high-level constructs for creating and manipulation 3D geometry and building the structures used in rendering that geometry. With this software, you can efficiently define and render very large virtual worlds." It's not immediately obvious what's changed in this release.

Sun's posted the Java Secure Socket Extension (JSSE) 1.0.3_02, a minor update for users of Java 1.2 and 1.3. JSSE implements "SSL (Secure Sockets Layer) and TLS (Transport Layer Security) protocols and includes functionality for data encryption, server authentication, message integrity, and optional client authentication." Version 1.0.3_02 has been signed with an updated certificate that extends the package's validity period to April 17, 2004 fixes a bug that could cause valid certificates to be rejected.

Tuesday, June 10, 2003

Version 1.1.0 of the Kaffe open source Java virtual machine has been released. According to developer Jim Pick, "This is a 'development' release, the first one in the 1.1.x series. It's probably much better than the 1.0.7 release, but it has not been tested extensively enough to be considered a production release." This runs on various Unixes, but "both the Windows and Mac OS X ports are still quite broken." New features in 1.1.0 include:

New packages supported in this release include

The NetBeans Project has released version 3.5 of the open source NetBeans Integrated Development Environment and Platform. According to the announcement,

Work on this release was focused almost entirely on performance. Both startup time and general UI responsiveness have improved significantly. In addition to that, several modules, previously available on the Update Center, have been added to the standard distribution. These modules provide many features, including support for:
  • debugging servlets and applications written with JSP technology.
  • creating and editing JSP tag libraries.
  • monitoring HTTP requests.
  • WAR file packaging.
  • connecting to and browsing databases.

Features removed include RMI support, JNDI support, the XML Tree Editor, Scripting support, and the New Module Wizard. These are still available from the NetBeans update center.

Ivan Moore has released Condenser 1.0.6 (web site not yet updated), an open source "tool for finding and removing duplicated Java code." I wanted to test this out since I know there's a lot of duplicate code in XOM, but Condenser requires Jython, and the Jython installer got caught in an infinite loop on my Linux box. Condenser is published under an MIT license.

Monday, June 9, 2003

The Legion of the Bouncy Castle has released version 1.19 of the open source Bouncy Castle Java Cryptography library. This includes a lightweight cryptography API, a JCE and JCA provider, a clean-room implementation of the JCE 1.2.1, generators for Version 1 and Version 3 X.509 certificates, PKCS12 support, and APIs for dealing with S/MIME, CMS, and OCSP. J2ME and Java 1.0 through 1.4 are supported. New features in this release include AES support for CMS and S/MIME, settable key sizes, and ARC4.

Sunday, June 8, 2003

David Hovemeyer posted FindBugs 0.6.0, an automated tool for finding potential bugs in Java code. New features in this release include

I ran FindBugs 0.6 against the latest XOM code base, and it didn't find anything significant. There were numerous false positives though. FindBugs is published under the LGPL.

I also tested out the latest release of PMD, a tool of similar purpose with very different internals. This was very useful for one particular class of bug. PMD detected four pages full of unused local variables in various methods which I have now removed from XOM. In one case, the unused local variable meant a unit test was not testing what it claimed to be testing. (I had passed the wrong set of variables to a method.) The rest of the time, it was mostly a matter of cleaning up and simplifying the code. However, all the other PMD tests reported many, many false positives and almost no genuine bugs. For instance, PMD flagged numerous empty catch statements I use in my unit tests to make sure the correct exceptions are being thrown:

try {
  fail("Didn't throw exception");
catch (Exception ex) {
  // success

One thing I've repeatedly noted as lacking in tools of this nature is a feature lint had twenty years ago: special comments that turn off checking in particular blocks of code. For example, the above test might be written as

try {
  fail("Didn't throw exception");
catch (Exception ex) {

This would allow me to note in code that I really did mean to do what might naively be counted as a bug.

The final tool I tested had a slightly different purpose. Sun's doccheck inspects JavaDoc comments rather than the actual code. It only runs with Java 1.2, so first I had to install the older version. Once I did that and worked my way through a confusing set of configuration options, it found one important bug in the JavaDoc (a missing @param statement), and a few minor problems (missing @since statements in package.html files). It also complained about my general failure to mark every getter/setter method with @see statements pointing to the corresponding setter/getter. However, in all cases it was clear why it was complaining. Although it didn't find much, at least it didn't force me to wade through pages of false positives to get the one or two nuggets of useful info.

The final bug search I tried yesterday was building a XOM test harness for the XInclude test suite. This was less automated and much more work than the automated tools, but it was also far and away the most useful info of the day. It was the only thing that found several genuine bugs in my code; i.e. cases where the code just wasn't doing what it was supposed to be doing. It also uncovered several unclear areas of the XInclude specification which I havge reported to the working group in the hopes that they will clarify the language before publication.

Bottom line: Unit tests and test suites are much more powerful tools for finding bugs than automated code checkers.

Saturday, June 7, 2003

The Eclipse Project has released AspectJ 1.1. AspectJ is a variant of Java that allows you to write code that crosses class and method boundaries. New features in 1.1 include

Sun has posted the second proposed final draft specification for Enterprise JavaBeans 2.1 in the Java Community Process (JCP). Version 2.1 "extends the existing Enterprise JavaBeans 2.0 specification with new features, including support for JAXM message-driven beans, enhancements to EJB QL to support aggregate and other operations, support for linking of messaging destinations, support for web services usages within EJB, and a container-managed timer service."

Sun has also posted the proposed final draft specification of the Java Management Extension (JMX) Remote API 1.0 in the Java Community Process (JCP). Quoting from the spec,

Java Specification Request (JSR) 3 [JSR3] defines the JMX specification. What is standardized by JSR 3 is the way in which resources are instrumented within a management agent based on Java technology, and a certain number of agent-local services based on that instrumentation. Although JSR 3 defines terminology for remote access to instrumentation, it does not standardize any particular remote access API or protocol. Many solutions exist for exporting JMX API instrumentation either through existing management protocols such as the simple network management protocol (SNMP) or through proprietary protocols. This JSR (JSR 160) standardizes one such solution.
Friday, June 6, 2003

Cafe au Lait now has an RSS feed which you can load from http://www.cafeaulait.org/today.rss. It's written in RSS 0.92 and is generated automatically each morning by an XSLT stylesheet that scrapes the XHTML.

Sun has posted the proposed final draft of JSR 197, Generic Connection Framework Optional Package for J2SE, to the Java Community Process (JCP). "The Generic Connection Framework (GCF) Optional Package for J2SE will permit applications that rely on the GCF in J2ME to migrate to J2SE." Essentially, this means adding javax.microedition.io package from J2ME to the regular JDK.

Brad Cox has has released Java+ 2.0, a preprocessor that supports "long, multi-line strings with executable inclusions like Perl or Ruby, optionally segregates Java+ strings into ResourceBundle files, eliminates the need for JSP or ASP and their implied need for Java compilers on deployment servers (a security concern), and adds absolutely no overhead in either space or time. There are graphical and command line interfaces, and a simple, general, and recursive string syntax." Version 2.0 makes various changes to the build strategy. Java+ is published under a BSD license.

OpenEJB 0.9.2 has been posted. 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.2 adds tools for OpenEJB/Tomcat users including a JNDI browser, an EJB viewer, a class browser, and an Object invoker.

The Ping Software Group has released version 1.4.2 of the Kiwi Toolkit, an open source (LGPL), Swing-based GUI class library that includes a TreeTable component, a DateChooser, an MVC charting package, a plugin framework, an application resource manager, and more. There's some useful stuff here. The obvious flaw is that it doesn't adhere to standard Java package naming conventions. 1.4.2 adds a simple applet runner framework and a few other small enhancements.

Thursday, June 5, 2003

BEA Systems has posted the first public review draft of Java Specification Request (JSR) 173, Streaming API for XML (StAX), to the Java Community Process. This JSR proposes a Java-based, pull-parsing API for XML. StAX offers two approaches. XMLStreamReader and XMLStreamWriter are a cursor API designed to read and write XML as efficiently as possible. XMLEventReader and XMLEventWriter are an iterator API designed to be easy to use, event based, easy to extend, and allow easy pipelining. The iterator API sits on top of the cursor API. There is a reference implemenation bundled with the spec andf JavaDoc. I haven't had time to write code with it yet, or to test the performance; but overall from the spec and JavaDoc I'd say this is the cleanest, most XML conformant pull parser I've seen to date. It's definitely a substantial improvement on XMLPULL. Comments are due by July 4.

Sun has posted the second public review draft of the Java Specification Request 127. Java Server Faces in the Java Community Process. Sun's also included the fourth early access release of Java Server Faces as part of the Java Web Services Developer Pack 1.2 on the Java Developer Connection (registration required). Quoting from the web page,

JavaServer™ Faces technology simplifies building user interfaces for JavaServer applications. With the well-defined programming model that JavaServer Faces provides, developers of varying skill levels can quickly and easily build web applications by: assembling reusable UI components in a page, connecting these components to an application data source, and wiring client-generated events to server-side event handlers. With the power of JavaServer Faces technology, these web applications handle all of the complexity of managing the user interface on the server, allowing the application developer to focus on application code.

JavaServer Faces technology includes:

  • A set of APIs for: representing UI components and managing their state, handling events and input validation, defining page navigation, and supporting internationalization and accessibility.
  • A JavaServer Pages™ (JSP™) custom tag library for expressing a JavaServer Faces interface within a JSP page.

Comments are due by July 4.

Sun's also posted the proposed final draft specification of Java Specification Request (JSR) 185, Java Technology for the Wireless Industry (JTWI), to the Java Community Process (JCP). Quoting from the spec,

The goal of the JTWI specification is to improve the compatibility, interoperability and completeness of J2ME technology implementations in mobile phones. This specification raises the bar of functionality for high-volume devices while minimizing API fragmentation thereby broadening the already substantial base of applications that have been developed for mobile phones.

This specification achieves these goals in three ways.

  • First, it specifies a common set of essential APIs. In some cases, these APIs provide uniform access to services that were once only available through device specific APIs, or not at all.
  • Second, it mandates elements of the component specifications.
  • Third, some elements of the component specifications have been clarified within this specification.

The mandatory specifications incorporated into JTWI are:

In addition, the Mobile Media API Emulator (MMAPI) 1.1 (JSR-135) is conditionally required.

Wednesday, June 4, 2003

Siemens AG has posted the first public review draft of Java Specification Request (JSR) 205 Wireless Messaging API 2.0, to the Java Community Process (JCP). According to the draft spec,

The messaging API is based on the Generic Connection Framework (GCF), which is defined in the Connected Limited Device Configuration (CLDC) 1.0 specification. The package javax.microedition.io defines the framework and supports input/output and networking functionality in J2ME profiles. It provides a coherent way to access and organize data in a resource-constrained environment.

The design of the messaging functionality is similar to the datagram functionality that is used for UDP in the Generic Connection Framework. Like the datagram functionality, messaging provides the notion of opening a connection based on a string address and that the connection can be opened in either client or server mode. However, there are differences between messages and datagrams, so messaging interfaces do not inherit from datagram. It might also be confusing to use the same interfaces for messages and datagrams.

The interfaces for the messaging API have been defined in the javax.wireless.messaging package.

Comments are due by July 3.

Tuesday, June 3, 2003

Looking at the 500 messages in my inbox this morning, it seems yet another Microsoft Outlook worm has started using my e-mail address to replicate itself. Folks, would you please set your virus scanners not to respond to the apparent address the worm came from? These addresses are *forged*. I have nothing to do with this virus. I do not use Outlook or Microsoft Windows. I am not infected. Il n'y a pas d'infection ici. There is nothing I (or anyone else you're spamming these messages to) can do about the problem. Auto-replying to worm messages just contributes to the problem.

Daniel Bonniot's Nice 0.8 is a new object-oriented programming language based on Java.Features it adds include parametric types, anonymous functions, multi-methods, tuples, and optional parameters to methods, detection of many errors during compilation (in particular. Nice claims to implement design by contract, but in fact it gets this seriously wrong by allowing the precondiitons to be turned off at runtime. A contract that can be freely violated is no contract at all. Nice compiles to standard Java 1.2 byte codes and can use the standard Java class libraries. Nice is published under the GPL.

Monday, June 2, 2003

The Jakarta Apache Project has posted the first beta of HTTPClient 2.0. "Although the java.net package provides basic functionality for accessing resources via HTTP, it doesn't provide the full flexibility or functionality needed by many applications. The Jakarta Commons HttpClient component seeks to fill this void by providing an efficient, up-to-date, and feature-rich package implementing the client side of the most recent HTTP standards and recommendations....Designed for extension while providing robust support for the base HTTP protocol, the HttpClient component may be of interest to anyone building HTTP-aware client applications such as web browsers, web service clients, or systems that leverage or extend the HTTP protocol for distributed communication."

Version 0.9 of the Abbot GUI testing framework has been released. New features in this release include drag and drop of script steps, dynamic property comparisons, and various usability improvements. Abbot is published under the LGPL.

Sunday, June 1, 2003

Sun and IBM have posted the public review draft specification for Java Specification Request (JSR) 105, XML Digital Signature APIs. Comments are due by June 29.

Enterprise Distributed Technologies has released version 1.2.2 of its Java FTP client library, an LGPL'd class library that provides full FTP functionality. The API has methods matching FTP commands such as put(), get(), chdir(), dir() and pwd(). It supports both active and passive FTP.

Older news:

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

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

Copyright 2003 Elliotte Rusty Harold
Last Modified June 13, 2003