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.)