Thursday, February 2, 2012

The future smells like JavaScript

Of course I am only repeating what others are preaching about the recent rise of JavaScript.

But I think the movement is significant and can't be overstated. And recent developments are really even making it more and more interesting.

Nobody can deny hat JavaScript is the de facto programming language of Html5. Every other language trying to bolt itself onto Html5 looks like pure friction so far. And Html5 is looking upon a prospering future.

Today we are used to some established JavaScript frameworks that make working with JavaScript more fun and productive. jQuery seems to emerge as the clear leader by popularity here.

More recently tons of javascript application frameworks (so called MVC frameworks) are emerging, that facilitate programming complex applications inside the browser and taking most of the traditional presentation-logic away from the server.

On the other hand we have the node.js ecosystem that takes JavaScript to the server and allows us to use the same language, concepts, libraries and tools for the full application development stack.
And that ecosystem is thriving! JavaScript is the most popular langage on GitHub ... and have a look at the impressive node modules list.

Now this is all well and alpha-geeky, but there are showing up the first "real-world" success stories: Voxer, Walmart, LinkedIn ...

Of course there are the critics.

Surprisingly Microsoft recently positioned itself to become one of the most influencing conveyor of the JavaScript hype. It seems that they are investing heavily into JavaScript on different frontiers:

Microsoft was pushing node.js onto the the Windows environment.
Now they are pushing it into their Azure cloud platform. And evolving a 3rd party ecosystem around that.

But probably the biggest step for the future of JavaScript is the new strategy of Microsoft for Windows 8 desktop and tablet applications (Metro style apps). While there are several options for developing Metro style apps, JavaScript seems to become a major pillar.
This move opens up yet another area for JavaScript and JavaScript developers, completely adjacent to the web.
Developing for the desktop (or tablet) will most likely always be pretty different than for the web. For Metro style apps there will be a lot of new concepts, libraries and tools that are different to the ones that are used in web development (just have a look at WinRT, WinJS ...).
But the desktop- and the web-stack will move closer together and JavaScript with HTML5 and CSS will be the common denominator. Which I think is a very interesting evolution.
For instance look at this example of a drum sequencer (a traditional client application) that is using JavaScript and jQuery for its UI.
The prospect of reusing code and knowhow between desktop-ui- and web-ui-programming seems tempting ... even if a lot of .NET developers and other gurus are not so thrilled by the prospect of omnipresent JavaScript.

Of course another interesting thing will be to see how Metro style apps will change the architecture of future desktop applications. I think some concepts from web development will get adopted into desktop development. A stricter enforcement of separation between UI- and backend-components within a single application will most probably be a result (i.e. there seems to be no notion of traditional data-access in WinRT).

PS: This is my first cross-post between my blog and planetgeek.ch. Thanks @danielmarbach for inviting me.


3 comments:

  1. Right on! Since the future is Artificial Intelligence (AI), and AI both in English and in Russian is coded in JavaScript, the future does indeed belong to JavaScript.

    ReplyDelete
  2. Honestly? Everyone is just realizing that javascript is a defacto language for UI implementation. It's the only ubiquitous means of manipulating and effecting the DOM, and has been for almost 20 years.

    The catch to expanding javascript's scope is entirely related to javascript's inherent limitations. No matter how you slice it, JS is single threaded and universally sandboxed. It's also 100% exposed to the user in a way that is bone-headed to access, making it less than desirable for secure operations. I won't really get into node.js, but at this point it's mostly a novelty and is likely to remain such, hopefully indefinitely because it's a nightmare waiting to happen thanks to misinformation like what blocking calls actually are and the fact that it can spawn new operations as child threads easily at the behest of people who don't know mutex from ninja turtles.

    Other weaknesses that will continue to plague JS are things like type safety (or lack thereof), differing implementations, dodgy syntax and its only pseudo-polymorphic nature. In the end, javascript is a means of empowering your common web developer or artist to perform what are generally tasks reserved for developers. The downside to that is it's always going to be limited to the small subset of functionality provided by its container/browser, as opposed to having access to a larger and extensible set of functionality exposed by the full operating system.

    To summarize, it's already taken off, it's already acheived synergy, it's going to continue to grow, but it's an evolutionary leap backwards in terms of being a full language for application development, readability-wise or otherwise.

    ReplyDelete
  3. You linked to a critic, almost as a dig. Thoughts on his concerns?

    ReplyDelete

Related Posts Plugin for WordPress, Blogger...