It's Time to 'Re-Align' the JCP?
jgeelan writes "The original glorious premise behind a J2EE container was to abstract multithreading issues, server memory management, wire protocols, and so on, from Java programmers and allow them to focus on implementing solutions, not server infrastructure. Yet in the current issue of Java Developer's Journal, the director of technology at Personified Technologies, Jason Weiss, has lit a flame under J2EE, the jewel of the Java specification crown. The spec, writes Weiss, is too complex. As a community Java developers must pay attention to the beleaguered JCP process and realign it with creating solutions, like those routinely released by the Apache Software Foundation. Weiss argues that by taking steps now, Java developers would be investing in the future both of Java and the community that has grown up around Java. 'The entire JCP process must thematically reflect our desire to build solutions that simplify complex technologies for programmers,' Weiss continues. 'In fact, the JCP process should continue to use the JSR acronym, but with new meaning: "Java Solution Request," he adds.
'Somewhere during this journey the JCP has shifted from its solution-oriented roots to merely implementing specifications. This trend must be reversed ... for the sake of our community.'"
J2EE is vendor slop. Not only is it overly large, but simultaneously incomplete. The abstractions are useles in the real world because they were designed for the very special case of JDBC databases. And when XML or any other du-jour technology came floating by, they were thrown in, too. Not because it necessarily made sense, but because one or more committee members had a vested interest.
The things that J2EE aims to accomplish can be (and have been) done with far less in a more architecturally palatable (read sensible) and scalable way. Please, please. I hope J2EE dies.
This is not just a matter of corporate policy. When I worked at JavaSoft, I actually met people who would not distribute their specifications in editable format, for fear of losing control of same.
Overly large, my ass. We're talking about server-side here, not client-side apps (where I'll admit, Java is far too large). Since when has providing a full feature-set been a problem for a server-side app? A development project with an intelligent architect will pick from the best of the J2EE apis (who needs to know about message beans if you're not going to use them?), and ignore the rest. Follow that standard, enforce it amongst the team of developers, and the 'overly large' API isn't going to be a problem.
These guyz arent the normal M$ biggots. Looks like Personified Technologies is an ISV who actually bets their business on Java. Just very interesting to see some self-criticality and not ranting from the M$ sloths.
js
What Java needs is a good IDE.
I'm working with Eclipse on Solaris; Dog slow. not sure why.
I love IDEA from intellij.
But neither of them allow WYSIWYG jsp development coupled with Automatic definition of Data bindings.
Maybe Dreamweaver MX will get it right.
Open Source Identity Management: FreeIPA.org
J2EE, the jewel of the Java specification crown
... but it does the job, it's practical, and the industry's behind it. Like C++, J2EE opened up a whole world of options that were reserved for elite programmers and academic researchers before it came along (J2EE opened up distributed computing much as C++ opened up OOP).
Oh, come now. The jewel of the Java spec crown is the JLS itself -- Java's a gorgeous language (complaints from Lisp and Smalltalk purists aside), it's the language itself that won developers' hearts, and it's the language itself that underpins the good work of all the other specs.
J2EE is nobody's jewel. It's more like what C++ was about 15 years ago -- big, ugly, stinky, convoluted, overfeatured, overspecified, yet still incomplete, and works best if you just pretend that certain parts of it just don't exist
And, like C++, in about 10 years somebody will come along with something much better that looks like the vague picture of perfection we all almost have now, something cleaner and smarter, which picks the right problems and solves them well -- something that does to J2EE what Java did to C++.
The question is, will that something in 10 years also be a specification based on the Java language? That's what I think Jason Weiss's questions may really drive at. And I'm not willing to take guess at the answer.
you've got a speed issue. so you solve it by moving from one VM to another VM where you like the language interface to the graphics better. and ... this will make it go faster.
wtf?
J2EE is not difficult - you just need to open a JAXP connection to a JNDI/JMS gateway to a JDBC bridge via a JSP RMI IIOP GI-JOE EBGBs ... ah fuck it.
Java is not slow - but J2EE is snail-like by design.
All remote calls are done via bloated and slow RPC-style mechanisms.
And what exactly is "bean-like" about a message bean? Nothing at all - just its name. Sun just realized that J2EE's design blew chunks and tried to hide their lousy design behind yet another specification. Maybe the Swing team should give the J2EE team some design advice! (ha!)
Java will never be the VB of intra-office applications that Sun hopes it will be.
Beans beans beans beans beans. Whatchu want for breakfast? Beans beans beans. Gimme dem java beans!
Your assumptions are not correct. Complexity and elegance are relative. To an english speaker the Chinese language must be extremely complex, but to a Chinese person it is natural and elegant. Likewise C++ programming is easy for those proficient in the language. Where is this definitive proof that Java somehow "beat" C++? Hmmm, the last time I checked C++ was alive and well. In fact, the number of Java job postings have been declining on all the job boards to make C++ programmers once again the most sought after developers. Most Wall Street firms have seriously cut back or cancelled their Java projects in favor of retooling and extending their C++ systems. Java has its place in the programming ecosystem, but C++ is once again gaining momentum, quietly, and without a PR machine. It just gets the job done.
As a side note, Java still does not have generic programming as does C++ which is very useful in scientific modelling. The proposed java generics solution does not work on builtin types without awkward and inefficient runtime boxing.
I don't understand the "like those routinely released by the Apache Software Foundation" comment. Much of what is created by the Jakarta project is implementations of the very same "overly-complex" specifications that the author laments. httpd is an implementation of the more-complex-than-you-think HTTP 1.1 spec, and the Apache XML project has implementations of the DOM, SOAP, and SVG (very complex, pretty complex, and kinda complex, respectively)
Don't get me wrong, I love and appreciate what ASF has been doing, I just question how one can derride the specification while praising the implementation?!
Although it isn't the most useful standard (for several reasons), JMS does more than you imply. The container infrastructure takes care of resource sharing issues for you, but even that isn't the main benefit. The main benefit is that JMS messages can be enlisted in distributed transactions, and support limited reliable delivery. This makes them usable in really serious system where failure costs $1m a second.
One of the best criticisms of J2EE is in fact just this: EJB, JMS and so on allow blue-collar engineers to build really serious enterprise scale systems, but in fact most systems do not need anything like the firepower J2EE provides, and most engineers don't even know what XA *is*. It therefore gets used in lots of cases where it is analagous to using an Apache helicopter gunship to crack a nut. The average website just doesn't need most of J2EE.
This is what MS were playing on, whether they realise it or not, when they rewrote the pet-store application using ADO alone a claimed some incredible speedup. J2EE is just not needed, even some something like Amazon. Certainly not for Slashdot. Banks and airlines do need it, but not everyone works for a bank or an airline.
Using databases to manage concurrency (and a whole lot of other things) greatly simplifies projects IMO. Databases do a lot of things better than programming code can, and I like to take advantage of that.
Some people still prefer the code-centric approach for some reason, and that is fine. But keep relational technology and tables in mind when doing complex projects. Try to communicate between processes via relational tables instead of language-specific constructions and see how it turns out. It takes a little while getting used to and to get skilled at sometimes, but worth it IMO.
Java represents the pennicle of the code-centric approach to managing complexity, and I think the pendulum will start to swing the other way soon (no pun intended).
(oop.ismad.com)
Table-ized A.I.
but you misunderstood. JDBC isn't the special case. J2EE promotes a special case of JDBC. That special case is one which prevents most of the more interesting uses and locks you into scenarios that are almost guaranteed to have crappy performace characteristics. That's why it's not real world. If you've done any real database work and any real J2EE work, you'd know this.
that was the whole purpose of all that nice abstraction. if you write your own engine then you're basically hard-coding against known assets. bye bye abstraction. the whole idea was to eliminate ugly vendor-specific hooks. but that turned out to be unrealistic for anything beyond the proverbial "hello world" any everyone was back to writing their own engines. so the new spec dispenses with some of the fiction and adds it's own stripped down sql queries. now you get the look of sql, but few of the benefits. and as an added bonus you dispense with the nice object model.
In the end, the whole exercise gets you no closer to a solution with a whole lot of baggage.
I think I see what you mean now. You could get rid of the packages entirely and rely on the classes scope hierachy to do the same thing. Aside from the difficulty with separating source files, that might be interesting.
The complexity of Really Big Systems is such that no one person could understand all the business logic, let alone the systems code. The stories I could tell, if men with large sticks wouldn't come and kill me ...
The reason they end up with J2EE is it is *relatively* cheap and reliable, standard and easy to find developers for, while allowing for distributed transactions that ensure their databases don't become corrupt. That tends to be what really matters to them: if the system fails, which it will, regardless of what it was written in, and we bring it back up, will it Just Work ?
I've had the chance to pore through the Axis and Batik sources. Since they follow coding standards and common paradigms (or the overused "patterns"), it doesn't take much to figure out how they work, and extend them if need be.
They DARE compare this java crude to C++??? I don't want a language that takes low-level features/abiliteis away from me, because the creator "thinks" I may abuse/misuse them. C++ is the most elegant, adaptable, expressive language I have ever used, and I'm used many professionally.
Anonymous Cowards suck.