> I'll spare everyone the "Good God man, it's Java."
I always get a kick out of this. If someone says a language's expressiveness is one of her biggest pain points, she probably is not working on anything significant. There is a reason that so much Java is used in Google, Amazon, etc. Performance, maintainability, tooling, and ecosystem are more important than whether or not you have anonymous inner classes vs. true language support for closures.
J2EE, like Applets, gave Java a bad name. And Spring has become more complex and nasty than J2EE ever was. Java sucks when you have to deal with those environments.
But if you use a modern Java stack - Jersey, Jetty, Guice, Guava, etc. - it is a pleasant experience.
>> There is a reason that so much Java is used in Google, Amazon, etc.
There is a reason why some companies are still running COBOL, C++ or even FORTRAN. Replacing them en masse is expensive, and often you can hire cheap labor and throw some bare minimum funding to keep those systems up and running, until there is no business case to keep them running any more.
When these companies started up, Java was the latest tool that gave tremendous productivity benefits over C++. Newer tools have arrived, now and Java is in the same place as C++ was.
And just like how it doesn't make business sense to re write old legacy systems in new languages. It also doesn't make business sense to write new systems in older languages.
> When these companies started up, Java was the latest tool that gave tremendous productivity benefits over C++. Newer tools have arrived, now and Java is in the same place as C++ was.
Which languages/tools give tremendous productivity benefits over a modern Java stack? Serious question. I have done a lot of work in a lot of different environments and IMO for the big and maintainable things it's hard to top the Java ecosystem.
(edit: I do agree with you - it is ridiculous to rewrite enormous legacy systems. But I don't think there's a clear-cut order-of-magnitude-better replacement for Java yet)
Is there any good material on learning the modern Java stack? I know Java SE from using it quite a bit in college, but it seems beyond that everything is geared towards JEE.
I always get a kick out of this. If someone says a language's expressiveness is one of her biggest pain points, she probably is not working on anything significant. There is a reason that so much Java is used in Google, Amazon, etc. Performance, maintainability, tooling, and ecosystem are more important than whether or not you have anonymous inner classes vs. true language support for closures.
J2EE, like Applets, gave Java a bad name. And Spring has become more complex and nasty than J2EE ever was. Java sucks when you have to deal with those environments.
But if you use a modern Java stack - Jersey, Jetty, Guice, Guava, etc. - it is a pleasant experience.