If there is something I can't do well with Java, then I have Groovy. I will most likely waste time trying to implement the same thing with C#. In fact I would probably just use Python or C instead.
If there is something I can't do well with Java, then I have Groovy. I will most likely waste time trying to implement the same thing with C#. In fact I would probably just use Python or C instead.
I've used build/release management/dep management tools from/like go, python, ruby, node, erlang, make, autotools and cmake and I've never before had to read a manual to tweak an existing setup.
Go is probably my favourite ecosystem because everything is very simple. I suspect Rust will be good as well.
Fortunately not everyone in the Java community is happy with the way things are. Indeed, Java 8 fixes some of the issues mentioned here, like repeating an annotation. Obviously this wasn't some brilliant insight developed in a vacuum, people looked at C# and thought "Neat, I want that!", and now Java is a better language because of it.
As engineers we should not settle for the way things are. One day we'll hopefully have Reified Generics, maybe properties and other obviously good ideas, and no thanks to the people who are happy with Java as it is now. "People who say it cannot be done should not interrupt those who are doing it" comes to mind.