July, 2008 Java News

Thursday, July 31, 2008 (Permalink)

JetBrains has released IntelliJ IDEA 7.0.3. This is mostly a bug fix release, though they're also a few small new features. IDEA is $499 payware. Upgrades from pre-7.0 versions are $299.

Wednesday, July 30, 2008 (Permalink)

IBM has submitted JSR-326: Post mortem JVM Diagnostics API to the Java Community Process (JCP). According to the JSR,

Existing Java diagnostic tools are focused primarily on what can be termed "live monitoring" - this means source level debuggers, trace tools, performance analysers etc. These tools are very useful when the problem is readily reproducible and the customer is willing to accept the costs of such reproduction. However, in many cases problems do not fall into either of these categories as the problem is either intermittent or the impact of reproduction with live monitoring tools is too expensive. In these cases the pressure is then on those supporting the customer to solve the issue in other ways. Here we enter the realm of post mortem analysis as the primary means for uncovering the cause of the issue. Unfortunately this space is fragmented and incomplete.

The lack of pervasive and credible post mortem and snapshot diagnostic tools has steadily driven the problem solving act down the software stack. The result is that JVM and middleware providers have become increasingly involved in helping customers determine root cause for a wide variety of unexpected application behaviour. This trend is increasing in line with the exploitation of capabilities introduced in Java SE. For instance, Java 5.0 NIO brought managing native memory back to the table. Something most Java programmers had not had to learn before. Helping customers diagnose native out of memory situations is a common occupation for JVM and middleware providers.

In the short term, we need to see the development of a tools ecosystem that will result in a substantial increase in tools that can provide diagnostic information suitable to allow vendors and customers alike to solve problems in an isolated manner. Since third-party vendors are generally unwilling to invest in developing these tools due to the lack of standard APIs for interrogating diagnostic artefacts, the actual short term goal is to create the relevant APIs and develop cross platform implementations targeted at the JVMs and operating systems in use today. Note the point implied -- all versions of JVM's need to be considered -- this is not just a Hotspot JVM or a JAVA SE 6.0 problem. It is not sufficient to develop a solution that can only be useful if customers have to migrate to the latest level of JVM. It is highly important that as far as possible the solutions developed are inclusive of existing, "in field", JVMs and operating systems and do not mandate changes to those technologies. Therefore the Expert Group will have to consider the needs of all JVM vendors and versions of Java SE.

In the longer term we also need to be able to address the scale and complexity issues raised in diagnosing problems in the world of 64bit, multiple VM, multiple vendor, multiple language environments. It will take time to identify and agree the approaches needed in tackling these problems. A common API is a necessary precondition if we wish to maintain the value and credibility of this arena.

Comments are due by August 8.

Tuesday, July 29, 2008 (Permalink)

I note with sadness the passing of Ed Foster, who died Saturday night at age 59 of an apparent heart attack. Ed was a rare journalist in the tech world who could really look beyond the press releases and the blinking lights to see what was really happening (and who it was happening to). He was a voice for sanity and fairness in an industry usually too naive and blinded by greed to consider such matters.

It's nice to note that he goes out with one last victory, as Yahoo has now caved in after his last column, and agreed to issue full refunds to purchasers of their DRM locked music. He will be missed. Fittingly, in lieu of flowers, Ed's family has asked that donations be made to the Electronic Frontier Foundation in his name. he would have liked that, I'm sure.

I was a little surprised to notice that Ed did not yet have a Wikipedia page, so I started one. Please edit and fill it in as quickly as possible. He is a notable figure who deserves to be remembered.

Monday, July 28, 2008 (Permalink)

Subversion 1.5.1, an open source version control system designed to replace CVS, has been released. According to Hyrum K. Wright, "As a patch release in the 1.5.x line, Subversion 1.5.1 contains a number of performance enhancements and fixes to bugs discovered since the release of Subversion 1.5.0."

Friday, July 25, 2008 (Permalink)

Tammo Freese has released EasyMock 2.4, an open source mock object framework that "provides Mock Objects for interfaces in JUnit tests by generating them on the fly using Java's proxy mechanism. Due to EasyMock's unique style of recording expectations, most refactorings will not affect the Mock Objects." Personally I think MockObjects are vastly overused If you're making a type an interface just so you can mock it, the testing cart has started to drive the design horse. However they can sometimes be useful in cases where the natural design lends itself to being mocked. As long as you can resist the temptation to contort and complexify an API to support testing, mock objects can be useful. EasyMock is published under an MIT license.

Tuesday, July 22, 2008 (Permalink)

The Apache Project has released Ant 1.7.1, a new version of the popular XML based, open source build tool for Java. This is mostly a bug fix release but does improve support for Java 6 and JavaFX.

Sunday, July 20, 2008 (Permalink)

