Opinion of a Java developer
A good stab at trying to kill it, in my opinion, comes from the big companies where it is used.
It seems hard to see jobs listed which don't, or will, require Spring and Hibernate.
Luckily I only had to try to work with them for a year or so, but I never managed to figure out what can't be done without them. Apart from badly performing code without unexpected behaviour.
The last project in which they were used wasn't doing anything spectacular, just some clever business logic behind it, but nothing uncodable.
The project kept on missing every possible deadline mainly because of the two.
For example, a select statement using Hibernate which performs an update to return a resultset - http://ladobbins.wordpress.com/2011/11/02/i-hate-hibernate/
Or, again, one of the joys of using Hibernate: unpredictable number of queries for a select statement:
http://itroman.wordpress.com/2010/12/05/why-i-do-hate-hibernate/ ( Hibernate is not predictable )
Mapping tables for many to many relationships become a pain if an extra column must be added, or there's more than two tables involved.
Letting Hibernate take care of caching data makes it even worse. Is it just the table I am caching, or the entire objects whose IDs are in the mapping table?
There's versions of Spring which clash with Hibernate ( happened to me ) which created problems with transactions ( if I remember well ). 3 people searching forums for 3 days before realising it wasn't something wrong in the sea of XML needed to keep the stuff together.
All this for not using plain JDBC. Why is beyond me.
Also, in over a year, I haven't managed to understand what Spring does so specially that you can't just stick to sane Java.
Why do people use a tool which uses XML for coding ( not just passing values ), doesn't check for code consistency so all the compilation errors only appear at run time ( a bit like when I was learning Java and used to code on Notepad ), and leaves a cryptic 200 line stacktrace to let you there could be a typo in a variable name instead of a squiggly line which appears as you are typing it?
The same opinion was shared between pretty much everybody in the company, apart from a couple of people who first introduced it.
I am sure one day, when they are not fashionable anymore, a lot of people will wonder why they were even introduced. If that day doesn't come, I guess Java is pretty much fucked. My opinion.
And yes, I am still bitter, absolutely, when I think about those two pieces of shit brought to the project ( and my life as a consequence ). I am sure many people could say the same... At least judging from the people I used to work with then. Rant over