Google has released Guice 2.0, an open source annotation-based framework for obfuscating codedependency injection. New features in this release include:
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.
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.
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.
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.
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."
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.
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.)
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.
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."
Sun has posted the first beta of NetBeans 6.7, its open source IDE for Java. New features in this version include:
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.
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.
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.