Slashdot Log In
AJAX Buzzword Reinvigorates Javascript
Posted by
CmdrTaco
on Tue May 24, 2005 11:18 AM
from the scripting-is-cool-again-now dept.
from the scripting-is-cool-again-now dept.
samuel4242 writes "Javascript may have been with us since the beginning of the browser, but it's going through a renaissance as companies like Google create Javascript-enabled tools like Google Maps . There's even a nice, newly coined acronym , AJAX for "Asynchronous Javascript and XML". A nice survey article from Infoworld interviews Javascript creator, Brendan Eich, who says that this is what he and Marc Andreessen planned from the beginning. Perhaps AJAX will finally deliver what Java promised. Perhaps it will really provide a solid way to distribute software seamlessly."
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
AJAX also good for... (Score:5, Funny)
cleaning toilet
getting first post
Re:AJAX also good for... (Score:5, Informative)
Seriously, being someone who actually has quite a bit of *real* experience with Ajax (though we were doing it before the term was coined) across multiple browsers, I can say that the ratio of comments which demonstrate the author understands the full implications of Ajax to those who are just spouting nonsense is about 1:75. I've never read an article on Slashdot before where so many comments missed the target, and I feel like I've been around Slashdot for a little while.
The idea behind Ajax *does* revolutionize the web paradigm. All this nonsense about cross browser compatability issues is just that: nonsense; it works in Mozilla, Firefox, IE, Opera, and Konqueror each on their respective available platforms. I've actually heard people talking about "Ajax enabled advertisements instead of Flash." Other gems like "Ajax doesn't do anything that a well programmed web application can't do," and "It's just needlessly complex web pages" only point to users who fail to grasp the fundamental concept.
Let me tell you: Ajax is FAST. You don't realize how unresponsive web pages are until you get to play with a web app that is always waiting on you, no the other way around. When I submit information, why do I need to wait for that information to get to the server before I can begin to perform another operation if that operation isn't dependant on the previous? Click Add To Cart then *immediately* start searching for the next item. Stuff like that.
The amount of data being exchanged is far less (if you do it RIGHT, you people who are talking about using the XMLHttpRequest.responseText property, this does NOT include you). Rather than reload an entire page with all the framework, you're loading only the portion of the page that changed.
Aside from piecemeal page loading, you also get to load only the relevant data. For example, rather than load a form, and all the form formatting to make the text fields line up correctly, and all the validation code to validate that form, you load a series of XML tags that contain only the basic information needed to tell the client how to lay out the form. The client takes care of generating the HTML for the form, and your form data looks more like this:
<input name="username" label="User Name" required="yes" minlength="5" maxlength="10"/>
versus
<tr class="lightRow"><td class="labelColumn"><label for="username">User Name:</label></td><td class="inputColumn"><input id="username" name="username" maxlength="10"></td></tr>
, then later form validation code.
Often times your data fits inside a single TCP packet.
I'll make this concession: yes, this is stuff that could be done before the Ajax philosophy using Flash or Java Applets. But both require a plugin, and one of them is even proprietary. Both have potential firewall issues, and neither will run on a vanilla Fedora Core build. Both require higher resource consumption for the user, and both lend to a feeling of sluggishness on the site for the user.
That's not to say that it's not without its dangers. Like all web apps, you can't trust the data from the client. Here the client gets a bit lower level access to the data. You still have to make sure that you're protecting yourself well against data poisoning attacks.
The thing I like most about this model though is this: It's truly a MVC (Model View Controller) framework.
The model is of course your server side logic scripts. The View is the browser (the server side logic scripts send back generically formatted data, the browser does all the display). The Controller is the combination of XMLHttpRequest object, and the processing management script on the server. It's very conceivable that you could write a new front end for your application by simply
Parent
Re:AJAX will also kick your ass (Score:5, Informative)
It's worth the price just for the $() function, which does a document.getElementById() on the argument
Parent
Rewriting history? (Score:5, Informative)
Huh? I don't seem to remember seeing it until about '96 or '97. That's just a wee bit later than the beginning of the browser...
Re:Rewriting history? (Score:3, Informative)
Re:Rewriting history? (Score:5, Informative)
But in Netscape 2, there were not very many hooks from JavaScript back into the HTML. You had a document object and a window object of course, but beyond that about the only "DHTML" you could do was mostly restricted to manipulating form values and popping open new windows. Useful, to be sure, but that was about it.
In Netscape 3 they added the document.images array, and that began the whole image-swapping madness that got everyone hooked on JavaScript, for better or worse.
And then in NS4/MSIE4 they added the competing, incompatible DOMs that got us into the hell years of DHTML. DHTML as a term arrived with the version 4 browsers.
Give JavaScript some credit for surviving its own history... the language has been through some very rough years, only to now finally get some credit for being a powerful web tool.
Parent
Correct me if i'm wrong but... (Score:3, Insightful)
Go ahead and mod me as flamebait.
Re:Correct me if i'm wrong but... (Score:4, Informative)
Parent
Re:Correct me if i'm wrong but... (Score:5, Informative)
Parent
Re:Correct me if i'm wrong but... (Score:3, Interesting)
AJAX Won't Deliver... (Score:4, Insightful)
Unless standards are complied with fully there can never be "one programming language" for web scripting. Anyone who's had to debug Javascript in IE that works in Firefox knows this.
Re:AJAX Won't Deliver... (Score:4, Informative)
AJAX's fate does not rest on all browsers being in full compliance to the standards, it rests more on the implementation of AJAX components. You can read more about my view on this on my blog [64.233.167.104].
Parent
Re:AJAX Won't Deliver... (Score:3, Interesting)
http://www.cslacker.com/ [cslacker.com]
works fine in IE, Firefox and Safari.. but IE's retarded CSS handling makes things dicey..
Standardization: Flash, Java, AJAX (Score:4, Informative)
One way is AJAX. To make it work well, you essentially have to write a version of the page for each major browser - which is a lot of work. Of course, there are development tools that make this substantially easier. It is by far the most seamlessly integrated with the BROWSING experience, but is less suited than Flash or Java for real applications - like a game or any other datadriven mouse-interactive thing. I don't believe there is no OOP Javascript in a browser.
Another way is Java applets. Java has the advantage that lots of programmers learn it to do nonapplet Java work. The big disadvantage is that a big part of the installed userbase has broken M$ Java engines, and it's generally impossible to install a Java engine without computer-admin privs (as opposed to "browser admin" privs)
The final way is Flash MX 2004 or Flex. Like Java applets, it is a fully featured OOP programming language (Actionscript) It expects to deal with server information, and can innately request data from mostly-arbitrary SOAP Web Services. It also works innately on OSX, Windows and i386 Linux in most all browsers and on a variety of small devices. It doesn't work on more obscure platforms, however, and it's not OSS so it can't be ported by just anybody.
Summary: If you want to a supercharged browser experience, use AJAX. If you want an application that "just happens" to be projected over the web, use Flash.
Parent
Re:AJAX Won't Deliver... (Score:3, Interesting)
IE was around for a long time and the FF developers explicitly decided not to support nonstandard features that not just IE but tens of thousands of websites were using.
The standards jihad has held back the Mozilla project big time. Why not just display a "non compliant code" icon on the status bar somewhere... even display a security risk popup.
There was "one programming language" for web scripting back when MS had 95+% of the browser mar
Re:AJAX Won't Deliver... (Score:3, Insightful)
this is good, and here's more material (Score:5, Informative)
For me, the crux of the usefulness and eventual adoption and finally complete embracing of AJAX lies in the article's paragraph:
I've seen what Google has done with AJAX (e.g., Google suggest), and it's stuff I never imagined could be so repsonsive in a web context. For me it starts to make programming fun again, and web programming an acceptable form of application development.
When browsers and web first emerged I could see the writing on the wall, but I wasn't happy about it. Browser application writing from the programming perspective was probably the single most giant leap backwards in technology for me (not including technologies introduced by Microsoft)....: you mean, all the years I've spent honing skills writing applications no longer apply? You mean I no longer have "state" as a tool for maintaining sanity in my application???? Hwaahhh??? I have to do what to change the web page???
While there have been some technologies (ASP, JSP, etc) to help with these issues, none have addressed the responsiveness issue with the web page round trip message loop. AJAX comes close. Now all I have to do is learn it.
For a great example of the responsive nature of this (I've referenced this before), go to Google Personal Home [google.com], set up your own home page, and play... Configure your modules by dragging them around... open and close your g-mail previews. This all starts looking alot like programs actually running locally on your own machine. (I'm assuming all are familiar with and have played similarly with Google Maps [google.com].)
Additionally, here are some very good resources to learn more about AJAX:
That's it, I'm done.
Yeah, But... (Score:5, Insightful)
That being said, this does look like the least annoying of a lot of really annoying hacks to attempt to shoehorn stateful programming into an inherently stateless paradigm. Personally I think we should be rethinking the underlying infrastructure before we build too much on top of it.
Parent
Re:Yeah, But... (Score:4, Insightful)
Also, emulating stateful-ness over the web is being handled at a much lower level than the browser these days, and to good effect. See Tapestry [apache.org].
Parent
Java (Score:5, Insightful)
I have been programming primarily in Java since 97, and if you ask me, it's just *starting* to pick up steam.
The language itself is just becoming mature - with big strides (generics, etc) in Java 1.5. And only now are we seeing alternate implementations to Suns, with GNU Classpath approaching a million lines of code, and GCJ compiled applications shipping in Fedora Core 4. Java applications such as Eclipse are also just starting to become popular, and Java API's for things like GNOME are just appearing on the horizon.
So quit calling Java dead
Re:Java (Score:3, Informative)
Okay, fine.
Java applets embedded in webpages are dead.
But on the other hand, J2EE is heading towards becoming the de facto standard language for server-side web development, as is J2ME for handheld development.
On the whole, Java is alive and well.
Re:Java (Score:3, Insightful)
Big strides? How is a broken design and implementation of a feature become a big stride? Generics in Java 2 version 5.0 version 1.5 suck big time. The implementation does NOT guarantee type-safety. It DOESN'T eliminate casts, they are still being done, with a processing cost, it's just syntactic sugar.
To try to somewhat fix this horrible implementation, they did autoboxing, a.k.a the worst feature in C#. You would t
Gah (Score:3, Insightful)
All "AJAX" is going to do is sell a bunch more four-color glossies to those IT types with more stars in their eyes than substance in their heads. It's just another vaguely-defined acronym with a catchy ring to it.
For anybody who actually writes code, things like Google Maps are simply a happy marriage of time-honored techniques and modern browser tricks. They're cool, they're novel, they're useful, they're quite well-written, and they're letting us do things in the browser that used to require plugins--but there's nothing terribly eye-popping about the techniques themselves.
Open up AJAX (Score:5, Insightful)
That being said, everyone should look at http://www.sourcelabs.com/ajb/ [sourcelabs.com]AJAX Mistakes. There's also a nice list being compiled at http://www.openajax.net/ [openajax.net]OpenAJAX
WANTED - AJAX DEVELOPER (Score:5, Funny)
* Excellent Package
* London, Engliand Offices
Requirements -
* 5 years of writing AJAX apps for enterprise clients
* 5-10 years
* At least 15 years Linux experience
Call now or apply online by clicking here! [monster.com]
I've been seing this pop up on job postings (Score:3, Insightful)
On the other hand, if they're looking at people who can architect something like Google maps, well, they're going to have to wait until the frameworks catch up. I've got my eye on Echo.
Are we sure it's the buzzword? (Score:5, Insightful)
I think maybe the slick apps like google maps is finally showing what good code CAN do, instead of the bloated bug ridden javascripting of yesterday.
Or maybe I'm just not transcending expectations by thinking outside of the box, and therefore my toolset isn't capable of brigding the information gap causing a chasm with my ability to think forwardly.
I'm struggling to identify which is worse: The day when we report that a buzzword has made progress, or the day a buzzword actually creates progress.
AJAX + JSON = Powerful combination (Score:5, Interesting)
Set your content type to "text/javascript" and you can send data over the network and have it be perfectly legal and ready to use. NO XML PARSING!
JSON (JSON.org [json.org]) just happens to be legal Python syntax... which makes me think...
hmmm.... Google has a huge server farm and is renowed for using Python... Google Maps talks client/server using Javascript, not xml... Python and Javascript shared JSON sytax for serializing objects... hmmm...
It is a very efficient combo: Python, Javascript, JSON, mod_python.
Ajax Q&A... the real one (Score:4, Funny)
And on a serious note: Who was the moron who made the onreadystatechange event handler? Why couldn't you just pass in a reference to the XmlHttpRequest object so people wouldn't be forced to use global variables to store the reference? Is that so hard?
Re:Ajax Q&A... the real one (Score:5, Informative)
Parent
Ajax mistakes (Score:5, Informative)
Reinvigorates? (Score:3, Funny)
AJAX is not the end all... (Score:5, Funny)
BLEACH (Bloatware + Leanware + Emacs + (x86) Assembly + C + Heroine) has been working wonders for my development. I usually start the day by shooting up in my office, then I start up all of the Office apps (bloatware) on my co-worker's PC to slwo him down. After that, I load up ACIDWARP.EXE (leanware. No DLLs, libs, nothing, jst one EXE and it's small for what it does) on my boss' PC which stuns him for a few hours so he can't keep track of what's going on in the office (usually play Purple Haze in the background). I then open up Emacs on my box and set to work redesigning everything (Screw WYSIWYG. It's overrated.) I also write a lot of my CGI in assembly language to keep the resource usage low and the code tight. C, when it's needed, which is almost never because of how well I can do things in assembly. And finally, another serving of heroine to keep the Jedi Mind tricks fresh. So far, this plan has worked so well, that I've been shuffled through about 70 different companies this year alone. My talents are in demand!
No Refreshes! (Score:3, Interesting)
Forget AJAX, here's JAH (Score:4, Interesting)
I made a JAH example [mac.com] to show how easy this is.
JAH stands for Just Async HTML
The Interview (Score:4, Funny)
Brendan: "Yeah... um, this is exactly what we envisioned! Awesome tools like what Google is doing with the maps thing, and the... uh... craigslist + Google maps thing! Yeah.. these companies are finally doing exactly what we had originally planned, so... just wait until they come up with--I mean finally catch on to our big picture and we'll let you know what else we had envisioned! You'll just have to wait and see what we take credit fo--I mean, the other ideas of ours they catch on to!"
Re:Choosing language (Score:3, Insightful)
Re:Choosing language (Score:3, Interesting)
Or Java.
And a few niche browsers had alternatives (e.g. http://grail.sourceforge.net/ [sourceforge.net] allowed client-side Python scripts), but none of them ever got anything approaching critical mass.
Re:Choosing language (Score:3, Funny)
I've got an
Re:Slower than Java (Score:5, Insightful)
That's what you do each time you click on a link to go to a different web page within a site. With AJAX, you only get the data you need. It's not slow. Have you used Google Maps? GMail? That's what's going on behind the scenes, and it makes the experience far better.
Parent
Re:Slower than Java (Score:4, Insightful)
It's got some other potential uses I've been investigating as well. Brings back the whole HTML-based video game idea, now that you don't have to refresh the entire page to change one variable to something useful...
Parent
Ajax and Java deliver the same promise (Score:3, Insightful)
The "promise" of Java (write once, run anywhere) is exactly the same as Ajax. A big implmentation difference is in the runtime. Ajax's runtime is native to the browser; Java's runtime is not.
If what you need to do can be done with Ajax, then Ajax delivers on the promise, today. Java? Sure, it delivers big-time, if you can live with Web Start and deployin
Re:widget set - Try Konfabulator (Score:3, Interesting)
With Konfabulator, you can build cross-platform (no Linux yet) desktop widgets (similar to OSX Dashboard widgets, but more functional), using XML and Javascript. You can define the different components of your widget in XML, and then write the event handlers in Javascript. Optionally, you can have Javascript dynamcially create the components in the onLoad event handler. It uses the Spidermonkey Jav
Re:widget set (Score:4, Informative)
Parent
Re:widget set (Score:4, Insightful)
Parent
...why? (Score:4, Interesting)
Note, this doesn't stop the annoyance factor. Those stupid flash ads will eventually become those stupid AJAX ads, as SVG matures into something usable, and people code more SVG-AJAX apps. But we've still got some time.
Besides, AJAX could do some good. I could think of it as possible to build a quick and dirty AJAX application to check if the packages on a system are out of date (yes, re-inventing the wheel is bad, but if you're changing the whole framework, sometimes you have to). Or any of the other millions of applications Dashboard widgets are already doing today.
Parent
Re:Javascript? (Score:5, Informative)
Actually, Javascript is surprisingly robust. Probably you're referring the platform inconsistencies, which have long been a showstopper. But with recent versions of browsers supporting the javascript standard (ie. ECMAScript) increasingly well, a lot of the major wholes are closing, and you really can write cross-platform javascript with a minimal compatibility layer.
Javascript is not meant to be a large-scale programming language... it doesn't have strong-typing or other features that you want when developing million-line applications. However, it is still an extremely powerful language providing things like full object-orientation (everything is secretly descended from the window object), comprehensive hooks to HTML, functions as data, regular expressions, flexible data access (eg. objects as hashes), and robust event handling.
I used to think of javascript as a toy language, but when you get to down to it, it does what it needs to do very cleanly and efficiently without imposing unnecessary overhead on the programmer.
Parent
Re:Ruby on Rails and AJAX (Score:5, Informative)
Parent
Re:So what's the big deal? (Score:4, Interesting)
Here's a demo in a proper web page:
http://www.blakespot.com/xml.html [blakespot.com]
Good stuff.
blakespot
Parent
Re:MOD PARENT UP (Score:3, Insightful)
Oh, and "There is one thing for sure though... nothing will finally deliver what Java promised. It's dead Jim. JavaSCRIPT on the other hand..." So, you're saying Javascript on the other hand... may fill that promise? Like the summary says? =D Stop coming to Slashdot please.