20 April 2004
This Java stuff is pretty slick, but the complexity to which I've grown accustomed makes me uneasy. There are so many layers and technologies pieced together that I wonder if each layer is the best choice. Even when I have a pretty good feeling that something isn't a perfect fit, I've been sticking with the larger, more standard technology just for the sake of following something to a conclusion of my own.
Struts was difficult to start, but now it's facilitating pretty rapid development. There are still corners of it that I haven't used yet, and I keep seeing articles and other blogs touting Spring or Webwork2, etc. Many of the improvements these frameworks have over Struts make me say, "Yeah, why is that so hard anyway?", but Struts is a much more established standard, and I haven't fully explored it yet. I don't want to jump frameworks for every small project and never fully learn anything -- Jack of all trades, master of none.
That's probably my greatest concern -- I have to read about frameworks and pick one on others' descriptions, then actually implement a project on it to evaluate the framework. Ultimately, I have to see everything for myself, because I never trust anyone else's assessment. (Claire can attest to that.) I'm still using Entity Beans for this very reason -- I haven't proven them useless for myself yet, and I figure the J2EE server vendors will implement performance improvements someday, and my time studying them will prove to be well-spent. (JBoss could lead the way to high-performance entity beans by reimplementing their persistence layer using Hibernate.)
Java gives me so many options that I could very well spend all my time evaluating ways to do something and never actually get anything done, if I'm not careful. I could dump Java and move onto something like PHP or go back to Perl. Those don't have all the frameworks and complexity -- I could just code again, but over-simplicity gives me the same icky feeling.
I trust complexity will provide me solutions to unforeseen problems where simplicity will just leave me recoding from scratch. I take comfort in knowing I have software options for scaling my application, not just "buy a bigger box" to make it run faster. Splitting a simpler application across servers could also entail wide-spread code changes, instead of simpler configuration changes in my Java apps. I also like being able to apply my Java knowledge to all other sorts of applications, not just web apps. I know Perl can do lots, including GUI (see Frozen Bubble), but I still question if it should. ;) Besides, Perl is so 1995.
All other languages, especially these scripting languages, like Ruby or Python, seem to just be fads. These would seem like much riskier jumps than just switching Java frameworks, since I really wouldn't expect to use these professionally. Java's worked out nicely like that, and that's why I jumped to Java in the first place -- I wanted to be viable in the inevitable Microsoft workplace without having to have bought into Microsoft myself. Microsoft languages will morally remain off-limits for me. Java programmers are also expected to do more complex things and there are fewer of us, so we get paid better than your run-of-the-mill Microsoft VB programmers!
Filed Under: Java