At Friam today we discussed the latest buzz about javascript and it's
renaissance in the computing world. Here are some notes folks asked
for.
Theme: Chrome, Firefox, Safari etc are building much more
sophisticated javascript implementations, including developer tools
for debugging and DOM (Document Object Model) browsing. The DOM is
the xml hierarchy internal to all web pages, and accessible by JS.
This sophistication, coupled with JS being the most widely deployed
language on the planet (in every browser and most phones too), is
building interest in JS as the most interesting programming
environment for a wide variety of uses.
Books: The recent book, JavaScript the Good Parts, has raised the
awareness of just how nifty a language JS is, including Closures and
Prototypal inheritance. JavaScript: The Definitive Guide, provides
the reference that coupled with the first book builds a complete
foundation for learning JS.
Architecture: JS is not only in the browser, it now is available
standalone as a desktop shell (Rhino, Spidermonkey, etc), letting you
try JS phrases easily. SSJS (Server Side JS) is blossoming too,
letting the same language be used on the client and server. This is
very important considering Rails (Ruby server, JS client) Django
(Python server, JS client) is confusing for most programmers. One on
both sides would be better, and with Rhino on the server, you can
access all of Java via the Rhino-Java bridge. To complete this, the
AJAX communication can also move from XML to JSON, the JavaScript
Object Notation .. just JS data structures. Thus the Web 2.0
complexity goes from (Ruby/Python/.. XML JS) to (JS JS JS).
Libraries: JS libraries are flourishing, new ones daily! There are JS
libraries for building AppleScript widgets. JS is the scripting
language for Flex, Flash, AIR, and a host of others. Prototype and
jQuery and others provide a base level library for browser
interoperability. Many visual libraries exist, even processing.js
which implements our popular Processing system. And here's the
sweetest part: the libraries are delivered as URLs! That's right, you
don't have to build a bundle including the libraries you plan to use.
Instead you include a URL reference in your HTML header or SSJS load
statements.
Frameworks: Rails, Django and other systems are now receiving
competition that are entirely in JS .. again blurring the difference
between client and server. JS even has optional templating which can
occur on either the server or client. Jaxer, from Aptana, moves this
even further: any DOM traversal can occur on the client or the
server! .. it keeps a full copy of the browser's environment on the
server side, using Firefox spidermonkey. Whew!
IDEs: Eclipse and Aptana Studio (build on eclipse) provide integrated
HTML,CSS,JS,DOM programming and debugging. Aptana Studio includes a
local Jaxer server as well. Jaxer is open source and can be deployed
on non-Aptana ISPs. Komodo and IDEA are for-pay systems that are also
liked by many. There are several Eclipse based plug-ins that are also
popular, a few for pay. The hard part is factoring HTML,CSS,JS,DOM
nicely.
Cloud: Aptana provides a scalable cloud site, including Jaxer and a
soon to be completed Rails-like framework called ActiveJS. Google App
Engine (GAE) supports Java now, including Rhino JS. A Google engineer
is working on Rhino on Rails! Helma is another JS/Rhino framework.
Trimpath/Junction is another Google code SSJS framework. Joyent
bought Reasonably Smart (GIT/JS Software as a Service) and they are
rolling out a JS/Cloud framework.
This is just the tip of the iceberg. I could go on about XMPP JSON
encapsulation, HTML canvas and SVG graphics, KML/GIS, JS Lint, JS
Pythonic extensions, PhoneGap, Axiom Stack, Lively Kernel, Google Docs
API, Google Maps, ... and more, but the point here is that I think the
JavaScript ecology is really interesting and worth looking into.
Although the technologies I mention may seem overwhelming, its just
the reverse. Its a single language and its methodology everywhere.
This is a vast simplification.
-- Owen
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org