Test-driven development often doesn't take advantage of strong type systems. In this post I show how Kent Beck's Money example can be improved with types.
Test-driven development started with dynamic, object-oriented languages. Does TDD work with static types? Yes, but types should replace tests when possible.
RubyFlux statically compiles Ruby into Java. It has awesome performance and runs everywhere Java does with no runtime dependencies, but it isn't done yet.
Guice's built-in support for Aspect-oriented programming can eliminate the need to repeatedly address the concerns of the database and Java Persistence API.
An inverted TDD workflow—intelligent code-editing features allow you to speculate what a test looks like and let the editor create declarations for you.