Thank God Java EE Is Not Like Ajax
Slightlyright writes, "Java Developer's Journal reports that some people in the community are wishing that "Java EE would be more Ajax-like because 'EJB 3.0 can not save Java EE.' This has caused strong reactions from bloggers such as Rich Internet Application pioneer Coach Wei, who wrote: 'Which aspect of Ajax [do] we really want Java EE to be like? The difficulty in developing Ajax code? The difficulty in maintaining Ajax code? The extreme fragile nature of Ajax code? The extremely fragmented nature of Ajax support from different browsers?'"
I Think Java developers are more in need of the buzz java once had. A CEO looks at AJAX as better, because of it's recent exposure, and buzz word power. Java was no different in it's infancy, with it's broad promises. Java justy wants to be cool agaim ...
"Which aspect of Ajax [do] we really want Java EE to be like?"
How about the Web 2.0 part
(It's a joke. Laugh)
(Well, sortof a joke)
[Fuck Beta]
o0t!
What does Javascript have to do with Java?
File under 'M' for 'Manic ranting'
When the guy in the first article said we must stop thinking about "faster bubble sorts"... well, that really hit home for me. Why, me and my buddies spend hours a day trying to improve bubble sorts. Sometimes I wake up in the middle of the night, thinking about bubble sorts. It's hard, man, once we came up with this recursive divide-and-conquer approach--looked not so slow, even quick, but then we realized it wasn't really a bubble sort so we couldn't use it in our programs. Back to the drawing board.
Anyway, just wanted to say that I immediately realized that SOA guy was a real engineer--skilled, one of "us", not a marketroid at all--when I read that quote.
ECMAScript code on the client manipulates the HTML DOM and requests data in XML or JSON format from a server through XMLHttpRequest. A servlet produces such data.
Ajax: Legendary Greek Hero Java: Island in Pacific, also slang for Coffee The two obviously have nothing and common. Mod Story [-1] Offtopic
Java doesn't need saving and it isn't about EJB. Java is whatever you want it to be. Some folks have this notion that it should do and be what they want it to do/be which will hurt the platform in the long run because not everyone has the same need/requirements.
p.s. There is a reason why Java has withstood the test of time (for 11 years anyways) and that's because it is good platform and a robust one at that.
-----
One is born into aristocracy, but mediocrity can only be achieved through hard work.
On the topic of debugging strange AJAX bugs - is there a workaround for IE6 randomly reporting a 12030 status for XmlHttpRequests under https specifically? Mozilla and Firefox do not have this problem with XHR and https. Under IE6, an XHR request will fail with a 12030 error every few attempts - it will fail without any packet leaving the browser. It does not matter if the server serving the https is Apache, Tomcat, or other. If normal http is used, there is no problem on any browser.
I am hoping that Ajax becomes a set of GUI components and tools that are language-independent, at least from the server side (because one probably needs JavaScript to talk to client DOM). In that sense, the server-side language does not matter any more than Java conflicts with HTML in "old style" web apps. In Ajax, the server talks to the client via XML. If Java wants to make Java wrappers around this XML, that is fine. Other languages can do the same.
Or, is this a battle over JavaScript+DOM versus Java's various client-side GUI plugins? Because of Internet Explorer's lackluster support for client-side Java, I think JS+DOM is where it's at on the client side.
In short, the server-side language should not matter, and Java already lost the client-side GUI war.
Table-ized A.I.
I especially know all about CSS and the nightmare of multiple browser support -- especially when CSS rendering support seems to be inversely proportional to a browser's popularity. It doesn't help my desire to push for web standards when the CEO doesn't give a hoot about every browser out there except the 800lb. gorilla -- going as far as to specifically forbid using anything but in demos because, "That's what our clients use."
I guess it goes without saying that the "people in the community" referred to in the article are developers and not designers; if you think JavaScript support in the popular browser application is bad, try writing 25,000 lines of CSS for a web application designed to work on the "big 4" browser platforms (e.g. MSIE, Firefox, Opera & Safari).
Clearly, Mr. Wei has a point about at least one thing -- anyone who develops for Java should be grateful about the homogenous nature of the JVM. Sure, you may still need to require a specific VM version to run your program, but my experience is that it's not quite such a big deal to bundle a specific VM with a desktop application (and no problem at all to pick and choose what JVM to use on an application server like Tomcat). Why someone would abandon that in favour of the uncertainty (and constant flux) of a browser is beyond me.
The whole discussion is a waste of time, and the article itself is lame.
First of all, there is no careful description of the problem. A problem is the difference between the way things are and the way you want them to be. This takes into account the way things are that already acceptable. AJAX has some deficiencies, and it has some attractions. My questions are: Is it worth the effort to correct those deficiencies in AJAX? Is it worth the effort to include the attrations in EJ?
Secondly, there is no concensus on the appropriate domain for the different tools. Is EJ really a tool for doing the same things that AJAX does?
"The mind works quicker than you think!"
The whole comparison of AJAX and Java EE is absurd. The 3.0 version of Java Enterprise Edition is going to be successful, better late than never. This what the community of enterprise Java developers, thank you Sun for making it happen!
...the Web is not at /all/ a well-designed application platform in most respects. The only
good things about it are its ubiquity and (mostly) fundamental base of open standards.
Otherwise, it's just an awful application enviornment. I am always suprised that everyone
has been so duped for so long-- the phenomenal growth seems to be the answer.
Bleech. In the decades this has been advancing for commercial and application purposes,
we're now just barely reaching the equivilent of a 1990's desktop app, with arguably better
(though certainly more pervasive) network connectivity? Yuck, people! Let's get with it.
Javascript is not like Java.
Ajax and Java are two completely different ideas/concepts. Second, if AJAX is hard and you do Java, you need to have your head examined. It's probably dyslexia, and you've been writing perl, not Java this whole time. Not to say if you know Java you know Ajax, completely untrue, but if you think it's hard that's a different story.
...funniest thing I've read on Slashdot in some time. Thank you, sir.
the JCP is too slow and crufty, comes up with homegrown technologies nobody wants to use, etc. and that tools such as Hibernate and Spring not borne from the community process are superior or, in the case of EJB 3.0, adopted.
I guess I don't know why "Ajax" was brought up, I haven't used it and it's not something I'm familiar with. Maybe Ajax doesn't belong in the same class of technologies. Arguing about the specifics means missing the point, though.
It often takes "rebel" technologies to move things forward. It also takes some experimentation to develop a technology; i.e. coming up with a rigorous, solid standard might prevent its spread. Sometimes sloppiness is good. RSS, HTML, etc. have done okay despite the sloppiness. Requiring every web page be HTML compliant would have stifled the web.
Recently, I've started working on Weblogic. I used to develop with JBoss. In terms of service deployment, JBoss is superior to Weblogic. I guess with Weblogic, you're still stuck writing a lot of code to deploy JMX services. I noticed at my new company that programmers ended up launching network servers from a Servlet, which was not its intended use. The ease of deploying MBeans and dependency control with JBoss is superior. It can be done easily with a bit of XML, and no code is required. JBoss also handles ordered deployments better. With Weblogic, deployment ordering is done by assigning a deployment order number (1-4000 or something) to your deployment. It reminds me of writing programs with line numbers back in the good old days of BASIC.
It's my guess that functionality from Spring will be eventually refined into a series of JCPs. Sometimes it's better that standards develop in this way.
-- ac at home.
From the article: "The only thing AJAX is are a set of extremely important best practices and patterns developers use to create compelling web clients. Why can't JEE be more AJAX like?"
I still see many of the best practices in AJAX being fleshed out in the year(s) to come. Hopefully things like Comet will become a reality in the near future and the many different toolkits/utilities (dojo, dwr, jmaki, et al) can continue to mature and make the development of AJAX apps faster, easier, and more reliable but the current amount of hacks required to get any decent app working in all the various browsers is just downright fustrating. J2EE has its own set of best practices which I dare say are much more tried and tested than most of those for AJAX. But in some cases best practices are easier to lay down for JEE as all things JEE must be "blessed" by the JCP/Sun so you have a "standard" target. This can be a good and bad thing and the article does touch on those points.
I think system engineers have become to realize that you don't need EJBs and all its baggage to solve every problem and that some problems can be solved by lighter weight solutions, but when you need atomic distributed transactions, fail over, horizontal and vertical scaling, and all that other enterprise jazz what are the current alternatives?
Like always (well mostly anyway), the good engineers/developers who are "free" to do their jobs will find the right mix of technologies from AJAX and JEE (or something else) to solve their given problem(s) despite what the industry tries to shove down their throats.
"Look Lois, the two symbols of the Republican Party: an elephant, and a fat white guy who is threatened by change."
...many ex-Java EJB devs think that all the current iterations of EJB are difficult to develop in (relatively), difficult to maintain, and fragile and difficult to support on multiple EJB servers... These are the main reason we're ex-Java EJB devs.
Loading...
FTA:
"I was always skeptical about AJAX. This technology can be useful for Google , Yahoo, or Amazon, and the like . Because regular businesses can not afford it. They can not hire a team of experts to find workaround for dozens of serious problems browsers/JavaScript introduce. Browsers/JavaScript is not an application development environment."
Oh, shit. I better tell my boss that all the AJAX-based apps I've written over the last six months need to be taken down. Apparently, we can't afford them!
My apps are certainly not nearly as complicated as the ones the big boys do, but they're still AJAX, carrying a dialog with the user interface through XMLHttpObject. I'm the only full-time developer at my company.
AJAX and Javascript are a mess, though.
I think I'm more interested in what Coach Z has to say:
"I use Ajarx to clean my terlet! It does a pretty good jaerb!"
N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
i'm sorry, but, god and nerd stuff doesn't go together, thats why we have redundancy, remember: god saves, but buddah runs a raid10 node apart of a intercontinental cluster with n+1 technology and a private directly linked fiber line +1
so the next time you put your trust in god to keep the matrix up, remember this.
This guy, Coach Wei, whoever he is, compares a specific platform for Java with the general miasma of people who woke up a year or so ago and realized that Javascript was a programming language. Classic Jive: Pick a toss a red herring in the air, blow hard, set up a straw man hoping no one notices its a straw man, then knock it down.
Seastead this.
If like to engineer things in the true sense of the term, then you have to go for Flex/Java EE. If instead you like to hack things, then go with Ajax/Whatever. This is not to say that Ajax products do not work or do not kick ass from the user's point of view, though. Maybe this is all that matters in the end.
I just searched through these comments and didn't see any mention of GWT.
GWT is wonderful. I've programmed ajax stuff (check out my chess and checkers games. It's definitely brittle if you actually have to write the javascript and parse the xml and convert the xml to java objects manually.
But, using GWT has been a big eye opener for me. You write java code and it's compiled into javascript. It completely turns everything on its head. If you want to communicate some more information to the server from the client, all you need to do is add another method to the remote object (and its interfaces) and you suddenly have another statically type checked rpc call between client and server.
I'll probably still do simple form apps in struts, but I don't intend to ever write another line of javascript that's of any significant complexity. It's no longer necessary. No longer do I need to figure out incompatibilities between browsers. GWT just figures it out.
All these years people have been trying to make a good java webapp framework and GWT comes along and does things in a way that just turns everything on its head. Struts and Tapestry and JSF are all solving the wrong problems. They all try to make it easy to take html forms and retrieve and validate that information.
GWT turns it around and just lets you communicate java objects. I used to be unhappy that I needed to settle for choosing which framework was the least bad. Now I just say to hell with the lot of them except in situations where javascript isn't allowed.
Cow Cube
microfocus cobol -- i was an admin for an app written in it. might be the only one in the world, but i doubt it.
It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
Somehow you are totally missing any signs of the "sarcasm" gene, unfortunately for you, this is irreversible.
- sigs are for wimps.
Must be all the bubble sorting in my brain while typing ...
- sigs are for wimps.
I believe both Java and AJAX are the wrong path to take. The web was designed for hypertext documents. It was not designed to run apps. Instead of kludging the web to run apps we need to create a new system that is designed to run Internet applications. I believe a simpler straightforward solution to this problem is the way to go. I have begun work on such a system which I call NewI\O (http://www.newio.org).
Agree. Fact is we'd have been better never moving from LISP.
AJAX and Java EE are orthogonal. Servlets and EJB serve AJAX clients just fine. Some large fraction of all AJAX clients use Java containers as successfully as any other back end.
If what is meant is Java EE needs some of the AJAX hype... well Java EE has the tools, libraries and maturity to continue thriving with or without AJAX.
I find this inevitable push to bury Hibernate and Spring as throwing a lot of very good tools down the drain in order to continue the Sun monarchy and JCP worship.
Monarchy, worship. Like Java EE doesn't have competitors. Go pop a zit Brandon.
Lurking at the bottom of the gravity well, getting old
How about the fact that it WORKS, despite all quirks, and that although Java Engineer TM Reg Inc. feels it sucks it still is what will power the internet tomorrow.
We've always been at war with Eurasia.
It would not be better to use the browser to show only HTML, extend HTML document oriented tags with application oriented tags, SVG and use a protocol designed for applications not one for download documents? A protocol like X11 but with HTML, DOM nodes and DOM modifications. A stateful protocol without cookies, binary, designed for minimizing the amount of data traffic needed between server and client. An asynchronous protocol with witch server can send HTML pages and DOM modifications to the client/browser at any moment and the cliente/browser shows the HTML, make the DOM modifications and sends function execution request to the server with user input. Just some ideas
Which aspect of Ajax [do] we really want Java EE to be like? The difficulty in developing Ajax code? The difficulty in maintaining Ajax code? The extreme fragile nature of Ajax code? The extremely fragmented nature of Ajax support from different browsers?
The fluid user experience? The added flexibility on the client-side? The ability to make richer, more responsive applications?
Or do Java devs not think about "users" any more?
(Seriously, that's what Ajax is about, the USERS. Forget about the implementation for second. And yeah, Java and Ajax are pretty orthogonal so the whole article is (-1, Offtopic) but his criticism of Ajax needs to be addressed.)
I fail to see what this has to do with Java or AJAX, and I don't have the mod points to mod you offtopic.
Are you a cut'n'paste troll, or are you simply in the wrong article? Or maybe you intended to reply to a specific comment?
Don't thank God, thank a doctor!
You do use x86, right? Like most of the world?
x86 is an engineer's nightmare. It's horrible, it's ugly, it's loaded with legacy crap.
But the true engineer doesn't care, because he's likely working in a high-level language, like, say, Java.
Now, if you want to engineer a web app (and you're sure that's not an oxy-moron), you can do it in the low-level -- you can write the code manually, deal with browser issues, hack around. It'd be kind of like writing x86 assembly. Or you could do true engineering, just as easily. Hell, if you think Java==Engineering, you can do Ajax entirely in Java with the Google Web Toolkit -- it will take anything needed for the frontend and compile it to JavaScript.
But you're damn right it has to kick ass from the user's point of view. I could write a beautifully normalized, speed-optimized, complete, perfect relational database, but if the only frontend is a SQL commandline, I've failed as an engineer and a hacker.
Don't thank God, thank a doctor!
I am disheartened by reading the comments... people, PLEASE for once in life go and read Java EE specs and see what it is intended to do.
/. analogy, its like car lovers and music system fans fighting with each other that the other is not like their's!
Java EE is a framework to write business applications, for any kind of business, from issue trackers to ERP, the "business" in it doesn't mean "$$$ business" literally.
When writing business applications, it tries to enforce you to separate your concerns, especially, the presentation layer (Servlets & JSP), the business logic (EJB) and enterprize information systems (EIS) (JDBC, EJB container managed persistence etc). Its a complete stack for developing applications.
AJAX deals with presentation layer, and more specifically, the interaction part of it. its a piece in the whole stack. The Java EE presentation layer does NOT depend on even having an HTML frontend even! (no sane framework does!).
So now, if you have an HTML/XML browser frontend and a human user using it, you may use AJAX for enhanced user experiece. There is nothing in Java EE that says you cannot take your favorite AJAX toolkit and use that to build your frontend.
So both technologies are not even competing on even a single issue. Both are complementary. You can use Java EE stack to develop your application, and when time comes to develop the frontend, you choose from plain old HTML, XHTML, XML, AJAX etc (or a combination thereof), to develop your application's "frontend".
Please stop this ignorant war. To make another bad
- mritunjai
I've written distributed applications using:
- Java EE
- CORBA using C, C++, Pascal, and Java
- Microsoft DCOM
- Various proprietary protocols
AJAX isn't really a distributed software development technology... it's a sloppy mixture of features written by a varied group of contributors. What makes it interesting, is that no matter how implemented, the goal is the same. I think that's what the writer of this article was trying to articulate. With Java, there's only ONE way to do anything. Drink the punch, or don't use Java. If you dare suggest that any part of Java needs work, you get a room full of angry & militant Java advocates ready to stone you into submission. I'd like to say that I'm exaggerating, and I am, but only a little. I too wish that Java engineers could think outside of the "sandbox," instead of encouraging others to make due.
Don't you guys trying to optimize your software bubble sorts realize that these days, all the fast sorting action is happening in hardware accelerated Bubble Memory?
Plus, Bubble Memory is much more secure and less obnoxious than Flash Memory (which everybody hates because it has major security holes and displays annoying advertisements).
-Don
Take a look and feel free: http://www.PieMenu.com
For the love of all that is holy, RTFA! The claim was not that Java EE should use Ajax, or that Java developers should use Ajax at all. Google Web Toolkit is completely irrelevant!
:: as the class separator? You want all variables to have dollar signs on them? You want no type checking, and all kinds of random C code?" Completely missing the point, of course. CPAN is a centralized collection of community modules, most of which play nice with each other, which make it possible to develop most Perl programs by splicing together 4-5 modules with <100 lines of glue code containing your actual program logic.
What was meant by this is that Ajax is a loose collection of cooperating technologies, without a standard, that develops very rapidly, and allows a lot of choices to the developer -- as opposed to Java EE as a rigid platform. Kind of like Linux vs BSD.
Even TFA understood this in the response.
The Slashdot response, so far, is roughly equivalent to if I said I wish Java had something like CPAN, and people jumped all over me with comments like "You want Java to use
It's like a Wikipedia of code -- NO! Not in that anyone can edit any module. It's like Wikipedia in that it's a central repository of the collective programming skill of mankind. It's sort of the library to end all libraries.
Anyway. -1 Offtopic to the entire comment section this time. RTFA!
Don't thank God, thank a doctor!
java vs javascript
or in other words:
strongly-typed statically checked compiled language proponents vs weakly-typed dynamically checked interpreted language enthusiasts.
which is really as old a debate as C vs LISP...
yawn...
I don't feel like it...
I'm not sure why we always get so hung up on user interface development languages. Why do we keep adding VMs and abstraction layers when it still fails to solve the cross platform compatibility issues? I mean come on: ASCII, HTML, DHTML, javascript, AJAX (I think I left out at least 4 layers).
... it'll take maybe a weekend or two. No, never mind. What we really need is a layer that sits atop AJAX that interprets it into Java Swing classes. Yeah that'll do the trick.
What is needed is a test driven robust standard that is not as open to varied interpretation. Build each requirement with a set of test cases that must be passed for an interpreter to be considered valid. Strive for as close to 100% logical coverage as you can get before you even implement a single interpreter. Then let us C++ nerds go and implement some virtual machines and client side libraries in our spare time
So basically, this guy is pissed off that J2EE-focussed magazines won't buy his articles about technologies that aren't core J2EE technologies but which he thinks are cool anyway. And thinks an AJAX analogy will make his point, which is of course totally wrong.
I'm quite curious about all of the posts rated as a 5 on this page. Could this be because of the interest the modders(web developers) have in this particular subject? Nah... I'm sure they're fair and balanced -- just like FOX News. Watch the score I get on this post.
I knew about the Java Community Program, but I wasn't aware He was involved with it. No wonder it became so popular so quickly.
I wonder if He has contributed to any fully open source projects - the comments alone may be worth reading.
I hate it when people call JavaScript Java, because it gives people the wrong impression of what Java really is, and just how powerful It can bit.
.... they all work here on every machine where I've bothered to install them, with zero hassles. Java? Forget it, with the rare exception.
Maybe it's good advertising for Java though, because Javascript runs everywhere whereas it's extremely hard to get Java running, so that Java apps are "write once, run almost nowhere". (I'm serious.)
I have 15 machines here, spanning virtually every O/S and flavour. Over the years, I've managed to install one version of Java on only 2 of them, while all attempts with all the leading flavours of Java fail catastrophically on all the other machines. And as for applications, I've tried hundreds on the 2 machines where the install succeeded, and the only one that has ever worked for me is the Jext editor.
In my experience, Java is utterly non-portable, and the "write once, run anywhere" thing is one of the biggest deceits in computing, pure propaganda. Java is the most non-portable language system I've ever come across, and I run pretty much everything here.
C, C++, Objective-C, Perl, Python, Ruby, PHP, Lua, many flavours of LISP, Ocaml, Prolog, Pascal, Tcl,
I'd like to be more generous to Java because I love its syntax and semantics in the abstract, but a language that I can't use for applications because it just refuses to install or because it refuses to allow apps to run is useless to me.
So, dispensing with generosity, Java is utterly non-portable, and hence effectively is a useless pile of crap despite the collosal "run anywhere" lie. End of story.
Why anonymous? What you say is absolutely correct and true, however unpopular it might be to say it.
I hear they are teaching Java more in schools now, a sad thing really that even acedemia bought into the hype and empty promises.
I've had enough abrasive sigs. Kittens are cute and fuzzy.
But I wouldn't go as far and discount it as useless because of it, or just saying "Thank god, we're not like that". If you go down that route, you'll go down a route that ignores the market.
Let me move the original comment back a few decades and put in a slightly different context, and that will hopefully highlight what I mean:
Surely, there was a time, when I thought real deep down X11 client programming was a pig - but if I had stayed with purely command line apps, I would have missed the market - or do you honestly believe you could find a mass market for a non-WYSIWIG command-line driven equivalent of Word or Excel?
If I compare, say, maps.google.com (AJAX) and streetmap.co.uk (non-AJAX); or gmail compared to some non-AJAX webmailers out there - google maps wins hands down in user friendlyness - and that's the bit that counts.
There will be sites/projects for which Ajax will not be the way to go (much like the way gcc doesn't have a built-in GUI), but for many functions with direct and interactive user-access - Ajax will be the way to go, until someone comes up with something even better.
Why anonymous?
Because I no longer have the energy nor inclination to argue with the Java devout about their adored and worshipped system that can do no wrong and runs absolutely everywhere and makes the tea and takes the dog for a walk, and is the One True Language.
I sat for years on various Java technical forums, but that was during the early years when Java was in its infancy. Then things started getting ugly, when the language became a religion.
Every language has its fanboys, but there are usually good solid engineers around who will willingly discuss any shortcomings so that they can be improved. Not so with Java now. The Java community has taken the concept of "fanboy" to its extreme limit and totally removed the brains from anyone who might openly discuss engineering problems with its implementations. It is simply not allowed.
Well, I'm an engineer, and if discussing problems with a language is not allowed then I'm simply not interested in that language, because all non-trivial systems have problems. It's in the nature of complexity.
So, that's the reason for the AC post. Pretty sad, but that's life. Java for me is worthless. I wish it were otherwise.
Yes, I know Java is not cool anymore because Google uses Ajax, and I acknowledge that when Java was being hyped as the "the new cool thing" 5-10 years ago, it was not up to par: limited and ugly graphics and UI, slow initialization, etc etc.
But a lot of those things have been polished in the recent Java 1.5 and will get even better in Java 1.6. UI got speedier, many bugs have been fixed, gc has been improved and most of all the performance in general is faster. At the same time, computers were much slower back then. Now it would be safe to say that just the average raw machine performance has more than doubled, soon we will be seeing multple cores on home desktop machines. So could this be another chance for Java rich clients in form of applets or Java WebStart applications?
One of the biggest benefit of Java is that the developer can stay in the same environment, on the front end and the backend. No need to know JavaScript, HTML, DOM, XML, and whatever the backend uses. Just use one language. This, to me at least, leads to 3 other benefits:
1) More consistency: a lot of Ajax code right of the bat deals just with different browser version and JavaScript versions, that's too many "if"s and "else"s to make it fun. With Java the developer has a clean slate work with, less workarounds means cleaner, more maintainable code.
2) Can use any communication mechanism between client and server, no need to stick to XMLHttpRequest
3) Easier to find developers. On the job application just put down one requirement - "Java". Instead, Ajax means "JavaScript"+DOM+XML+backend language(SQL,C++,Java etc)....
Yes, yes, I know, I don't really see Google or Yahoo re-developing their portals as Java applets or even worse Java Web Start standalone applications. But how many large web portals are out there? On the other hand, I can see applets used more often in specialized sites, industry-specific sites.
And let's face it, most sites can just remain static. Mr. Sixpack doesn't need DOM, JavaScript and XMLHttpRequest to display his fishing trip pictures online...
Today, with Ajax in mind, "knowing JavaScript" means "I know and understand async. I/O & DOM, I know about XMLHttpRequest and I could re-implement Google Maps for you if you ask me".
All of the sudden JavaScript went from being used as a toy scripting language to a full-blown develpment language. Not saying if it is a good thing or bad thing but you can thank Google for it...
The article mentions the extremely important best practices and patterns of AJAX. So what supposedly are they?
For interface, I'd like full SVG 2.0 supported in all the browsers and standardized (i.e. no need for Flash) and for a way for my imaginary browser-embedded Python to manipulate the SVG interface in an easy, clean and Pythonic way...
Ahh, it's nice to dream..
"and that tools such as Hibernate and Spring not borne from the community process are superior or, in the case of EJB 3.0, adopted."
That may be true, and isn't inherently a problem, or is it? However, somehow Java tends to be used in big companies and big projects, where it is really helpful to have those official standards. It helps to speed up the decision process on what technology to use for what purpose.
J2EE/JEE can't be like AJAX for following reasons:
1. AJAX revolves around hitting the server hundreds of times and thus increasing the load on Server unnecessarily.
2. AJAX revolves around browser's support for XMLHTTP: Nothing else.
3. AJAX requires very fast user network connections, least redundant comnnections which may not be available at all times.
3. AJAX is basically JavaScript which CANNOT and will not replace enterprise computing until Rule Engines replace ALL programming.
4. Java is more robust, more feasible for virtualization, etc., which makes it attractive.
5. Not all enterprise applications require a browser: Most are Batch operations and as such require NO browser interfaces.
"Doing what i can, with what i have." ~ Burt Gummer
http://www.xml11.org/
Although it doesn't get the hype that GWT does, XML11 is a much better implementation of the idea. It works with java byte code instead of source like GWT so it's more stable. GTW doesn't yet work with java 5 because of the new language syntax. XML11 works fine since the java byte code is the same between java 4 and java 5.
Also, it's based on the AWT framework (same classes with different implementations) so developers already familiar with AWT can get productive faster - instead of having to learn yet another gui framework.
Don't you just hate it when people reply to your signature?
In my experience, Java is utterly non-portable, and the "write once, run anywhere" thing is one of the biggest deceits in computing, pure propaganda. Java is the most non-portable language system I've ever come across, and I run pretty much everything here.
Having read your other post, I almost dare not reply, but here goes...
What sort of app were you trying to get running? I've spent the best part of 6 years now writing web apps in Java, and have never had any problems getting them running on different systems. I develop under Windows, the apps are built on Windows, and are almost always deployed to Linux boxes, and we've not had any problems.
I can't vouch for applets (which I've never done, but they are historically a complete pain in the arse, although I believe that situation has improved) or client-side applications, but on the server, I'm not aware of there being any problems.
That's not to say that the language doesn't have issues (every language does, and Java is no exception), but I've never seen any relating to portability (again, not saying they don't happen, just relating my experience, for what little it's worth).
It's official. Most of you are morons.
http://www.coachwei.com/blog/_WebPages/AboutMe.htm l
Quote - "I live in Cambridge, MA. I work at Nexaweb Technologies (http://www.nexaweb.com), an Enterprise Web 2.0 software company. &...Many moons ago (1997 to 1999), I wrote an Ajax-based word processor, which is published and open source at http://www.ajaxword.com./ I also worked at EMC Corporation in the late 90s, doing work in the enterprise storage area. "
Oh & Btw - I'm Yuri Gagarin.
--
In Soviet Russia, the Rich Internet pioneers YOU. Obligatory.
95% of all sigs are made up.
"What does Javascript have to do with Java?"
Nothing.
I'm afraid you're using the wrong word. A troll is someone who doesnt even believe in the arguments that they are espousing. Their whole purpose is to dump fuel on smoldering embers. This is something that cannot be said of Dijkstra. A polemicist is a more accurate description of who Dijkstra was.
There is no such thing as luck. Luck is nothing but an absence of bad luck.
AFAIK.. AJAX is still young enough not to have any sort of standard organized framework (although lots of frameworks exist, none are standard). AJAX is fairly straightforward and easy to grasp, but can quickly become a nightmare of spagetti once you get beyond the simplest application.
J2EE and EJB on the otherhand are very standardized and highly organized, but complex by design and harder to initially grasp. Personnally, I'd rather try to detange AJAX than try to figure out what is going on with the dozen-odd layers of interfaces that EJBs seem to implement. I'd really wish EJB would get rid of all the complex interfaces and just allow direct acess to the object and its methods. It would much easier to grasp and work with. Why do I need muliple layers of interfaces when I just want to manipulate the object?
You're wrong, and that's about all I have to say about that.
Maybe I am in the minority but I have spent a lot of time reading the Java EE specs and trying to implement them. After implementing them for a couple of years I realized that Java EE is a solution looking for a problem. After writing applications for small web startup to a top financial institution, my reflection is that EE breaks KISS. The spec tries to be everything for everyone and thus is overly complex for most business applications and for all the benifits it is supposed to offer it creates as many problems.
Example if you look at the Entity Bean OR mapper locking specs you will see that if you have any kind of load (Assuming one of the E stands for enterprise that is generally true) well you get locked up if more than one thread is trying to access that object at a time and your concurrency breaks down and if you are using a good provider it start spouting out Deadlock Exceptions. After I tweaked the provider to turn some of the "EE features" off, made a lot of work arounds and wrote a lot of scripts to generate all kinds of code I finally had something useful.
BEGIN RANT
Now I do not claim to be some super coder. My experience is that all the things EE spec was supposed to do it didn't. Unlike the servlet spec we still have vendor lock down, we have more code (XML, umpteen million interface files, lots of wrappers code that needs script generators or xdocletization) all so we can move data in and out of a database and on to a web page or GUI.
END RANT
Feels good to get that off my chest.
Pedro For President!
Comarting something like Jave EE to Ajax isn't even like comparing apples to oranges, it's like comparing apples to blue. They are totally, totally different things, and live at different conceptual points in the hierarchy.
Of course, that is actually the point of the article... That Java EE shouldn't be a bunch of specs for implementation, that it should be a bunch of loosely coupled ideas that end up getting something done. I mean, AJAX originally stood for Asynchronous Javascript and XML, but today, you see things that don't use XML and aren't asynchronous using the buzzword. Ajax is 'just a bunch of ideas'.
Of course, those ideas are based on Javascript, html, cascading stylesheets, the XMLHTTPRequest function in browsers, etc. If these things weren't all spec'd out, Ajax wouldn't have come into existence. The article makes it seem like the author is somewhat against specs, so I find this rather ironic.
JSPs and Servlets, with or without EJBs, can be (and are) used for web-based user interfaces on the Internet, although on their own they suffer scalability problems for concurrent access by many users and for speed of prototyping and developement of new features.
They are, however, pretty orthogonal to AJAX since they are server-side technologies. Both an Javascript controlled asynchronous HTTP request comming from a browser and a user triggered browser HTTP request look exactly the same to both JSPs and Servlets - they're just another HTTP request (HTTP/1.1 GET
Saying that J2EE should be more like AJAX is like saying that PHP should be more like AJAX or that CGI-scripts should be more like AJAX - complete nonsense!!!
Having better architectural support in J2EE for AJAX (for example, for being able to access a server-side business function in Javascript from the browser just as easilly as you can do it from the JSP layer) would be a good thing. However the groundwork need to support this on the server (J2EE) side is already done (it's called Web Services), and thus the biggest part of the work still needed to seamless provide the Javascript/AJAX code running on the browser with access to such remotely hosted business functions is
Just as a reminder, AJAX is the kludge it is because there's so very little standardized functionality in the browser to allow dynamic, localized refreshing on a page of information which is externally hosted.
To wrap things up: server-side support is there already in J2EE that provides, via HTTP, seamless access to business functions hosted in a J2EE server. Whether the requester is a piece of AJAXified-Javascript running on a browser or a batch C application makes no different. As usual, most of the necessary stuff missing, is missing from the browser.
To the writter of the article: Server-side technologies are mature already, AJAX is far from it. Stop demanding that servers are adjusted to serve a single client implementation methodology. If you really want an architecturally sound solution, get up from your fat ass and start coding a Web Services client in Javascript.
Reading through the comments shows a number of competing needs. It got me to thinking about who exactly is asking for the various technologies. This is what I'm seeing.
Notice the users haven't been mentioned in the last couple of entries. Developers and system folks have been playing with technologies, but the users have just been taking it. Now users are flexing their muscles again and they want to go back to the days of responsive, more easy to use applications.
So what do we do? We take the technologies we have all become very familiar with and try to force it to meet these needs. Unfortunately the technology was never really intended for this usage.
All of this leads to my question, Who really wants what? Well, as I see it
File under 'M' for 'Manic ranting'
Thank you for providing so very rapidly an example of correct Java community behaviour in response to a possible question mark about VM portability.
The problem is simply that Java devs have focussed on bytecode portability throughout the years and totally forgotten about JVM portability. As a result, it's nigh-on impossible to port the JVM, and even once ported laboriously by an outfit like IBM or Blackdown, installation into environments that depart from the tested cases seems to be totally undefined and speculative.
In principle, the JVM could have been written in pure ANSI C with zero system dependencies that cannot be handled by autoconfiguration, and thus would have run truly everywhere. But sadly, that became impossible as soon as the designers decided to throw everything and the kitchen sink in there. We're shackled with the consequences of that now, and it can't change.
What would really take off is a web-based version of VB 6.0 or Delphi. I don't mean the language, but the IDE. People want to drag and drop widgets onto the screen and then set attributes and fill in events by right-clicking and editing Property grids.
People are used to the VB way and generally liked it. Regardless of your impression of it, it is what the market wants. (Remember, VB targeted custom apps, not mass-produced boxed apps.)
And one would be able to add plugins as needed. In the web case, it would download them from the supplier. That way we could get edit grids and tree browsers etc. without waiting for each vendor to incorporate them into their web browser.
One complaint about the VB approach is that it did not allow window resizing for bigger monitors. However, for most screens this was not a problem. Custom apps usually don't have as many options as commercial apps. Further, it is possible to make "stretch zones" whereby coordinate gaps can open up so that designated widgets could fill the area. One does not have to completely abandon coordinate-based IDE's to get scaling.
Table-ized A.I.
Thanks man. I was beginning to wonder if anybody posting comments had ever even used both technologies. It is kind of like comparing a mixer to an oven or some such nonsense.
Just look at JSF, where some components use AJAX. JSF is certainly the web framework used in many J2EE applications.
Seriously, what a crappy platform-fanboy article. And JEE is hardly one to talk about interoperability: can you mix ADF, Tomahawk, Icefaces, and Ajax4JSF components? I could probably mix dojo and prototype faster than that -- at least they won't give me a several-hundred line NullPointerException traceback because the FwibbleManagerFactory requires initialization of the BoffwizComponentFactoryManagerFactoryConfiguration FactoryManager before the FrobnitViewInitializerFactoryManagerFactoryCompone ntManager but that only happens when "dontbreak=false" is set in Undocumented.xml (because when using those components, false is true).
I actually use JEE, and while it's great for stuff like declarative transaction demarcation (meanwhile roles are ok, but an awful primitive kludge), when you start mixing things, it's a bigger nightmare than any AJAX code. At least you can watch the HTTP traffic with Ajax.
Done with slashdot, done with nerds, getting a life.
And just so you know, my objection isn't so much that you want to argue... I like to argue too. My objection is to your claim that you _don't_ want to argue when all evidence exists to the contrary.
And also note that this has nothing to do with Java, yet you somehow seem to want to connect what I said to it. So who's the one who's obsessed with the programming language, exactly?
(mod -1 troll)
File under 'M' for 'Manic ranting'
Normally I don't respond to Anonymous Cowards, because I don't like talking to shadows. It's also highly likely that one is wasting their time, since ACs can't get email about responses. If you want to be taken seriously, then post with an ID.
As to your argument, I haven't run into the extreme portability problems you have. Java mostly works ok on the platforms I use (Linux and Windows). Lord knows I've had just as much trouble with non-portable Perl code on Windows as I've had with Java across platforms. I'll take coding in Java over C any day.
People are still missing the point the article was trying to make (or haven't even read / understood it).
The situation is this:
* On one hand JEE describes a set of patterns and best practices Java web applications should be architected with
* Additionally, JEE also prescribes the implementation of these patterns JEE developers should use (Session Beans, Entity Beans, etc.)
The fact is that when developing JEE applications, on a technical level developers can choose to completely ignore some of these JCP technologies and implement the JEE patterns using perfectly fine, capable and even superior alternatives, such as Hibernate and Spring.
So the point the article's author was trying to make was that just as AJAX describes a set of patterns for developing web applications, while the developer chooses the implementation he prefers (JSON, DWR, frameworks such as Dojo, YUI, whatever...), JEE could benefit from "officially" allowing developers to freely choose whatever implementation of those patterns they saw fit (such as using Spring and Hibernate instead of the JCP-sanctioned Session Beans and Entity Beans respectively), instead of trying to force them to use the standard ones.
That's how he was comparing JEE and AJAX and how he was hoping things could be similar - nothing to do with comparing "apples and oranges".
Personally, I've been using Spring and Hibernate in my JEE projects instead of the official implementations for some time now, and seeing the advantages and innovations these have put on the table, I have agree with his point.
Don't bother. He expends a lot of bits on hot-button words like "lies" and "worthless" but provides absolutely no specific examples. He's not even a very good troll, having overplayed the style with very little subtlety.
Real Java trolls exploit divisions by pointing out areas where the language actually sucks (of which there are many), not on vague but fiery polemics.
What's wrong with a UI architect? How else do you keep all of the coders disciplined? At my company, all changes to the UI have to be reviewed by the UI architect. I'd hate to see the result of an application written by many programmers if there is no one in charge of enforcing UI uniformity.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
If this guy had even bothered to look online at what AJAX is today, he'd realize that there are frameworks such as Echo2 http://www.nextapp.com/platform/echo2/echo/ that make writing AJAX applications no more complicated than writing Swing apps.
AJAX is happening because there's nobody willing to take the lead in Web 2.0.
AJAX is not a techology, or even a group of technologies- The only thing all AJAX 'implementations' have in common is JavaScript, and that has been around forever. AJAX is at best a loosely defined conceptual approach to building a web site. At least the guy writing this article gets that. The guy he is responding to has a bit of a clue (although not too much, or he might have realized how absurd the statement that "Java needs to be more like AJAX" sounds), but this line almost made me laugh out loud: "The only thing AJAX is are a set of extremely important best practices and patterns developers use to create compelling web clients." But too often it seems that people try to refer to AJAX as though it is a specific technology. Even these two, who generally get the point, seem to present their statements in that light at times. I think that the poster above summed it up well when he said "Comparing Java and AJAX is like comparing apples and blue." The more I see people talk about it, the more it confirms my long held belief that the AJAX name was both invented and promoted by consultants who needed a new buzzword to make selling websites "cool" again.
And while this guy seems to generally know what he's talking about, I have to take exception to several items in his list of AJAX shortcomings.
- AJAX is hard.
Yes and no. Any new technology is hard when you are coming from a different background. How long does it take people to become proficient in working with a relational database (obviously a long time, as Java developers seem to have been working for years to try and sweep that particular detail further and further under the rug) How long does it take a client-server C++ developer to be good at even fairly basic web development tasks. If you have been working with AJAX for long enough that you have the right mindset, it's not that much harder than any other kind of software development. If you take a roomful of experienced web developers and expect them to be good at AJAX overnight, you're going to be about as disappointed as you would be if you took a room full of experienced VB developers and expect them to learn J2EE overnight.
- fragmented browser support
Again, yes and no. While the situation was really bad several years ago, when IE 6 was new, Mozilla was floundering, and JavaScript/DOM support in Opera was still in it's infancy, these days it is not so much of a problem any more. While there are a few differences in the event models between browsers, those are rather trivially surmounted (if you are willing to pretend that there is no such thing as event capturing, which depresses me slightly). For the last 2 years, almost every one of my browser specific issues has been CSS related, and while that is definitely a big problem, it is certainly not limited to AJAX.
- The difficulty of finding and hiring Ajax developers
He cites two different engineers as saying that about one in 40 engineers is qualified to learn AJAX. That in itself is not so much of a surprise to me as the expectation that it would be substantially higher. What percentage of engineers would be qualified to learn VHDL synthesis? Multithreaded client-server application design? Database administration? I suppose that if you are in the habit of hiring OOP programmer monkeys to fill in the blanks in your UML diagrams that number might seem absurdly low to you (I don't know if that's what the majority of Java programming jobs are, but that's certainly the impression that I've gotten from some of the places I've interviewed at) but I'd say that to find any 'engineer' in the computer field that's qualified to do any more than basic monkey work you're already looking at about one in ten. It's only going to get lower from there when you start adding specific skill sets.
- businesses can not afford it. They can not hire a team of experts to find workaround for dozens of serious problems browsers/JavaScript introduce
My business can. We have about 35 web
If I don't put anything here, will anyone recognize me anymore?
You have to remember that the only other language he's programmed in is Visual Basic.
JavaScript _should_ be multithreaded in the browser.
The interpreter core appears to allow for threadsafe contexts (last time I checked out Spidermonkey) but what hasn't happened is someone creating a wrapper/hook around pthreads (or whatever) to allow for spawning new contexts and syncronization between threads.
I really think this needs to happen very soon. It's already a pain working around the blocking nature of event handling in the current implementations of JS.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
I never knew there was a requirement for Ajax to interface with J2EE on the server!
And here I am using Perl and Ruby like an idiot.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
Why would anything be wrong with a UI architect? It's the position I more-or-less created for myself where I work and I do more or less what you describe (and a number of other jobs, besides). I just don't have a lot of experience with AJAX and nearly none with Java.
Just a few minutes ago, Firefox crashed on my Linux box. I had noticed something was slowing things down. Anyway I run top, and what do I see... java_vm 99.9% CPU, with a few CPU hours tacked on it.
I wish I could say that was an isolated incident, but it isn't. It happens all the time.
I've had enough abrasive sigs. Kittens are cute and fuzzy.
Really just a comment to mark the article so I can find it later.
But while I'm at it, in case anyone ever bothers to read this...
I agree with those that say the question/argument is complete nonsense. Ajax is a display layer technology. J2EE is a giant stack of server side stuff and some display layer stuff. To use MVC: Ajax is all V, J2EE is MVC. Now, would it be spiffy to have some "standard" Ajax framework to interact with J2EE apps? Sure.
- Jasen.
> the designers decided to throw everything and the kitchen sink in there
You mean, like a JIT compiler? The one thing that makes Java perform acceptably well, and is necessarily system dependent? Or maybe the Java libraries, without which the language is useless, and which also necessarily have system dependent parts..
The JVM is not just an application - it is a mediator between the OS and the virtualized API Java apps see, so the bottom layers have to be ported and cannot be generic.