Rich Internet App Development
If you've had the misfortune of mentioning AJAX in my presence, then you've heard me rant about the crappy user experience we are all willing to accept in the name of net connectness. This really is a lamentation about the state of Rich Internet Application Frameworks and my dislike for coding in Javascript. Well, it looks like there are more choices than I'd been aware of (the choice of google search terms makes all the difference). Still not what I'd hope, but at least its getting more digestible.Running in the Browser
Programming based on the AJAX technique has certainly done much to elevate the quality of web apps, but I still feel they are always just a pale facsimile of good old desktop apps. Even the best webapp UI is generally great "for a webapp". However lots of libraries are emerging, as are s number of widget sets, so that's definitely improving. While most toolkits let you extend them, you're always doing your server in one language and your custom UI in javascript.What I personally have hoped for was a VM in the browser that was addressable by a number of compilers creating bytecode. Everytime I see a platform that runs a VM underneath and doesn't let you address that VM directly, I feel like a great opportunity has been missed. Oddly, MS' CLR is the best example of a VM that lets you address it in virtually any language. They certainly didn't invent the concept but they've promoted it. I think Sun did a major disservice to itself and VMs in general when they married Java the language, the Virtual Machine and the Religion into a single marketing entity. I mean who even knows that there are lots of languages that can be used to target the JVM?
Compile to Javascript
A while ago I found a post by Brendan Eich talking about the future of the Mozilla VM and mentioned mono and the jvm as options. Yesterday, he posted about open web standards and I seized the opporunity to ask about bytecode addressability of JS2's VM. His answer about legal issues is likely a big reason why mono was abandoned as an option:"there won't be a standard bytecode, on account of at least (a) too much patent encrustation and (b) overt differences in VM architectures. We might standardize binary AST syntax for ES4 in a later, smaller ECMA spec -- I'm in favor."But as he also pointed out there is always compiling to Javascript instead of bytecode. The options he and another poster mentioned were:
Of the three I initially liked the Morfik approach the best, but doing a bit more research, they seem to be well on the path of propagating the same patent issues that Brendan Eich attributes the lack of standard VMs to. Pity.
Looking around for Javascript compiler's I noticed that this approach is also under development at MS as Script# although it hasn't yet moved up to an official MS project. Interestingly this does pit MS vs. Google once again, framed in a C# vs. Java context with ASP.NET AJAX w/ Script# and GWT. And if there's anything that's just as great for innovation as open standards, in my opinion, it's competition between giants. I look forward to seeing them try to outdo each other.
Looking forward to Rich Apps
So far, we're stuck in the browser, and even with tabs, I sure hope this isn't the future of applications. If we are to move beyond browser, what are our options?Apollo
Clearly, Adobe is leading the RIA platform wars with Flash and with Flex, SWF certainly looks more like a platform than an animation tool forced to render User Interfaces. And Apollo certainly looks to push Flash as a platform as well as making it a stand-alone app platform. I certainly think this is going to be the juggernaut to beat. Given my dislike for the syntax of (Java|Ecma|Action)Script, it's unlikely to be my platform of choice. And i don't see a Adobe supporting cross-language compilation and support for Eclipse or Visual Studio at the expense of their Dev suite.WPF
I really like the concept of WPF. It's philosophy is what I want the future to look like. Mark-up and code separate, common runtime addressable in many languages on client and server, well developed communications framework. Ah, it warms my heart.But, a) it's closed, b) it's only Windows (i'll get to WPF/E in a sec) and c) boy, is it over-architected. Now, it's at 1.0 release and if there's anything about MS releases, they seldomly get it right in 1.0. We'll see what 2.0 looks like.
WPF/E looks like a combination of simplifying WPF (is this 2.0?) and going after Adobe. And with Script# and recent admissions of some type of CLR on Mac for WPF/E, we're looking at a trojan horse to get Rich Internnet Application Development in .NET established in both the browser and the desktop across platforms. Unfortunately, "across platforms" for MS still means Windows and Mac, while Adobe's Flash 9 has demonstrated their dedication to encompass the linux sphere as well. I don't think that's going to change... I just don't see MS going to linux with the CLR and I find the likelyhood of them leveraging mono's efforts just as unlikely. I wouldn't mind being wrong.
XUL & Canvas
This isn't a platform per se, but I've seen a lot of cool tech demo's using XUL and/or the canvas tag. Also looking at the work that Micheal Robertson's AJAX13 has done, I think there are the makings of a stand-alone app platform here. If your runtime requirements are "install firefox, but you don't even have to use it as your browser if you don't want to", that's a pretty small barrier for a platform that runs everywhere. Personally, I hope someone straps mono or the recently liberated jvm to XUL and builds a platform out of it (you'd get mature WS communication for free with either), because of all the options that looks the most appealing to me personally.There's got to be more
Considering that GWT and Script# had eluded my radar up until today, I'm sure there's even more options for RIA's out there. I just hope that people developing platforms take the multi language lessons of the legacy platforms to heart. All the successful OS's of the past offered developers many ways of getting things done. You looked at your task, picked the language that was the best fit to the task and your style of programming and you delivered your solution. VMs have shown that supporting many languages in an OS independent way is viable, so if you're building a platform now, why would you choose to mandate a language and programming model. I sure hope that the reason for not going this route isn't going to be "because the patent system is stopping me" -- that would be the ultimate crime of a system that was supposed to foster innovation.Labels: ajax, gwt, javascript, morfik, ria, script#, wpf, xaml, xul

3 Comments:
With Mozilla's XULRunner, you have a platform for running XUL-based applications on the desktop. Bindings for C++, JavaScript, Java and Python give you the flexibility to hook into many other libraries and the native OS. Worth a look.
I'm not sure why you are making the argument that (Morfik) "seem to be well on the path of propagating the same patent issues that Brendan Eich attributes the lack of standard VMs to. Pity."
Can you explain how this is any different than any of the other desktop-based development tools you use? v.net, Delphi, and the other desktop development environments aren't any more open, are they?
Since I've used the three tools that you mentioned, I will say that they do not appear to target the same audiences. GWT seems to be targeting hard-core Java developers who don't have a lot of screens to design. OpenLaszlo seems to be targeting those who are interested in the slick Flash runtime engine (but again, it doesn't seem to target folks who have a lot of forms work to do. Morfik seems to be targeting desktop application developers who are used to using a visual RAD tool.
Based on pricing, obviously Morfik is targeting corporate and professional developers, while OL and GWT are trying to cast a broader net.
The question, then becomes if you are concerned about using a patent-pending product. If you are, then you probably should steer away from Windows, the MacOS, and iPods, and most prescription drugs. I understand the desire that people have to go open-source, but at some point you also have to decide if you want to leverage the innovation that patents are protecting.
My complaint with Morfik has nothing to do with being closed, proprietary or commercial. Nor do I have complaints about their pricing. Charge whatever the market will bear, I say. I'm fine with all that.
My comment was referring to their stated intention to defend their patent claims to JST. I'm against all process patents, especially software patents, because the system is fraught with abuse. And especially with a useful concept like compiling another language to Javascript, attaching the spectre of patent litigation is stifling to the industry. There's nothing "non-obivious" to compiling one language to another. What's non-obvious is how to do it well. So why not just be satisfied with leading market by being the best in breed instead of claiming patents and preventing someone from trying to independently do it better? How does that foster innovation?
And yes, I use plenty of patent encumbered tools and I disagree that those tools are such encumbered. I'm not saying boycott Morfik, I just think it's a pity that they feel that in order to protect their investment, they have to go down the patent road.
Post a Comment
<< Home