DLG Software

Application development

  with JavaScript, Flex, and AIR

This makes a case for JavaScript applications development, noting how much it has improved in the past several years and its increasing use including new roles outside of the browser.

Why JavaScript applications?

JavaScript image

As noted on the home page, not so long ago JavaScript wasn't of much interest to application developers. For good reasons — for a long time browser-based JS-driven applications were slow and simple because the JavaScript engines of most browsers were slow and simple, not up to the job, couldn't deliver great UX. So for a long time JavaScript was used mostly for simple things like animation or client-side data validation. For a long time, too, tools available to JavaScript developers were immature and even crude compared to those available to C and Java developers. And of course for a long time developing cross-browser applications required wading into the swamp of browser inconsistencies (syntax and rendering differences, quirks mode, CSS prefixes, IE, etc.). Yuck. Result of all this? For a long time JavaScript applications development just wasn't a very attractive proposition.

Yet this landscape has changed a lot in the past several years. HTML5, CSS3, and JS ES5/ES6 delivered improvements in both standardization and functionality. Browsers got better, and libs like jQuery helped eliminate much of the remaining cross-browser pain. Especially important has been the improvement in JavaScript performance (e.g., Google's V8 engine).

There's also been an explosion of JavaScript development tools in recent years, things like Modernizr and Underscore and JSHint and Twitter Bootstrap. Quality architectural libs and frameworks are also now available, from light and flexible libs like Backbone to all-in-one frameworks like Ember and Angular. And deploying and optimizing your web applications has gotten easier with build tools like npm, Grunt, Gulp and Yeoman.

It's also worth noting that development with JavaScript has advantages over compiled languages — while you do lose the benefits of static typing and compilation you also do lose that compile step. That makes it easy to explore or test changes using REPL and livereload and great interactive developer tools such as Chrome's devtools and to play with live examples on sites like JSFiddle and Codepen.

This isn't to say developing JS-based applications is painless. For browser-based applications there's still the DOM to deal with. And while JavaScript is incredibly expressive it does have its peculiarities (vars scoped as global by default, no static typing, silent fails, etc.). Javascript ES6 solves a lot but is still only partially supported in browsers so we need to resort to transpilers like Babel. And, oddly, today's wealth of development options is becoming a burden — there are just too many choices, and even if you choose correctly JavaScript development today is moving so fast that today's solution is ready for a rewrite in just a few years (a few years ago how mahy people were talking about React? Isomorphic JS?).

While this site focuses on browser-based JS applications it's important to note that JavaScript has broken the bounds of the browser. On the server there's Node which brings up the possiblility of isomorphic JS applications that can render on either the server or the client, reducing code duplication and solving some inherent SPA problems like search crawling. And JavaScript is now being used to create out-of-browser cross-platform native apps through technologies like React Native, allowing you to deliver an application's functionality via a native app without needing seperate iOS and Android development teams. Obviously you want to avoid that if you can — bad enough to double your development work and end up with 2 codebases but these costs compound when you consider future development and maintenance (applying bug fixes, keeping the versions in sync as you release new features, etc.)

Bottom line here is that JavaScript development is one of the more interesting development spaces out there today. App development is interesting, sure, but if like me you hate the idea of locking yourself into one host platform, of writing applications that run on Android but not iOS or vice versa, then you should give today's JavaScript applications development a serious look.

For an overview of JavaScript applications with emphasis on single page applications (SPAs) see my primer Web applications Intro.

Flex/AIR certification logo


JavaScript appdev primers

General JavaScript

SPA Demo Application

Backbone Demo Application

Recommended sites


Flex/AIR primers

Flex demo apps

all require Flash Player!

AIR mobile dev


SAS Introduction