Sun has posted the second update release of Java 6 for Linux, Windows, and Solaris. This release, version 1.6.0_02, fixes about 180 assorted bugs.
Tomorrow is the last day to submit abstracts for Software Development 2008 West. The conference takes place March 3-7, 2008 in Santa Clara. Once again I'll be chairing the XML track. Of course, we'll also have the usual C++, Java, .NET, Security, Modeling & Design, Ruby, Business of Software, and Web Development tracks. The latter is sort of a catch-all for AJAX, Web 2.0, PHP, JavaScript and and other web tech that isn't already addressed in one of the existing tracks. Here are a few ideas for talks I'm still looking for.
Software and Computer Systems Company, LLC has released FastPak for Java Update 3, a $100 payware Java application loader for Mac OS X, Linux, and Windows. FastPak for Java runs several applications in the same virtual machine. They claim this reduces memory footprint, startup time, and thread consumption. This release adds a Signed Jar Loader, a native application launcher, and a daemon mode launcher.
 Elegant MicroWeb has released ElegantJ Charts, a Java Beans Charts and Graphs library with ready-to-use XML templates, a Designer IDE, and an
indicator and gauges collection.
The complete collection runs about $1050.
Elegant MicroWeb has released ElegantJ Charts, a Java Beans Charts and Graphs library with ready-to-use XML templates, a Designer IDE, and an
indicator and gauges collection.
The complete collection runs about $1050.
Nokia has posted the second proposed final draft of JSR 264, Order Management API, to the Java Community Process. According to the draft,
The OSS/J Order Management API provides significant extension of the previous JSR-089 OSS Service Activation API (JSR-264 replaces previously defined OSS/J Service Activation API JSR-89, which will be deprecated when this JSR is released), specifically:
- Addition of orders capable of provisioning Products and Resources
- Ability to create and manage Work Orders (WO)
- Ability to create, accept and manage bulk orders
- Resolved positioning in relation to other OSS/J APIs (e.g.
The Big Faceless Organization has released the Big Faceless PDF Library 2.8.4. This release plugs a memory leak. 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.
The Jakarta Apache Project has released    
HTTPClient 3.1, an open source (Apache 2.0 license) HTTP 1.0/1.1 pure Java library for performing assorted HTTP operations. 
"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."
Features include:
According to Oleg Kalnichevski, version 3.1 "finalizes support for the RFC 2965 cookie management (also known as Cookie2 or port sensitive cookies) and adds a number of improvements to the HTTP connection management. HttpClient 3.1 is likely to be the last non-bug fixing release of the HttpClient 3.x codeline."
Sun has reported their financial results for the recently completed fourth quarter of fiscal 2007. Looks like they actually made a profit this year, for the first time in quite a long while:
Revenues for the fourth quarter of fiscal 2007 were $3.835 billion. For the full fiscal year, the Company reported revenues of $13.873 billion, an increase of 6.2 percent over fiscal year 2006. Total gross margin as a percent of revenues for the fourth quarter was 47.2 percent, and gross margin for the full fiscal year was 45.2 percent, an increase of 2.1 percentage points over fiscal year 2006. Operating margin for the fourth quarter was 8.5 percent.
Net income for the fourth quarter of fiscal 2007 on a GAAP basis was $329 million, or $0.09 per share on a diluted basis. For the full fiscal year, net income was $473 million, or $0.13 per share, on a diluted basis, as compared with a net loss of $864 million, or ($0.25) per share, for fiscal 2006.
Cash generated from operations for the fourth quarter of fiscal 2007 was $564 million, and cash and marketable debt securities balance at the end of the quarter was approximately $5.9 billion.
Sun has decided to change its stock symbol from SUNW to JAVA. How exactly this is supposed to help them get their stock price out of the basement it's been living in for the last five years I can't quite figure out. Frankly this seems like a step backwards. While Java is undeniably important, it's mostly been a cost center for Sun. They've never made much if any profit out of it. When it comes to actual revenue, it's still all about the hardware sales. Part of Sun's precipitous stock price drop was a direct result of forgetting where their money actually came from. As a stockholder, one of the things I've liked about Sun since Schwartz took the reins is the refocusing on actual, profitable business lines, most of which have little to nothing to do with Java.
Does anyone know of a reliable open source library for parsing robots.txt files in Java? I found a couple of open source projects at Sourceforge but neither had released anything. This is part of the standard library in Python and available in CPAN for Perl, so there must be something. Perhaps hidden off inside some other project like Lucene or Nutch? If you know of one, please drop me a line. Otherwise, I may have to resort to writing it myself.
Update: James Orenchak and John D. Mitchell suggested using various code search tools. As I half suspected, the Apache Project's Nutch does include a class to do this. I'll have to see if I can extract this without pulling in the entire Nutch codebase.
Teodor Danciu has released JasperReports 2.0.0, an open source (LGPL) Java library for generating reports from XML templates and customizable data sources (including JDBC). The output can be displayed on the screen, printed, or written to XML or PDF files. Version 2.0 adds external style templates, an enhanced Excel exporter, and assorted bugfixes.
Google has posted the proposed final draft review of JSR-284 Resource Consumption Management API to the Java Community Process. According to the JSR,
Software systems in many circumstances need awareness of their resource usage. Meeting performance requirements often requires the ability to manage consumption of resources provided by the environment. Resource management is traditionally handled by operating systems, but the growing need to use the Java platform in the systems programming domain adds increased pressure to equip it with resource management capabilities at a level of abstraction that fits gracefully with the language.
Preventing denial of service attacks, providing load balancing, and monitoring the usage of a given resource are all difficult to do in the current version of the Java platform. In general, these and other features cannot be provided without going beyond the Java language proper, through mechanisms such as native code or shell scripts that ask the OS to handle matters related to resource management. The lack of a standard, programmatic way to partition resources available to virtual machine(s) among Java applications has led to a number of ad-hoc solutions.
The Resource Management API for J2SE Applications should address the above and be characterized by the following:
- Wide applicability. The interface should be applicable to a variety of resource management scenarios and allow the expression of numerous resource management policies.
- Flexibility. The interface should enable managing a broad range of resource types. For example, for some applications resources such as the CPU time and heap memory matter most, while other applications may find it more meaningful to manage higher-level resources, such as the number of open JDBC connections or the number of transactions per second, and the API should accommodate this entire spectrum.
- Extensibility. The resource management interface should support the addition of new resources in a uniform manner.
- Completeness of abstraction. The interface should hide from applications whether a given resource is managed by the underlying operating system (OS), by the Java Virtual Machine (JVM), by a core library, or by trusted middleware code. As a consequence, it should be possible to write resource policies for resources exhibiting common behavior abstractly, without regard for how those resources are implemented.
- Lack of specialization. The interface should not require an implementation to depend on specialized support from an OS or from hardware, although implementations should be free to take advantage of such support if available.
- Ease of exposing resources through the API in a low-overhead fashion.
- Diagnosability. It should be straightforward to determine cause(s) of an application running into resource constraints.
- Simplicity of use. While excercising the full power of the API may require expert knowledge, it should be simple to perform common resource management tasks.
Concrete examples are given below to demonstrate the need for and usefulness of the proposed specification. None of them can be realized by current APIs.
- An application management environment needs to confine each application to at most 32MB of heap memory and would like to detect applications that use more than 90% of CPU time in order to terminate them. Moreover, a minimal quantity of heap and CPU should be reserved for each application to ensure a basic level of service.
- An application would like to be notified when its usage of network resources exceedes 10MB/s, so that it can start compressing data before sending it, but only if the total CPU time consumption is below 50% (effectively this policy is about trading one resource for another).
- A service provider would like to understand (for profiling or billing purposes) how much of each resource of interest (memory, CPU time, SQL statements submitted over JDBC connections, etc.) each user is consuming.
- A service provider would like to distinguish between users with "platinum", "gold", and "silver" contracts and offer them different QoS level. This translates into the need to partition resources according to the contractually agreed upon QoS.
The API should enable resource management policies to be programmed. In particular, such a policy should have the ability to define when an application may gain access to, or consume, a unit of a specific resource. It should be possible to bind computations dynamically to policies. Programs should be able to reserve resources in advance and thus ensure predictable execution. Applications should be able to install resource monitoring code so that proactive programs can observe resource availability and take any actions required to ensure performance and availability or to ward off denial of service attacks. Existing applications should run without modification, even if the Java platform classes or the Java runtime environment they depend depend on exploits the resource management framework. The interface should not impact in any way how actual resource providers (schedulers, automatic memory subsystems, etc.) should be written - it should be possible to make these providers become "RM-enabled" by inserting calls to appropriate API methods to convey information about resource consumption attempts. The effort required to retrofit existing resource managers should thus be minimized.
The specification will build upon the abstraction of an isolate, as defined in JSR 121. An isolate is an encapsulated Java program or application component that shares no state with other isolates. Isolates are a convenient abstraction on which to develop resource management: isolation allows unambiguous resource usage accounting and clean reclamation upon program termination. The expert group will also look at enabling the API to operate on platforms that do not support the Isolate API. In particular, a single JVM could be viewed as a special case of a single isolate.
In addition to defining an API, which will be a framework through which resources can be uniformly exposed to client programs as entities subject to management, the outcome of this JSR will include a non-empty set of resources deemed core and required by compatible implementations.
Kriyagram Informatiques has released Flowchart4j, a €65 Eclipse plugin. that generates flowcharts and sequence diagrams for Java methods from source code. It can save the flowcharts as images or export them to Visio.
JetBrains has posted the second milestone beta of IntelliJ IDEA 7.0. "IntelliJ IDEA 7 Milestone 1 introduces multiple new features and improvements in Java EE support, including Spring and Hibernate, code analysis, extended version control support, including Rational ClearCase integration, enhanced debugging, code search, usability and performance." Milestone 2 adds Groovy and Grails support, a new Dependency Structure Matrix, improved Spring-Hibernate integration, and built-in support for TestNG and Maven. IDEA is $499 payware.
Oracle has released Berkeley DB Java Edition 3.2.42. This 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." "3.2.42 is a patch release consisting of bug fixes, statistics improvements, and some additional minor DPL functionality"
No Magic has released MagicDraw UML 12.5, a $149 to $2549 payware "visual UML modeling and CASE tool with teamwork support." 12.5 "enhances integrations with the most popular open-source MDA tools AndroMDA and openArchitectureWare. Additionaly, the new version of MagicDraw Teamwork Server now integrates with IBM® Rational® ClearCase® and Subversion version control system repositories."
The Apache Jakarta Project has released Commons Modeler 2.0.1:
Java Management Extensions (JMX) is an API that facilitates building management applications that can configure, and perform operations on, a server application. In general, each manageable component of the server application is represented by a Management Bean (or MBean, for short). JMX defines three types of MBeans, of which Model MBeans are the most flexible. Model MBeans provide a way to define MBeans for many different components, without having to write a specific MBean implementation class for each one.
However, this power comes at a price. It is necessary to set up a substantial amount of metadata about each MBean, including the attributes it should expose (similar to JavaBeans properties), the operations it should make available (similar to calling methods of a Java object via reflection), and other related information. The Modeler component is designed to make this process fairly painless -- the required metadata is configured from an XML description of each Model MBean to be supported. In addition, Modeler provides a factory mechanism to create the actual Model MBean instances themselves.
2.0.1 is a bug fix release.
IBM has released the finished version of JSR-291, Dynamic Component Support for Java SE in the Java Community Process. According to the spec,
The Framework forms the core of the OSGi Service Platform Specifications. It provides a general-purpose, secure, and managed Java framework that supports the deployment of extensible and downloadable applications known as bundles.
OSGi-compliant devices can download and install OSGi bundles, and remove them when they are no longer required. The Framework manages the installation and update of bundles in an OSGi environment in a dynamic and scalable fashion. To achieve this, it manages the dependencies between bundles and services in detail.
It provides the bundle developer with the resources necessary to take advan- tage of Java’s platform independence and dynamic code-loading capability in order to easily develop services for small-memory devices that can be deployed on a large scale.
The functionality of the Framework is divided in the following layers:
- Security Layer
- Module Layer
- Life Cycle Layer
- Service Layer
- Actual Services
John Brugge has released Glean, a small framework of Ant scripts "that drive a set of open-source tools to generate source code analysis, documentation and metrics for Java projects." Packaged tools include CPD, Emma, JavaNCSS, PMD, StatSVN, UMLGraph, checkstyle, Findbugs, and about a dozen more. Glean is published under an MIT License.
Norm Walsh has published the fifth release candidate of DocBook 5.0 DocBook 5 is "a significant redesign that attempts to remain true to the spirit of DocBook." The schema is written in RELAX NG. A DTD and W3C XML Schema generated from the RELAX NG schema are also available. There's also a Schematron schema "that validates some extra-grammatical DocBook constraints. These patterns are also present directly in the RELAX NG Grammar and some validators, for example MSV, can perform both kinds of validation at the same time."
 In the "Thinking Different" category, 
 Jean-Hugues de Raigniac has released
Relief 1.1, 
a tool that produces three-dimensional visualizations of Java 
projects, packages, and classes. Java 5 or later and Java3D are required.
In the "Thinking Different" category, 
 Jean-Hugues de Raigniac has released
Relief 1.1, 
a tool that produces three-dimensional visualizations of Java 
projects, packages, and classes. Java 5 or later and Java3D are required.
 
 Bare Bones Software has released version 8.7 of BBEdit, my preferred text editor on the Mac, and what I'm using to type these very words.
This release adds code folding and Ruby, YAML, and SQL
 syntax coloring and function navigation.
It also addresses at least one of my major complaints about earlier versions (confusing, hard-to-navigate preferences) and may offer a workaround for
recently buggy  multifile search as well. I'll need to play with this release a little to be sure. 
 BBEdit is $199 payware.  Upgrades from 8.5 and 8.6 are free. 
Upgrades from 8.0-8.2 cost $30 and upgrades from 7.x cost $40.
Mac OS X 10.4 or later is required.
Bare Bones Software has released version 8.7 of BBEdit, my preferred text editor on the Mac, and what I'm using to type these very words.
This release adds code folding and Ruby, YAML, and SQL
 syntax coloring and function navigation.
It also addresses at least one of my major complaints about earlier versions (confusing, hard-to-navigate preferences) and may offer a workaround for
recently buggy  multifile search as well. I'll need to play with this release a little to be sure. 
 BBEdit is $199 payware.  Upgrades from 8.5 and 8.6 are free. 
Upgrades from 8.0-8.2 cost $30 and upgrades from 7.x cost $40.
Mac OS X 10.4 or later is required.
The Big Faceless Organization has released the Big Faceless Graph Library 2.3.2, an $800 payware (more if you want support or to distribute your applications that use the library) Java class library for plotting 2D or shaded 3D pie charts, line graphs, area graphs, bar graphs and exporting them to PNG, GIF and PDF. This seems to be a bug fix release. Java 1.2 or later is required.
Apache has released version 1.2.24 of the the Apache Tomcat Connectors. "It contains connectors, which allow a web server such as Apache HTTPD, Microsoft IIS and Sun Web Server to act as a front end to the Tomcat web application server. This version contains several enhancements and fixes a number of minor bugs of the previous version 1.2.23."
Yori Mihalakopoulos has posted Preview 2 of MochaCode, a Mac-only Java IDE.
Sun has posted the public review draft of JSR-286 Java Portlet Specification 2.0 . New features in 2.0 include:
Comments are due by August 27.