Bitscape's Lounge

Powered by:

Complexity

Started: Thursday, March 18, 2004 02:40

Finished: Thursday, March 18, 2004 03:19

These past couple days, I have been grateful for the bit of dabbling I did last year with Java servlets and JSP. Grateful, because the project I've been working on decided it was time for me to get a curve ball, and next thing I know, I'm sitting in front of a nice big pile of web application that not only has servlets and jsp (among other things), but a healthy chunk of files that use the apache struts tag library.

Had I not taken the time to school myself all those months ago, and gain at least a rudimentary understanding of these things, it would be safe to say that I'd be in a much deeper world of "What the hell is all this?" right now. Not that I'm having to do much heavy lifting myself at this stage; just a few edits to get code that was written by somebody else to run in a new environment. Still, if I were starting out with no idea what a "WEB-INF" directory was for, what a deployment descriptor was, or the basics of getting Apache Tomcat setup, this would be taking several times as long as it is.

As it stands, I'm remembering why I only dabbled with it for a little while, rather than adopting it for some of my pet projects, as I had briefly thought about doing. As nice as some of the features sound, Java (or JSP, servlets, struts, or whatever) inevitably ends up taking 5 times as long to accomplish the same thing that could be done more easily and quickly in just about any other environment.

No matter which way you interpret it, the statement applies. Coding time. Software installation and configuration time. Processor time when it runs.

It's like a bunch of people got together and said, "Hey, let's make an architecture that's as complex and confusing to use as possible. Throw in some extra 'tiers' here and there, and call it a multi-teired architecture. Nevermind whether all these teirs actually serve any practical purpose, because multi-teared sounds neat and fancy." Thus was born J2EE, a bunch of random tag libraries, piles upon piles of xml for even the most minute key/value pair storage, and a whole lot of big thick books.

(I'm not even necessarily digging on the Java language itself, which is actually quite nice in a lot of ways. But some of the API's are just absolutely overboard, especially when compared to the relative simplicity of certain scripting languages, which accomplish the same thing as a big huge tree of Java "architecture" using a few short lines of code, and they run faster too.)

Even so, it's good to be at least somewhat knowledgable about such things, as this week is proving.

Now I think I shall wander off in the direction of bed.

J2EE
by bouncing (2004-03-18 08:07)

Having talked to some Java and J2EE developers myself, there are a few things they've told me, which I suspect are probably accurate.

  • J2EE is not, has never been, and never will be, for writing single/stand-alone applications. It's for very large businesses to write very large application SUITES with. The reason for all the otherwise pointless teirs and interfaces is integration.
  • The free versions of almost all J2EE tools are more complex than the huge business commercial ones. The free ones implement the spec, while the commercial ones do that, and provide tools that simplify the process. It's extremely rare that Java "software engineers" deal with code segments -- most J2EE code is generated from GUI tools that are beyond the basic spec.
  • The big businesses making this kind of ERP software also have an itch to scratch: they want every person who works in the company to be part of some grand, well oiled machine. The developer who can build, install, and maintain a program isn't the goal -- since they already have staff of hundreds of programmers, few of them are required to master the entire Java or J2EE suite. Each J2EE component has a team of techs around it -- installation techs, troubleshooting techs, database-software integration programmers, webserver-software integration programmers, etc.

When you take these desires into account, they make J2EE more sensible. It's not supposed to be a tool one person or even a couple dozen people use. Now, whether this really makes software development better is debatable to say the least, but understanding their goals and motives, one can see why J2EE is as popular as it is.

Dot Net
by bouncing (2004-03-18 08:12)

Pains me to say this but...

In my last life at another company, we did look ("evaluate") at J2EE and Dot Net for our purposes. J2EE is still too complex for us, but aside from the usual downsides related to Microsoft software, Dot Net wasn't so bad.

Although we didn't do anything with dot net because we were already a Python shop and no one could really point to anything dot net had over the Python suite of development tools, we also couldn't find anything specifically wrong with dot net and C# from a technical stand point.

If one weren't so much interested in ideology (having a soul), becoming a "dot net consultant" is actually probably a pretty lucrative field. Dot Net is simple, you don't have to sell it as a platform (Microsoft markets it for you), and as long as you're happy peddling Microsoft stuff, you're good to go.

Two cents.