May, 2009 Java News

Thursday, May 21, 2009 (Permalink)

Google has released Guice 2.0, an open source annotation-based framework for obfuscating codedependency injection. New features in this release include:

  • Provider methods eliminate the boilerplate of manually-constructed dependencies.
  • Module overrides allow you to tweak a production module for a unit test or QA deployment.
  • Private modules enable compartmentalized configuration, simplifying module reuse.

I've been using Guice at my day job for the last year, and not by choice. I find it makes our code base far harder to comprehend and work with. The new provider methods In Guice 2.0 do help, and I can see where the module overrides could be useful. However, I still feel that our project would be better off if we ditched Guice and dependency injection completely. As far as I've been able to see, all dependency injection does for us is make unit testing edge cases a little easier (Not make them possible, mind you. The tests are already possible without dependency injection. Just easier.); and that's just not worth the price of admission.

One should not complexify a class's API purely to make testing easier. Testing exists to serve the model code, not the other way around. To cite the classic dependency injection example, if the only reason you pass a Clock object to a constructor instead of creating one privately inside the class is to support unit testing, then don't do it. Unit testing is no excuse for heavily coupled classes exposing their private parts and violating encapsulation. When forced to choose between good object oriented design and testability, choose good object oriented design.

Tuesday, May 19, 2009 (Permalink)

The Eclipse Project has posted the first release candidate of Eclipse 3.5 Galileo, their open integrated development environment for Java. New features include Solaris support, toString() generation, and more.

Monday, May 18, 2009 (Permalink)

Oracle has released Berkeley DB Java Edition 3.3.82. This is a 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. This is "critical" bug fix release.

Thursday, May 14, 2009 (Permalink)

Version 1.6.3 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." Think of it as the Edsel of computer programming languages: half-station wagon, half sports car. I tend to prefer languages like Clojure, Scala, and Jython that have a clearer guiding vision of what a programming language should look like, rather than just trying to shoehorn every cool feature they've ever seen into one language. 1.6.3 is a bug fix release.

Wednesday, May 13, 2009 (Permalink)

Atlassian has released Clover 2.5, 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.5 adds distributed per-test coverage "showing you exactly which tests hit each line of your. This is key to helping you continually improve your testing and is essential for Clover to provide Test Optimization. You can quickly gain insight into how much each of your tests contributes to the project's coverage. This allows you to spot any testing weaknesses or redundancies, and verify that each test is actually testing the code it was intended to exercise."

Tuesday, May 12, 2009 (Permalink)

Embarcadero has released J Optimizer, an apparent successor to Borland® Optimizeit. I haven't tried it myself, but it appears to be basically a profiler. J Optimizer is $1475 payware.

Saturday, May 9, 2009 (Permalink)

FirstSQL, Inc. has released version 3.2 of their namesake FirstSQL/J object-relational database. Improvements in version 3.2 include full JME (CDC) compatibility for embedded and mobile devices and improved SQL92 compliance. FirstSQL/J costs $378,842.17 per CPU. (Well, not really, but since they don't put any pricing on their web site I had to make something up.)

Friday, May 8, 2009 (Permalink)

Bare Bones Software has released version 9.2 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. New features include a BBEdit Sleep command. "When BBEdit gets quit because of a system shutdown, restart, or user logout, it now does a 'Sleep BBEdit' in order to restore as much of the application state as possible when starting back up. (This means that you may not be prompted to save new or unsaved documents, since they will be autosaved when the application sleeps.)" New copies cost $125. Upgrades from 9.x are free. Mac OS X 10.4 or later is required.

Thursday, May 7, 2009 (Permalink)

Kent Beck and David Saff have released JUnit 4.6. Besides bug fixes, there are "improvements to the core architecture that allow test reordering and parallelization for basic JUnit 3 and basic JUnit 4 tests and suites."

Wednesday, May 6, 2009 (Permalink)

Sun has posted the first beta of NetBeans 6.7, its open source IDE for Java. New features in this version include:

  • Integration with Project Kenai, "a collaborative environment where developers can host their open-source projects. With NetBeans and Kenai, a team of developers can create projects, edit, debug, build, and commit code, and have discussions all through one easy-to-use interface."
  • Maven support
  • GlassFish and Hudson integrations
  • Improved support for Java, PHP, Ruby, JavaScript, Groovy and C/C++
Monday, May 4, 2009 (Permalink)

Rich Hickey has released Clojure 1.0, a Lisp dialect that runs on top of the Java virtual machine:

Clojure is a compiled language - it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.

Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.

Clojure is published under the Eclipse Public License 1.0.

Saturday, May 2, 2009 (Permalink)

BlueJ 2.5.1, a free integrated development environment (IDE) for Java aimed at education, has been released. "This is primarily a bug-fix release. Issues with subversion support and opening jar files have been resolved; minor improvements have been made to the submitter extension." Java 5 or later is required.

Friday, May 1, 2009 (Permalink)

Novell has released Mono 2.4, an open source implementation of Microsoft's .NET framework that runs on Linux, Unix, Mac OS X, and Windows. This release mostly seems to improve the implementation without changing much at the API level. "This is a release focused on stability and performance and it is also the foundation for Novell's own long-term support Mono-based product." Mono supports roughly Visual Basic.NET and C# 2.0 with some 3.0 support.


2009200820072006200520042003
January, 2009 January, 2008 January, 2007 January, 2006 January, 2005 January, 2004 January, 2003
February, 2009 February, 2008 February, 2007 February, 2006 February, 2005 February, 2004 February, 2003
March, 2009 March, 2008 March, 2007 March, 2006 March, 2005 March, 2004 March, 2003
April, 2009 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, 2008 July, 2007 July, 2006 July, 2005 July, 2004 July, 2003
August, 2008 August, 2007 August, 2006 August, 2005 August, 2004 August, 2003
September, 2008 September, 2007 September, 2006 September, 2005 September, 2004 September, 2003
October, 2008 October, 2007 October, 2006 October, 2005 October, 2004 October, 2003
November, 2008 November, 2007 November, 2006 November, 2005 November, 2004 November, 2003
December, 2008 December, 2007 December, 2006 December, 2005 December, 2004 December, 2003

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

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