I'm trying to come up with a topic for the next article in my ongoing series on Java 7 over at java.net. So far I've done Building the JDK, superpackages, and java.nio.file. For the next piece I thought about doing JavaDoc enhancements or new features in java.util, but neither of those seems likely to make it in time for Java 7. Ditto closures (not that I really want to take another swing at that particular tar baby) Any suggestions? Anything people particularly want to hear about? If there's something you think might be fun or informative, let me know.

Thursday, July 17, 2008 (Permalink)

Apple has released version 3.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." New features in this release include:

  • SDK support for targeting non-Mac OS X platforms, including iPhone OS SDK.
  • GCC 4.2 & LLVM GCC 4.2 optional compilers for use with Mac OS X 10.5 SDK
  • Updated assistants to create new projects, targets, and source files

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.

Wednesday, July 16, 2008 (Permalink)

Trustin Lee has released APIviz 1.1.2, a JavaDoc doclet that "generates comprehensive UML-like class and package diagrams for quick understanding of the overall API structure." APIviz is published under the LGPL.

Tuesday, July 15, 2008 (Permalink)

The Legion of the Bouncy Castle has released version 1.40 of the Bouncy Castle Java Cryptography API, an open source, clean-room implementation of the Java Cryptography Extension (JCE). It supports X.509 certificates, PKCS12, S/MIME, CMS, PKCS7, TEA, XTEA, SHA224, and lots of other juicy acronyms. It also includes its own light-weight crypto API that works in Java 1.0 and later, and does not depend on the JCE. According to the announcement:

This release adds GCM mode to the provider and lightweight API. In addition a new PKCS12 type "PKCS12-3DES-3DES" has been added o allow for the creation of PKCS12 files that use purely DES-EDE and the TSP package now supports validation of responses with 2 signingCertificate entries. Bug fixes include proper resetting of EAX mode ciphers on doFinal, the SMIME API can now verify signatures for doubly nested multipart objects, the X509Name class can now handle zero length RDNs and escaped '+' characters, the default partial packet generator in BCPG no longer generates garbage files if file length is over 32 bits, the getCreationTime method now returns the proper value for just created PGP signatures, and a regression from 1.38 affecting getPublicKey on PKIXCertPathValidatorResult has been fixed.

Download it while it's still legal.

Friday, July 11, 2008 (Permalink)

Amin Ahmad has released Ropes for Java 1.2.0, an open source (GPL) implementation of the rope data structure in Java. "A rope is a high performance replacement for Strings. The datastructure, described in detail in "Ropes: an Alternative to Strings", provides asymptotically better performance than both String and StringBuffer for common string modifications like prepend, append, delete, and insert. Like Strings, ropes are immutable and therefore well-suited for use in multi-threaded programming."

Thursday, July 10, 2008 (Permalink)

Sun has posted the first milestone of NetBeans 6.5, its open source IDE for Java, Ruby, JavaScript, C++, and now PHP and Groovy. New features in 6.5 (though not all are present in this milestone) include

Wednesday, July 9, 2008 (Permalink)

Sun has released VisualVM 1.0, "a free opensource visual tool integrating several commandline JDK tools and lightweight performance and memory profiling capabilities. The tool is available under the GNU General Public License v2 with Classpath Exception license".

Tuesday, July 8, 2008 (Permalink)

Version 1.1.2 of Mantis, a free-as-in-speech (GPL) bug tracking system based on PHP and MySQL, has been posted. This is a security fix release. All users should upgrade.

Monday, July 7, 2008 (Permalink)

The Gnu Project has released version 4.2.4 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. 4.2.4 is a bug fix release.

Friday, July 4, 2008 (Permalink)

Sun has posted the first public review draft specification of JSR-297 Mobile 3D Graphics API 2.0 for Java ME. This is divided into two parts, a required core and an optional advanced block. According to the draft, new features include

CORE BLOCK:
  • Collision detection
  • Bounding volumes
  • Automatic level-of-detail (LOD)
  • Multichannel keyframe sequences
  • Direct sampling of keyframe sequences
  • Animation events
  • Combined morphing & skinning
  • Depth sorting of blended objects
  • Subset morphing
  • Point sprites
  • Triangle lists
  • Lines
  • Texture combiners
  • Dynamic (video) textures
  • Ericsson Texture Compression
  • 16-bpp texture formats (RGB565, RGBA5551, RGBA4444)
  • All depth buffer comparison modes
  • All alpha test comparison modes
  • Perspective correction
  • Multitexturing (at least 2 units)
  • Bilinear filtering
  • Mipmapping
  • Textures up to 1024x1024 pixels
ADVANCED BLOCK:
  • Programmable shading
  • Stencil buffering
  • Cube mapping
  • Advanced blending
  • Antialiasing

