Cup of cafe au laitCafe au Lait Java News and Resources

Quote of the Day

I'm sure when Peyton Manning was growing up he always wanted to throw the TD pass that gave the Saints a Super Bowl win. Now he has.

--Jorge Arangure
Read the rest in How Sean Payton's daring playcalling won the New Orleans Saints their first Super Bowl. - By Josh Levin

Today's News

JetBrains has released IntelliJ IDEA 9.0.1, which I ereally should test drive one of these days. New features in the 9.0 line include:

  • "New background-enabled file indexing allows you to start using essential editing features almost immediately. All the advanced features become available in minutes. The responsiveness of the user interface has been improved, with many time-consuming operations now performed in the background. We have also introduced on-the-fly module reloading, which means that changes in .iml files (in particular, after updating from version control) no longer require reopening the entire project."
  • Global unused symbols highlighting
  • Easy class exclusion from completion & auto-import
  • Built-in spell checker (They didn't have this already?!)
  • Auto-folding (ditto?!)
  • Subversion 1.6
  • JEE 6
  • JSR 308 type annotations such as @Nonnull
  • OSGI (Bleah.)
  • Google App Engine
  • GWT 1.7 and 2.0
  • Android (Yay!)
  • Flex (Interesting choice)
  • PHP (About time!)
  • UML (Boo!)

9.0.1 is a bug fix release.


Permalink to Today's News | Recent News | Older News | E-mail Elliotte Rusty Harold


Further Reading

On The Cafes:

On Mokka mit Schlag:



Random Sites Around the Web

You can also see previous recommended reading or subscribe to the recommended reading RSS feed if you like.

To recommend something for inclusion in this section, please e-mail the URL and title of the article.


Currently on Cafe con Leche:

Recent News

Saturday, January 23, 2010 (Permalink)

The Gnu Project has released version 4.4.3 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.5 level with some omissions. "4.4.3 is a bug-fix release containing fixes for regressions and serious bugs in GCC 4.4.2." GCC is released under the Gnu General Public License.

Thursday, January 21, 2010 (Permalink)

The Eclipse Project has posted the fourth "milestone" of Eclipse 3.6 Helios. This release adds PowerPC 64-bit support, virtual folders, Wrap indent in StyledText, expanded JUnit 4 support, and warnings for missing @Override on methods that implementa na interface.

Tuesday, January 19, 2010 (Permalink)

The Apache Project has posted the first release candidate of Ant 1.8, the popular XML based, open source build tool for Java. New features in 1.8 include

  • A top level element extension-point allows build files to be extended with custom targets more easily
  • if and unless attributes will be evaluated according to the values of the properties entered if these properties evaluate to true, false, on, off
  • An include provides an alternative to <import> that should be preferred when you don't want to override any targets

Java 1.4 or later is required.

Friday, January 15, 2010 (Permalink)

The Legion of the Bouncy Castle has released version 1.45 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. Version 1.45 adds support for "EC MQV to the light weight and CMS/SMIME libraries. In addition to that OpenPGP now supports UTF-8 in file names for literal data, EC keys are now serialisable, and the provider now makes use of a privileged block for constructing the provider table. In addition, to additionally improve the security and reliability of the libraries, ASN.1 processing has been reviewed to further reduce the likelihood of OutOfMemory errors for badly corrupted streams, and use of constant time comparisons have been introduced to remove the possibility of timing attacks in several areas such as with cipher modes like GCM and CCM."

Wednesday, January 13, 2010 (Permalink)

IBM's developerWorks has published my latest article, Speaking Java without an accent. C++ programmers often put certain inflections on Java code that unmistakably mark them as converts rather than native speakers. In this article, I explore a number of Java programming idioms that often get overlooked precisely because semantically they don't matter all that much, if at all. They are purely issues of style and convention. A few of them have plausible justifications. Some of them lack even that. But all of them help distinguish Java code that sounds right from Java code that sounds wrong.

Wednesday, January 6, 2010 (Permalink)

Julien Ponge has released IzPack 4.3.23, an open source tool for building cross-platform installers in Java. "This ia a stable, maintenance release that fixes some issues found in IzPack 4.3.1 and IzPack 4.3.2." IzPack is published under the Apache License 2.0.

Tuesday, January 5, 2010 (Permalink)

Bob Martin has released FitNesse 20100103. FitNesse is an open-source Wiki with built-in web server for defining acceptance tests as web pages containing simple tables of inputs and expected outputs. New features in this release include:

  • Parameterized Scenario Tables
  • Can run nested Suites using !see.
  • Plain Text Tables. e.g. tables without using vertical strokes.
  • Sequential Arguments in Script Tables.
  • Pages can now be saved in HTML format. FitNesse will still render and test them.
Thursday, December 31, 2009 (Permalink)

Google has released version the Google Collections Library 1.0, which extends the standard JDK collections classes with:

  • New Collection types: Multimap, Multiset, BiMap and others
  • High-performance immutable implementations of the standard collection types, for example ImmutableSet
  • MapMaker, a builder for concurrent hash maps with many advanced features
  • Ordering, which can only be described as a "Comparator on steroids"
  • Iterators and Iterables utility classes: element-based equality, cycle, concat, partition, filter with predicate, transform with function, and much more
  • Lists, Sets and Maps utility classes: a plethora of convenient factory methods and much more
  • Forwarding collections, such as ForwardingSet, allowing you to customize collection behavior without subclassing
  • Implementation helpers like AbstractIterator

I've been using this library for a couple of years now. There's some good stuff in here, but it's mostly relatively minor. For example instead of writing

List<String> list = new ArrayList<String>();

you can instead write

List<String> list = Lists.newArrayList();

Yes, it saves a few characters and avoids an annoying redundant generic type declaration; but is it worth the extra dependency? The downside of this sort of library is that most projects don't need but a small subset of this functionality, and end up pulling in a lot of extra stuff they don't need to get the one or two pieces they do need. Of course it's open source (Apache License 2.0) so you can just fork out the one or two pieces you need for your own program and repackage them; but I do wish Java had a better way to use just a Multimap, for example, without pulling in Multiset, Bimap, forwarding collections, and everything else. Java 5 or later is required.

Wednesday, December 30, 2009 (Permalink)

Alan Ezust, Slava Pestov, Björn "Vampire" Kautler, Marcelo Vanzin, Matthieu Casanova, Eric Berry, and Eric Le Lay have released jEdit 4.3, a free-as-in-speech (GPL 2.0) programmer's editor written in Java with extensive plug-in support and my preferred text editor on Windows and Unix (though still far behind TextMate and BBEdit on the Mac.) Java 5 or later is now required.

Wednesday, December 23, 2009 (Permalink)

Bare Bones Software has released version 9.3.1 of BBEdit, my preferred text editor on the Mac, my favorite XML editor on any platforms, what I'm using to type these very words. This release fixes bugs including some issues in handling UTF-8 with byte-order marks.

Tuesday, December 22, 2009 (Permalink)

Version 1.7 of Groovy has been released. Groovy is a JVM hosted scripting language that "builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk." New features in 1.7 include:

  • Anonymous Inner Classes and nested classes. (I could have sworn Groovy had closures so it didn't need these half-measures?)
  • Can now annotate imports, packages and variable declarations
  • Power Asserts, whatever those are
  • AST Viewer and AST Builder, for easing the creation of AST transformations
  • Several GroovyConsole enhancements, like line numbers, a new output view, and more
  • SQL batch updates and transaction support
  • The kitchen sink
Monday, December 21, 2009 (Permalink)

JetBrains has released TeamCity 5.0, a $1999 payware continuous integration server. TeamCity manages builds and can be configured not to check in code unless tests pass. "This release brings a huge potential improvement in scalability by reinforcing its distributed build grid with Amazon EC2 cloud integration. Features such as build configuration templates, project archiving, and backup&restore eliminate unnecessary redundancy and hassle in configuring large build infrastructures. To make TeamCity feel at home everywhere and benefit developer productivity, we've added issue tracker integration, better support for Maven, Command line tool for personal builds, and many other features."

Thursday, December 17, 2009 (Permalink)

Google has released the Android Development Kit 2.0.1. According to Xavier Ducrohet:

Android 2.0.1 is a minor update to Android 2.0. This update includes several bug fixes and behavior changes, such as application resource selection based on API level and changes to the value of some Bluetooth-related constants. For more detailed information, please see the Android 2.0.1 release notes.

To differentiate its behavior from Android 2.0, the API level of Android 2.0.1 is 6. All Android 2.0 devices will be updated to 2.0.1 before the end of the year, so developers will no longer need to support Android 2.0 at that time. Of course, developers of applications affected by the behavior changes should start compiling and testing their apps immediately.

We are also providing an update to the Android 1.6 SDK component. Revision 2 includes fixes to the compatibility mode for applications that don't support multiple screen sizes, as well as SDK fixes. Please see the Android 1.6, revision 2 release notes for the full list of changes.

Finally, we are also releasing an update to the SDK Tools, now in revision 4. This is a minor update with mostly bug fixes in the SDK Manager. A new version of the Eclipse plug-in that embeds those fixes is also available.

Wednesday, December 16, 2009 (Permalink)

The Apache Jakarta Project has released POI 3.6, an open source Java library "for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Visio and Word." Version 3.6 focuses on improving performance and reucing memory usage.

Tuesday, December 15, 2009 (Permalink)

Sun has released NetBeans 6.8, its open source IDE for Java. C++. PHP, and Ruby. New features in this version include:

  • EJB 3.1 support
  • RESTful web services (JAX-RS 1.1), GlassFish Metro 2.0 web services (JAX-WS 2.2), JAXB 2.2
  • Java Persistence JPA 2.0, deployment, debugging and profiling with GlassFish v3 application server
  • Code completion, error hints, namespace completion, documentation popups, and tag auto-import for Facelets
  • Editor support for Facelets libraries, composite components, expression language, including generators for JSF and HTML forms
  • Customizable JSF components palette generates JSF forms and JSF data tables from entities
  • JavaFX SDK 1.2.1
  • Editor Hints: Fix Imports, Surround With, Implements Abstract Methods, and more
  • Improved navigation: Hyperlinks, Go to Type, Find Usages
  • Full JIRA support
  • Project dashboard with more member and project details, improved search and navigation, easier project sharing
  • Improved instant messenger integration
  • Improved issue tracker integration
  • PHP 5.3
  • Symfony Framework support
  • PHPUnit, Code Coverage, FTP/SFTP integration improvements, exclude PHP project folders from scanning/indexing
  • New Project from Maven archetype catalog and improved support for Java EE 6, Groovy, Scala projects
  • Support for Rails 2.3.2 apps with dispatchers, JRuby 1.3.1, Ruby 1.9 debugging, and RSpec 1.2.7
  • C++ Profiling: New Microstate Accounting indicator, Thread Map view, Thread Analyzer, Hot Spots view, Memory Leaks view, Sync Problems view
  • C++ Parallelization Adviser
  • Support for gdbserver attach and easier attaching to already running processes
Monday, December 14, 2009 (Permalink)

I've released XOM 1.2.4, my free-as-in-speech (LGPL) Java library for processing XML. The major change in this release is a hopefully user-transparent one-button release process. This still needs some work though. The Ant target to tag the release in CVS is broken (I'd appreciate it if anybody coudl figure that out). Furthermore, it's still hooked up backwards. The release is bundled and deployed from my local hard drive, and then tagged in CVS. What should happen is that first I tag the release as an independent target. Then the deploy target checks out a tagged version from CVS and uploads that. This would make sure that what's deployed macthes what's in the repository. It would also make it a little easier to build older versions when someone needs one. As is, CVS is just sort of off to the side of the deployment chain rather than being a crucial link in the process.

There's also one small optimization in XPath evaluation, and the maven POM that was broken in 1.2.3 should now be fixed.

Friday, December 11, 2009 (Permalink)

JetBrains has released IntelliJ IDEA 9.0. I'm still using 7.0 (and Eclipse) myself, but reports from colleagues using the 9.0 beta have been uniformly positive. New features in 9.0 include:

  • "New background-enabled file indexing allows you to start using essential editing features almost immediately. All the advanced features become available in minutes. The responsiveness of the user interface has been improved, with many time-consuming operations now performed in the background. We have also introduced on-the-fly module reloading, which means that changes in .iml files (in particular, after updating from version control) no longer require reopening the entire project."
  • Global unused symbols highlighting
  • Easy class exclusion from completion & auto-import
  • Built-in spell checker (They didn't have this already?!)
  • Auto-folding (ditto?!)
  • Subversion 1.6
  • JEE 6
  • JSR 308 type annotations such as @Nonnull
  • OSGI (Bleah.)
  • Google App Engine
  • GWT 1.7 and 2.0
  • Android (Yay!)
  • Flex (Interesting choice)
  • PHP (About time!)
  • UML (Boo!)
Thursday, December 10, 2009 (Permalink)

Google has released GWT 2.0, an open source Java-to-JavaScript compiler and library for building AJAX applications in Java. In version 2.0

  • Development Mode in a regular browser replaces hosted mode.
  • Speed Tracer Performance Analysis
  • Developer Guided Code Splitting
  • Compiler Optimizations
  • Draft Compile
  • UiBinder enables you to create user interfaces declaratively in XML instead of having to assemble them programmatically.
  • Layout Panels
  • Bundled Resources via ClientBundle
  • HtmlUnit for Testing
Wednesday, December 9, 2009 (Permalink)

Kent Beck and David Saff have released JUnit 4.8.1. "This was a quick bugfix release for an important bug...Category annotations on classes were not honored."

Tuesday, December 8, 2009 (Permalink)

Oliver Burn has released Checkstyle 5.0, a lint-like tool that checks Java code for adherence to various coding standards:

elease 5.0 is not 100% backwardly compatible with release 4.4. Most likely you will need to update your configuration file.

The following checks were added since release 4.4:

Monday, December 7, 2009 (Permalink)

Apple has released Java Update 1 for Mac OS X 10.6 and Java for Mac OS X 10.5 Update 6 to plug a few security holes that could enable an untrusted applet to obtain elevated privileges. Essentially this upgrades Java 1.6.0_17 to 1.6.0_17 and Java 1.5.0_20 to 1.5.0_22. Check Software Update to download.

Software Update Java for Mac OS X 10.6 Update 1

Thursday, December 3, 2009 (Permalink)

Version 1.6.7 of Groovy has been released. Groovy is a JVM hosted scripting language that "builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk." According to Guillaume Laforge, "Groovy 1.6.7 is a drop-in replacement for 1.6.6, so you can just upgrade to 1.6.7 directly, or replace 1.6.6 with 1.6.7 in your projects."

Wednesday, December 2, 2009 (Permalink)

Kent Beck and David Saff have released JUnit 4.8. This release adds categories:

From a given set of test classes, the Categories runner runs only the classes and methods that are annotated with either the category given with the @IncludeCategory annotation, or a subtype of that category. Either classes or interfaces can be used as categories. Subtyping works, so if you say @IncludeCategory(SuperClass.class), a test marked @Category({SubClass.class}) will be run.

You can also exclude categories by using the @ExcludeCategory annotation

Example:

public interface FastTests { /* category marker */ }
public interface SlowTests { /* category marker */ }

public static class A {
    @Test
    public void a() {
        fail();
    }

    @Category(SlowTests.class)
    @Test
    public void b() {
    }
}

@Category({SlowTests.class, FastTests.class})
public static class B {
    @Test
    public void c() {

    }
}

@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite
public static class SlowTestSuite {
  // Will run A.b and B.c, but not A.a
}

@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@ExcludeCategory(FastTests.class)
@SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite
public static class SlowTestSuite {
  // Will run A.b, but not A.a or B.c
}

Older News | Today's XML News on Cafe con Leche | Mokka mit Schlag | The Cafes