Adobe AIR, Microsoft Silverlight, JavaFX and Mozilla Prism... What are your thoughts on this competition?
There are a lot of questions on S.O. about JavaFX vs. Silverlight vs. AIR, and now Prism is going to be released.
These are four different technologies with a si开发者_如何学Gomilar goal. I thought we could gather the main points -pros and cons- to consider one or the other in a community wiki question.
Try to keep the flaming level at its lowest possible, thanks.
Prism has the huge advantage of being based on a very familiar existing platform (the web), with a massive existing developer base and low barrier to entry. It is, however, constrained by said platform not originally being intended for applications development. (HTML5 promises a lot, but (excluding video) in reality offers little beyond features common to desktop APIs since the first Apple Mac.)
Silverlight has the advantage of being backed by Microsoft, with their huge development resources and ability to push the runtime onto 85%+ of the world's desktops if they wanted. It has the disadvantage of being backed by Microsoft, with all the political baggage that naturally follows.
JavaFX has the advantage of actually being engineered from the ground up as a dedicated and clean RIA solution, rather than cobbled together from existing languages and formats. It can also draw on the massive number of existing Java libraries. It has the disadvantage of being late to the game and requiring developers to learn a new way of coding GUIs.
AIR has the advantage of being able to utilise the existing Flash install base to push adoption of its runtime, and a relatively slight learning curve for the huge army of existing Flash developers wishing to move outside the web. Its disadvantage lies in its roots within the design/graphics community, meaning it has historically had limited adoption within 'serious' programming circles and (therefore) a miniscule number of supporting third party libraries and open source APIs.
In conclusion: Prism is cool if your application will never need to be more than a fancy web page, Silverlight is cool if you can put up with the paranoia surrounding Microsoft in some circles, JavaFX is cool if you don't mind learning a new DSL, and AIR is cool if your app will never need to do anything out of the norm.
Silverlight is different enough from AIR and from Prism that the comparison here could get very muddled. I'm not really qualified to speak on JavaFX, but I'm familiar enough with the other three to know that I wouldn't compare them directly.
Silverlight is a browser plugin with some very interesting capabilities that can come into play when its taken out of the browser. From a deployment side, a single app is developed, which can be run inside a webpage (always the default) or installed to the desktop, although applications that are designed for installation may be severely restricted (or potentially non-functional) until they are installed. Probably the best comparison is to the combination of Flash and AIR, with the advantage of offering a solution to applications that benefit from a more hybrid solution (the transition from web to desktop is a simple path for a consumer, who can try the application and then install it seamlessly for perhaps more functionality).
AIR is the desktop side of Adobe's development platform; the installed side of Flash. As Simon mentions, it has serious roots in the design community and is probably a very attractive solution for Flash developers looking to leverage their existing Actionscript knowledge and expand beyond the restrictions of an in-browser application. I've heard AIR referred to as a 'Twitter client platform', which is unfair in spirit (even if it is reflective of it's most common usage) , though it does point to the fact that data visualization is probably the biggest strength that AIR has. Silverlight does this as well, but also has more robust libraries for manipulating data, which is less simple (in my opinion) in Actionscript.
Prism is new, which gives it all of the advantages of promising things and all of the drawbacks of not having delivered them yet. Perhaps HTML5 will provide a superior way of handling everything that current browser plugins do, but this is not true as of now and it's hard to imagine anyone assuming that support on an application that they're planning to deploy today. Prism's strength is in taking existing web pages out of the browser, adding some functionality and losing the browser based restrictions, but it's still hard (if not impossible) to say what applications designed for Prism will offer. Simon's point about HTML5 is a good one; the base language was never designed for application development and it shows.
Personally, I'm a Silverlight developer, mostly because it made use of my existing knowledge of C# and the .net libraries. I've met AIR developers who are in the same boat, having come from Flash development. I would imagine that a serious HTML/CSS/Javascript developer might feel the same way about Prism and I think that the idea of learning a foreign language and a new set of libraries and a new platform is daunting enough (unless your intent is just to learn something completely new) that leveraging existing skills might be the simplest way to 'compare' these technologies and choose between them. Chances are, if you're a web developer and you need to get something done, you'll find that one of the four you listed feels more at home and there always seem to be workarounds for parts of the platform that are lacking. I've found that the easiest way to get new features on a platform is to claim they can't be done and wait to be proven wrong.
Silverlight or JavaFX, based only on the reasoning that these come from industry standard platforms.
精彩评论