Deprecated and superceded features

  • Flat shading. The implementation cost of flat shading on OpenGL ES 2.0 is very high, for very little benefit to the user. Applications can still enable flat shading, but the implementation may silently revert to smooth shading.
  • Two-sided lighting. The implementation cost of two-sided lighting on OpenGL ES 2.0, as well as on some implementations of OpenGL ES 1.1, is very high, for very little benefit to the user. Applications can still enable two-sided lighting, but the implementation may silently revert to one-sided lighting.
  • Local camera lighting. Local camera lighting is a quality hint that was never supported by more than a handful of devices, mostly because the corresponding OpenGL feature was dropped from OpenGL ES. Applications can still enable local camera lighting, but the implementation may silently ignore the request.
  • Sprite3D. The implementation cost of Sprite3D is fairly high, especially if it were to be made any faster than a pair of textured triangles. As a result, most implementations are using ordinary textured triangles, yielding no speed benefit. This is especially true of hardware implementations. The use cases for Sprite3D are also limited. Sprite3D can still be used, but point sprites or textured quads are likely to yield better performance. Also, the maximum size of a sprite image is now the same as that of a texture; images of unlimited size are no longer allowed.
  • Background image. As with Sprite3D, background images are typically implemented with textured triangles, and do not serve a great number of useful purposes. Background images are still available for use, but sky cubes and other techniques are likely to yield better image quality and performance. Also, the maximum size of a background image is now the same as that of a texture; images of unlimited size are no longer allowed.
  • TriangleStripArray. Arrays of triangle strips, as well as arrays of triangles, point sprites, lines, and line strips, are now available in the IndexBuffer base class. The derived class is still available, but using the base class directly is recommended.
  • MorphingMesh. Vertex morphing functionality has been promoted to the Mesh base class, so that both morphing and skinning can be applied to the same mesh. This was not possible previously. Morphing has been improved in other ways, as well: it is now possible to morph only a subset of all vertices -- for example only the facial area of an animated character -- saving potentially large amounts of memory. MorphingMesh can still be used, but the equivalent methods in Mesh are recommended instead.
  • Picking of deformed meshes. Skinning and/or morphing meshes are now treated as regular rigid-body meshes when computing intersections with a pick ray. This facilitates moving all mesh deformation code from the CPU to the GPU. It can also speed up picking significantly, at the cost of only slightly less accurate results in most use cases.
  • Picking of sprites with alpha. Sprites are no longer tested for transparency at the intersection point of the pick ray. A Sprite3D is always picked if the pick ray intersects the sprite rectangle. This allows implementations to offload the sprite image into an OpenGL ES texture object, rather than keeping a second copy available in main memory just in case the sprite happens to be picked.

Comments are due by September 8.

Thursday, July 3, 2008 (Permalink)

java.net has published my latest article in the The Open Road series, java.nio.file. This article talks about a really mundane and prosaic but critical topic, copying and moving files. Shockingly over 12 years after Java was first released we still don't have a good way to copy and move files in pure Java. However, maybe Java 7 is finally going to fill this gap. Read on to find out more.

Wednesday, July 2, 2008 (Permalink)

Syncro Soft has released Syncro SVN Client 3.2, a $59 GUI Subversion client written in Java. Version 3.2 "adds a set of improvements to the previous version: filtering the content of the History view based on revision number and commit date, computation of the SVN annotations on a limited range of revisions, modification of the attributes of a revision in history, configurable shortcut keys for actions, editing a conflict with an external diff application, editing of global SVN configuration files and some new comparison actions."

Tuesday, July 1, 2008 (Permalink)

The Apache Jakarta Project has released POI 3.1, an open source Java library for "manipulating various file formats based upon Microsoft's OLE 2 Compound Document format. OLE 2 Compound Document Format based files include most Microsoft Office files such as XLS and DOC." Version 3.1 adds support for various Word, excel, and PowerPoint features.


Older news:

200820072006200520042003
January, 2008 January, 2007 January, 2006 January, 2005 January, 2004 January, 2003
February, 2008 February, 2007 February, 2006 February, 2005 February, 2004 February, 2003
March, 2008 March, 2007 March, 2006 March, 2005 March, 2004 March, 2003
April, 2008 April, 2007 April, 2006 April, 2005 April, 2004 April, 2003
May, 2008 May, 2007 May, 2006 May, 2005 May, 2004 May, 2003
June 2008 June 2007 June 2006 June, 2005 June, 2004 June, 2003
July, 2007 July, 2006 July, 2005 July, 2004 July, 2003
August, 2007 August, 2006 August, 2005 August, 2004 August, 2003
September, 2007 September, 2006 September, 2005 September, 2004 September, 2003
October, 2007 October, 2006 October, 2005 October, 2004 October, 2003
November, 2007 November, 2006 November, 2005 November, 2004 November, 2003
December, 2007 December, 2006 December, 2005 December, 2004 December, 2003

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

Copyright 2008 Elliotte Rusty Harold
elharo@metalab.unc.edu