With all the talk of AJAX, Atlas, JSON, and rich internet
applications these days, I felt I needed to get back to the basics after a few
years hiatus from active web development. Although I started out in this
industry (professionally) doing web development, for some time I have been more
focused on middle tier development.
Sure, I have still been creating web applications here and
there as well, but they have been mostly for corporations that were less
concerned with fancy user experience and certainly unconcerned with web
standards and the like. They (thankfully) just made it a requirement to use
recent versions of Internet Explorer, and that greatly simplifies concerns when
doing anything fancy on the client-side.
Well, things change, and I found myself feeling the need to
reacquaint myself with web development standards. These days that means JavaScript
which is the foundational client-side technology for the hot webby things like AJAX and the re-emergence of DHTML as a viable approach for rich clients on the web (thanks
largely to the immense popularity of Firefox).
I am still of the opinion that we should not be trying to do
rich user experience with the likes of JavaScript and HTML (or even XML and
XHTML). We are on the verge of tremendous user experiences that are being made
possible with WPF (like these) and they
could be hosted inside of the browser or be web deployed. Adobe just put out Flex 2, which is another great option
for great UI on the web. However, for some odd reason there is still this
fascination with JavaScript and HTML.
Who am I to stand in the way of *gress (I do not say
"progress" because I feel like we are standing still or going
backwards with this technology)? We can retrofit JavaScript to be more OO.
This is good, and this book will tell you all about OO JavaScript. You can
talk to servers, but as the author, Nicholas Zakas, points out, it is hard to
do this reliably from one browser to the next. Besides, what is the big deal
about it anyway? Yes, you can manipulate the BOM (Browser Object Model--a
term I'd not heard prior to reading this book) and DOM (Document Object Model), but I cannot shake the sense that we are
trying to use a hammer to do the job that tweezers can do.
In my opinion, it is quite maddening to think of all the
hugely intelligent people (at Microsoft and elsewhere) who are investing their
valuable brain power retrofitting these aged technologies. It is like a bad
episode of Pimp My Ride, the one where the guy's car
was actually two different cars welded together in the middle. Did they try to
pimp that? No. They got a new Scion xB and "pimped" it for him
instead. That is what we, as an industry, should be doing. But instead, we
are "pimping out" the welded junker.
Despite how maddening it is, it is a popular technology, the heavyweights are sadly tossing their weight into it, and the rest of us poor
schmucks have to go along with it. This is why I purchased this book--to gain
a much more foundational understanding of JavaScript as it stands today and
where it might be going in the future from an experienced web developer's
perspective.
This is precisely what this book is about and does, so I was
thrilled with it. Zakas does not waste a lot of time patronizing us. The bulk
of the book is a valuable insight into how to use JavaScript in a professional
way rather than in the odd one-off ways in which it has been so often used (by
myself and most others I know) in the past. If we have to do this, let us do
it the right way. He references valuable free libraries to help with common
tasks, and he does not spend a lot of time just focusing on the current hype of AJAX, though the core aspects of it are covered. Before you read any books on AJAX, you should read this.
All in all, I was pleased with the book. It was spot on in
what it said it wanted to deliver and what it actually did deliver. The only
thing I would have liked to see more of is using JavaScript for animation. He
has a chapter on drag-n-drop and one on sorting which were useful selections
that discuss how to achieve common scenarios. For the most part he stayed
within the bounds of cross-browser/platform functionality which, as I see it,
is the only reason to use an AJAX/DHTML app over something like ClickOnce,
WBA,
Flash, Flex, or Java Web Start. If you
are looking for a way to update your knowledge and get a foundational
understanding of the most popular web development technologies today, this book
is a good place to start.