I am trying to get myself acquainted with the world of rich web application. There are some comparison tables of available technologies on the Wikipedia, but I still find it unclear what are the options for rich application development.
Could you please verify and complete the information I gathered below? What are the key pros and cons of each option? Which is the best choice for big and very rich web application?
Option 1: ASP.NET/ASP.NET MVC
Vendor: Microsoft
Environment: Visual Studio
Language: C#
Output: HTML+JavaScript+AJAX
Example: www.stackoverflow.com
Option 2: Silverlight
Vendor: Microsoft
Environment: Visual Studio
Language: C#
Output: .NET executable?
Example: ?
Option 3: Google Web Toolkit
Vendor: Google
Environment: Eclipse
Language: Java
Output: HTML+JavaScript+AJAX
Example: http://www.projectkaiser.com:8080/pk/
Option 4: Flex
Vendor: Adobe
Environment: ?
Language: ?
Output: Flash (.swf file)
Example: http://listen.grooveshark.com/
Option 5: Adobe AIR
Vendor: Adobe
Environment: ?
Language: ?
Output: AIR
Example: http://www.colabolo.com/en/download.html
Option 5: Ruby on Rails
Vendor: Rails Core Team
Envirnoment: ?
Language: Ruby
Output: HTML+JavaScript+AJAX?
Example: ?
Option 6: Java Applets
Vendor: Sun
Environment: Eclipse
Language: Java
Output: Java Applet
Option 7: OpenLeszlo
Vendor: ?
Environment: ?
Language: ?
Output: ?
Example: ?
Option 8: Vexi
Vendor: Vexi core team
Environment: Eclipse
Language: XML + JavaScript
Output: Java
Example: Demo on http://vexi.sourceforge.net/
Option 9: Django
Vendor: Django core team
Environment: ?
Language: Python
Output: HTML + JavaScript + AJAX
Example: ?
Option 10: XUL
???
You have mixed it all up. You have two layers here : user interface which makes the app "rich", and server-side code.
Silverlight
Works best with .NET platform. I wouldn't consider to join it with Java, Ruby on Rails, PHP or something.
Tools are commercial.
Flash/Flex (Flash Platform)
My favorite and I think the most mature one from the list (I's my subjective opinion as I work as Flex/Java developer). Works with all server side technologies using simple Http service, WebService byt the best integration is by AMF services (efficent binary protocol). Integration is on different levels. Basic remote calls (it's enough for 90% projects) are availibe for all platforms (.NET, Java EE, PHP, RoR). but there are library for hi-level interation (data synchronization, data push, client-server events or even client-server depndency injection) for Java EE : Adobe Livecycle Data Services (commercial) or GraniteDS and Tide Framework (free, works wich JBoss Seam).
Flex SDK (compiler and lib) is free, but FlexBuilder is commercial.
OpenLaszlo
There are two options - live "compilation" to flash or html+javascript on OpenLaszlo server, or developement-time compilation to flash and upload to http server. Integrates with most server-side technologies. The idea is similiar to flex but was first.
SDK is free, IDE is rather poor.
JavaFX / Java Applet
It's rather experimental, graphical tools and IDE are poor. the idea is to declaratively (but not XML) code swing interface and run it as applet. I think id doesn't have production status.
Flash/Flex and Silverlight gives you the most advanced tools to create rich user experience interface with multimedia (video/audio streaming, usage of webcam, microphone etc).
Adobe AIR
AIR stands for Adobe Integrated Runtime which let's you run Flex or HTML+Javascript applications on your desktop (works similiar to java Virtual Machine + WebStart). For flex applications integrations with remote
systems are the same as above. AIR application is installed on client machine like and runs like any app. You have access to filesystem too. AIR runs on Windows, Mac and Linux/BSD too (I think).
Java
It is : Java EE 5 (now Java EE 6), or simple Web application without application container.
You can have some javascript based rich UI like Google Web Toolkit, JBoss RichFaces, IceFaces and some commercial stuff.
Integrates good with Flex interface with integration frameworks - Adobe LiveCycle ... (commercial), BlazeDS (simple, free), GraniteDS + Tide + Gravity (advanced, free) , WebOrb and others You can have application framework here : Spring (2 or 3), JBoss Seam and lots ...
.NET
I'm not an expert here. Gives you opportunities for JS rich interface. integrates with Silverlight and Flex (WebOrb, .NET and AMF).
There are lots of other technologies there. Some of them has their own rich UI's, some of them not. Most of them integrates with Flex
PHP
Rich UI with Prado application framework. There are some simpler PHP frameworks (ask google). Flex integration with AmfPHP, WebOrb, SabreAMF
Ruby on Rails
Language + Server + App framework. Can integrate with Flex
Python
There are some app frameworks : Django, Pylons... Can integrate with Flex
Scala + Lift
Lift is an app framework written in scala. Runs on java server.
Coldfusion
An Adobe technology. The language is CFML. Runs on Adobe Coldfusion server but tere is free Railo from JBoss. Integrates with Flex.