JBoss's Gavin King has published the early draft review of JSR-299, Web Beans in the Java Community Process (JCP). According to the JSR, "The goal of this work is to enable EJB 3.0 components to be used as JSF managed beans, unifying the two component models and enabling a considerable simplification to the programming model for web-based applications in Java." It continues:
Web Beans provides a unifying component model for Java EE by defining:
- A programming model for stateful, contextual components, where metadata may be defined using either annotations or XML deployment descriptors. This component model is compatible with both EJB 3.0 and JavaBeans.
- A sophisticated, typesafe dependency injection mechanism.
- Integration with the Unified Expression Language (EL).
- Support for method and component lifecycle interceptors.
- An event notification model.
- A facility for overriding API implementations at deployment time.
- A facility for configuring components via XML.
- An extensible context model.
- A web conversation context in addition to the three standard web contexts defined by the Java Servlet specification.
- Conversation-scoped JPA extended persistence context management.
- A deployment and packaging model compatible with existing Java EE standards. Web Beans is compatible with Java EE 5 and above.
In particular, Web Beans allows EJB 3.0 components to be used as JSF managed beans, thus unifying the the component models of EJB and JSF and significantly simplifying the programming model when EJB and JSF are used together.
Comments are due by December 1.
Syncro Soft has released Syncro SVN Client 2.5, a $59 GUI Subversion client written in Java. Besides bug fixes, version 2.5 can now associate file types with editors and use external diff programs.
Sun's posted the JDK 1.6.0_03, which by my count is the fourth update to the JDK 1.6.0. This seems to be a minor bug fix release. The major new "feature" is some OpenOffice spam in the upgrade dialog.
 Cenqua  has released Clover 2.0, a $1200 payware test coverage tool.
Clover modifies the source code to enable it to follow which statements are executed when, and keeps a running count of how many times each statement is executed during the test suite. Any statement that executes zero times is not being tested. 
I use Clover with  Ant, but there's also an Eclipse plug-in.
Clover can generate test coverage reports in 
XML, HTML, PDF, or via a Swing  Viewer. 
Version 2.0 adds cyclomatic complexity calculations, a Maven 2 plug-in, coverage clouds and can tell you
 which tests hit what code. Upgrades from 1.x are $600 or free if you bought in the last year.
Cenqua  has released Clover 2.0, a $1200 payware test coverage tool.
Clover modifies the source code to enable it to follow which statements are executed when, and keeps a running count of how many times each statement is executed during the test suite. Any statement that executes zero times is not being tested. 
I use Clover with  Ant, but there's also an Eclipse plug-in.
Clover can generate test coverage reports in 
XML, HTML, PDF, or via a Swing  Viewer. 
Version 2.0 adds cyclomatic complexity calculations, a Maven 2 plug-in, coverage clouds and can tell you
 which tests hit what code. Upgrades from 1.x are $600 or free if you bought in the last year.
