views:

580

answers:

4

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: Python?
???

Option 9: XUL
???

+5  A: 

You have mixed it all up. You have two layers here : user interface which makes the app "rich", and server-side code.

UI:

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, JEE, PHP, RoR). but there are library for hi-level interation (data synchronization, data push, client-server events or even client-server depndency injection) for JEE : 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).

Server Side:

Java
It is : JEE5 (now JEE6), 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, http://stackoverflow.com/questions/78477/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.

peperg
Tools for Silverlight are freely available.
Murph
A: 

Python has Django.

Amit Kumar
A: 

My five cents

ASP.NET - forget it. Obsolete past millenium technology.

Silverlight pros - very power commercial libraries available. If "wow" effect is a must then it is your choice, though you should spend some money to buy 3d parties software.

E.g. look at

sirius2 . intersoftpt . com

demos . telerik . com / silverlight / salesdashboard /

Silverlight cons: browser must have silverlight plugin installed, this plugin should be upgraded time-to-time when new silverlight version is released and used in your software , sometimes there is a problem upgrading this plugin. Also not sure that this plugin is fully available for *nux operating systems - so potentially you can stick to Windows.

GWT pros: no plugin needed, you develop using Java and Java is compiled into pure javascript. My favorite tool to build effective applications e.g. http://www.projectkaiser.com

GWT cons: poor GUI libraries ( even if we talk about commercial libraries )

Java Applets. You can look at pivot . apache . org

So my answer to "Which is the best choice for big and very rich web application" is Silverlight. Take care about cons though !

A: 

i am also looking at which technology to use i think theres 1 you may want to take a look at

Appcelerator Titanium - it allows you to develop for desktop and mobile platforms using web technologies like HTML5/CSS/JS and for desktop platform, even PHP/Python

still evaluating it too

also looking at RIA's (AIR, Silverlight, Titanium) vs Native Web Applications (PHP, ASP.NET MVC). RIA's are move powerful in the sense that it can interact with the file system and are generally faster since they exist locally. web applications cannot interact with the file system and are generally slower and has more latency involved. but since they exist on the web i can access it anywhere.

i actually wanted to settle with open web technologies like HTML5/CSS3/JS/PHP/Python but seriously considering .NET platform. C#/F#/WPF/Entity Framework/Silverlight and features of Windows 7 Overlay icons, progress bar, jump lists show a lot of potential. and the ability to use 1 framework a few languages for both web and desktop applications even RIA's is a great draw. i've also seen a lot of videos abt patterns and practices MS recommends the quality etc is fantastic it may be hard to learn at first but i think it will be worth it. the downside many will say even me is its closed source. tools generally more expensive

jiewmeng