This should be an ongoing post until Christmas. These are the things I’ve been wanting to see in Java/Groovy/Scala. (Tooling wise/language/etc)

  • Better support/integration to show what lines of code haven’t been tested

  • Visualization of code execution within Threads.

  • A consistent templating solution to generate projects. (Maven needs a good cleaning on the templates)

  • Better organization of available libraries (Github repositories like awesome-java/groovy exist.. but they’re not great)

  • Better support for highlighting inefficient and duplicated bits of code.

    • I.e. For loops having a suggestion to use Lambdas

    • Searches for logic that is often repeated, and suggestions for refactoring hotspots.

  • PMD and findbugs does this sometime. But it would be nice to encourage library creators (Commons or Guava) to create Findbugs/PMD rulesets.

  • A basic starting template for standard applications, REST Apps, or Web apps

    • Should include testing, cucumber, the right plugins, etc
  • Lazy evaluation keyword in Groovy. (You can do that right now, but that relies on closures. In Scala, there is a lazy keyword.

  • Groovy: Lazy evaluation on collections (Built into the collections)

  • Groovy: Case Classes for Groovy (We’re close to it, but it’s not as concise)

  • Maven: Composable POMs

  • Scala: Better support amongst versions, and better support in Gradle to handle the Scala version to

  • Postgres/Hibernate: Support for dynamic data structure expansion.

    • This is handy when you have an extra column that is of type of JSON or HStore)]

    • Think of a weak MongoDB-like ability for dynamic documents, but the explicitly define structure of a Postgres SQL database

  • Scala: Support for Scala only libraries that don’t involve bundling the Scala runtime. (These would be compiled into your project)

  • All libraries: More distributing the API interface separately over the implementation (This is necessary for avoiding transitive dependency conflicts.)