The official release isn't out till tomorrow, but some people got their copies early and Apple has only shipped Java 5 with Mac OS X 10.5 Leopard. Java 6 remains a pipe dream for cross-platform development, and Jobs' promise to make the Mac the best Java development platform is as empty as ever. :-(
Sun has released JavaMail 1.4.1. JavaMail is a basic library for performing POP, SMTP, and IMAP. I wrote about this in the final chapter of Java Network Programming. 1.4.1 fixes bugs. Java 1.4 or later is required. This is published under the open source CDDL license 1.0 and GPL version 2.
Sun's released the Java Wireless Toolkit 2.5.2. The Toolkit includes build tools, utilities, and a device emulator. This release improves support for multiuser environments and may work on more Linux distros than in the past. Supported APIs include:
The GNU Project has released version 0.96(.1) of GNU Classpath, an incomplete free implementation of the core Java class libraries.
This release switches fully towards the 1.5 generics work that we previously released separately as classpath-generics. All this work is now fully integrated in the main release and various runtimes (gcj, cacao, jamvm, ikvm, etc) have been extended to take advantage of the new generics, annotations and enumeration support in the core library. From now on we intend to no longer release both a non-generics and a generics version. But if there is demand we might consider resurrecting the non-generics 1.4 branch with selected bug-fixes (depending on having a branch maintainer). Work is on the way to also add the new 1.6 additions, a start for selected packages has been made in this release.
That said, the main feature of this release is our new experimental GStreamer peer arising from the work of Mario Torre on his Google Summer of Code project ( http://code.google.com/soc/2007 ). This provides support for the javax.sound API using the GStreamer library ( http://gstreamer.freedesktop.org ), allowing any sound file supported by GStreamer to be played from Java. Full details are provided in the included README.gstreamer file. The peer is not yet ready for production use, but please try it and give us your feedback.
We've also improved our support for interacting with the outside world. Our JNI header has been updated to 1.6, we now better support choosing a compiler to use to build Classpath (either ecj or OpenJDK javac, the latter now having support for using the -J option to avoid out of memory errors) and our tools support has improved so as to better stand as a substitute for Sun's toolset.
AWT and Swing have seen a host of bug fixes and updates, including much improved Escher peers.
GNU Classpath is published under the GPL with library exception.
The Big Faceless Organization has released the Big Faceless PDF Library 2.8.5. This release reduces memory requirements and attempts to enforce usage restrictions on PDF documents. (Consequently you may well not wish to upgrade to this version. Personally I want software to do what I tell it to do, not what someone else tells it to do.) The library costs $700 (more if you want support). The $1300 Extended Edition adds the AcroForms support, digital signatures, and the ability to import and edit and existing PDF documents.
Ericsson has submitted JSR-319: Availability Management for Java to the Java Community Process (JCP). According to the JSR,
The purpose of the Availability Management for Java is to enable availability frameworks to supervise and to control Java runtime units in a standardized way. The API has the following goals:
- - It shall not specify the availability management framework itself but it shall only specify the means by which the framework can supervise and control the Java units within a JVM. The means by which the framework instantiates JVMs and communicates with the JVMs are outside the scope of the specification. The specification will define the local interactions within one JVM only.
- - It shall allow different service providers to provide support for specific availability frameworks, standardized or proprietary. It is required that a service provider for the standardized AMF (Availability Management Framework) of SA Forum shall be feasible.
- - It shall be designed with Java EE as the main target, although parts of the specification will also be useful on Java SE. The specification has to consider the constraints set by the component models of Java EE.
- - It shall specify a basic set of features that can be considered as useful for Java EE and possible to support by most availability management frameworks. This implies that only a subset of the features of AMF will be supported.
- - It shall support Java EE applications that are not at all, to some extent or completely aware of the control of the availability management framework. It is anticipated that the main part of the specification is implemented in the Java EE server and that existing Java EE applications can take advantage of the availability support without any changes.
- - It shall not handle all aspects of clustered Java systems. Especially it shall not specify any state replication solution, although it may specify that the API can give hints to such replication solutions in the form of reasons for the activation or the deactivation of a unit.
The specification is anticipated to contain the following features:
- - The Java runtime system is considered to consist of different availability units that can be supervised and controlled by the service provider. The provider can create, activate, deactivate and destroy an availability unit. An availbility unit may be mapped to a Java EE application.
- - A root availability unit maps on all services that are not modelled as regular availability units. It represents the server instance. A failure of the root availability unit is considered to cause a failure of all the other availability units also.
- - An availability unit may support health checks and it can report failures to the service provider.
- - An availability unit may subscribe for state changes of peer units in other JVMs.
- - An availability aware Java EE application shall get a callback reference via JNDI or injection and it shall get application lifecycle method invocations or notifications containing a reason argument.
If it's not too overly complex (though what are the chances of that? This is JEE after all) I could use this. Currently I'm just writing bash scripts to check if the VM is still running. Comments are due by October 29.
Next week, Tuesday October 23, I will be presenting 
Native XML Databases to the New York PHP User's Group in midtown Manhattan.
Time permitting, I may do a little actual XQuery and PHP code, but mostly
I'll be talking at a high level about just what native XML databases are and are not good for and why and when you might want to use one. 
I expect there to be several committed SQL and flat file bigotsaficionados in attendance so expect sparks to fly; and if they don't, well, I guess we'll just have to go drink some more beer until they do. :-)
The meeting is free but preregistration and ID are required. 
bring an open mind or a basket of tomatoes: your choice. 
JetBrains has released IntelliJ IDEA 7.0. New features in this release include:
IDEA is $499 payware. Upgrades from previous version are $299. (Their site seems to be down at the moment so I haven't been able to double check the prices. I really wish companies would just put this basic information in their press releases and announcements instead of trying to hide it. )
Apple's removed the Java 1.6 preview from the Apple Developer Connection, possibly because they expect to ship it with Mac OS X 10.5 Leopard in a couple of weeks, or possibly because they've decided not to ship it at all. With Apple, it could go either away.
Ericsson and BenQ have published the public review draft of JSR-281: IMS Services API to the Java Community Process (JCP). According to the draft, "JSR-281 is intended to be used by application developers who wish to build Java applications for terminals that use the IP Multimedia Subsystem (IMS), which is the standard for future mobile phone multimedia applications."
JPOX 1.1.9, an open source implementation of Java Data Objects (JDO) 2.0, has been released. that provides transparent persistence to Java objects. It supports most major SQL databases and can be queried using either JDOQL or SQL. 1.1.9 fixes some thread safety issues. It's published under the Apache 2.0 License.
The Gnu Project has released version 4.2.2 of GCC, the GNU Compiler Collection. GCC contains frontends for C, C++, Objective C, Fortran, Ada, and Java as well as libraries for these languages. GCC's Java is a clean room implementation that doesn't use any Sun code, so it doesn't always exactly match Sun release versions, but this is roughly at the Java 1.4 level with some omissions. Java-wise 4.2.2 unbundles fastjar and adds a new -static-libgcj command-line option to choose "a linker compatible with GNU Binutils. As its name implies, this causes libgcj to be linked statically. In some cases this causes the resulting executable to start faster and use less memory than if the shared version of libgcj were used. However caution should be used as it can also cause essential parts of the library to be omitted. Some of these issues are discussed in: http://gcc.gnu.org/wiki/Statically%20linking%20libgcj".
MySQL A.B. has released MySQL Connector/J 5.0.8 and 5.1.5, the Type-IV all-Java JDBC driver for MySQL that's "suitable for use with any MySQL version including MySQL-4.1, MySQL-5.0, MySQL-5.1 beta or the MySQL-6.0 Falcon development releases." 5.0.8 fixes bugs. 5.1.5 adds support for JDBC 4.0 including:
CMP has posted the call for abstracts for the Embedded Systems Conference Silicon Valley 2008, to be held April 14-18, 2008 at the San Jose Convention Center in San Jose, California. Topics covered include:
Submissions are due by October 17 (or at least that's what the e-mail they sent me said. The web site seems to say submissions are due by October 9). I'm probably going to submit a couple of J2ME-focused abstracts if I can find the time to attend.
Bruno Lowagie has released iText 2.0.6, 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. This release adds support for JPEG2000 and fixes bugs. iText is published under the Mozilla Public License.
IBM's JunJie Nan has released the Chinchilla Scaffold for Java Server Side Testing, a testing framework for servers decouples test logic and test contents using a generalized, dynamic proxy generation strategy.
Currently, Java™ server side testing (including IBM® WebSphere® Process Server testing) is so non-agile that even a small test logic modification necessitates full content rebuilding and redeployment between the server and client. IBM Server Side Testing Scaffold for Java is designed to solve this problem.
This scaffold implements a generalized proxy strategy that automatically generates corresponding proxies for every test target object. These proxies are on the Java client side; the test target objects are on Java server side. These proxies' APIs are same as the target objects' APIs. Because the use of these two kinds of proxies is same, the learning curve is practically non-existent. In this implementation, these proxies are referred to as Chinchilla proxies.
Chinchilla proxies can work well with the existing Java objects on the Java client side. These Java objects can accept Chinchilla proxies as parameters, and nested Chinchilla proxies can also accept other Java objects as parameters (as long as these Java objects are serializable). With multiple combinations, one can then use Chinchilla proxies and other Java objects together to easily prepare test logic.
When specific test logic on the client side is exercised, Chinchilla proxies deliver their corresponding APIs, invoking a Chinchilla agent on the Java server side. The Chinchilla agent invokes the proper execution at the target object and returns the result. Depending on the result type, Chinchilla might directly return the result (as in Java.lang.String); it might generate a new Chinchilla proxy (such as an interface) and return it; or it might throw an exception (such as when a Chinchilla agent is calling a target object API). The communication between Chinchilla proxies and agent is handled through HTTP protocols.
WebSphere® Application Server 6.0 or above and Java 1.4 or later are required.
SpeakEasy/Covad is acting up again, and my network connection is going up and down for no apparent reason. For the moment that means xom.nu, Mokka mit Schlag, The Cafes are down and e-mail is unreliable. I'm not sure when this is likely to be fixed. For future reference, the magic words for getting at least something working are "Manual Reprovision" whatever that means. This time a regular rebuild and reprovision did not accomplish anything. SpeakEasy is shipping me a new DSL modem that may fix the problem, but that isn't scheduled to arrive until Friday, assuming it ships when and how they say. (Last time this happened they told me they'd overnight it and instead sent it regular delivery.) This is the 3rd and worst outage I've had with them in the last month. I'm still looking for reliable ISP service in Brooklyn.
Sun has posted an early access release of the consumer JRE for Windows promised at JavaOne. This early access release includes the Java QuickStarter, deployment toolkit, Nimbus look and feel, and hardware acceleration for graphics. The missing piece is the Java kernel.
 Toby Corbin has released the
IBM Lock Analyzer for Java, a  "cross-platform tool that provides an insight into how well Java locks are performing in a live Java application."
Toby Corbin has released the
IBM Lock Analyzer for Java, a  "cross-platform tool that provides an insight into how well Java locks are performing in a live Java application."
The Apache Logging Services Project has released version 1.2.15 of Log4j, a logging toolkit for Java. This appears to be a minor bug fix release.
JetBrains has released IntelliJ IDEA 6.0.6. Besides bug fixes, this release adds support for Geronimo 1.2 and 2.0, MacOS X 10.5 Leopard, and JUnit 4.4. IDEA is $499 payware. Upgrades from previous version are $299.
Version 2.3.0 of jMock, an open source (BSD license) library for testing Java code using mock objects, has been released. "This release brings the JUnit 4 support in jMock 2 in line with JUnit version 4.4 and adds a few minor improvements, such as tweaks to error messages."
The call for papers is now open for the first ever Java Mobile & Embedded Developer Conference January 22-24, 2008 in Santa Clara, California:
The conference is devoted solely to the technologies of mobile and embedded Java platforms and is targeted for application developers of intermediate and advanced skill levels, platform developers, and technical personnel at tool vendors, OEMs and carriers.
Content areas are expected to include the traditional phone and PDAs development on the Java ME platform as well as SunSPOT wireless sensors, Trackbot and Java robotics, and other small Java systems used in machinery and process control but centered around Java, JavaME, and open source aspects of Java. We want this to be a community-driven conference. We are looking forward to your involvement in making this an interesting and interactive event.
Paper submissions are due by October 31. I won't be able to make it this year,. Maybe next year.
Eric Lafortune has released ProGuard 4.0, an open source Java "class file shrinker, optimizer, and obfuscator. It can detect and remove unused classes, fields, methods, and attributes. It can then optimize bytecode and remove unused instructions. Finally, it can rename the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer." Version 4.0 introduces pre-verification for Java Micro Edition and Java 6 and performs additional bytecode optimization. Proguard is published under the GPL.
Luc Maisonobe has released Mantissa 7.1, "a collection of various mathematical tools aimed towards for simulation. It is not a complete mathematical library like GSL, NAG or IMSL, but it contains various algorithms useful for dynamics simulation and 3D geometry computation." Its algorithms include:
Version 7.1 improves support for ordinary differential equations.
Cox Communications has released the completed specification of Java Specification Request 242, Digital Set Top Box Profile - "On Ramp to OCAP". This is JSR subset and extension designed specifically for cable TV boxes All of this would be about a thousand times more interesting and useful if these were actually open devices users could program for and install software onto.
IntelliJ has launched the second annual IntelliJ IDEA Plugin Contest. They're giving out $15,000 in cash prizes, and assorted software licenses, and "everybody who submits a valid entry with non-trivial functionality will receive a commemorative contest T-shirt." First prize is $7000. The deadline is December 21, 2007. Winners will be announced on January 31, 2008.
Atlassian has released version 3.11 of JIRA, a $1200-$4800 payware J2EE-based bug tracking and project management server application. In 3.11 "Time-tracking data (that is, the estimated and actual time spent on an issue) now includes the issue's sub-tasks. The aggregated time-tracking data is displayed both within individual 'parent' issues and in the Issue Navigator, so it can be easily reported on, exported to Excel, or etc....In JIRA 3.11, the new Road Map portlet shows upcoming milestones across the multiple projects of your choosing."
I've been using Jira lately with Jaxen and Apache. It's a definite improvement over Bugzilla. I'm not sure it really does anything that Bugzilla doesn't do (at least not anything I use) but the user interface is about a hundred times cleaner.