What’s a piece of advice said differently?
If someone asks you how to boil potatoes, there’s a simple answer: put them in a pan, immerse them in water, and put the pan on the heat. But if you were asked how to cook spuds, what would you say? Just boil them? Or would you also mention fried potatoes, roast potatoes, jacket potatoes and maybe microwaves? Or even suggest a shepherd’s pie?
There’s a serious point here. It has several times occurred to me that JRE would probably contain better quality libraries if it was merely a collection of high-quality community contributed largely independent libraries built on a small base (much like Boost is to the STL and other core C++ libraries) than as the kitchen-sink monolith it currently is. Granted, not everything would be hunky-dory, but if enough people think one thing is broken then they just replace it. The new library might not immediately make it onto all target devices, but hey, if it’s good it could get there somewhere down the line.
But it’s not just the JRE. Java has a lot of libraries, but several big frameworks too. What’s a framework? A big mess of code doing many different things with lots of interdependencies and lots of pressure to do things our way, the way I understand it. How dynamic can that be? And more to the point, is it fun spending hours learning how to use the thing when you only need it for one small job?
And then there’s IDEs. Java’s got some amazingly capable editors, that’s got to be said. But why does practically everyone say “use Eclipse”? Sure, in terms of features it’s untouchable. But it’s UI demands a redesign probably more than any other app I’ve ever seen, and, well, do I need to say anything else?
Okay, rant over. (And no, this is not saying “Java sucks”. It doesn’t, it just seems to have a very high tolerance for poor design in massively used components.)