J'essaie de me familiariser avec le monde des applications Web riches. Il existe des tableaux comparatifs des technologies disponibles sur Wikipedia, mais je ne vois toujours pas quelles sont les options pour un développement d'applications enrichi.
Pourriez-vous s'il vous plaît vérifier et compléter les informations que j'ai rassemblées ci-dessous? Quels sont les principaux avantages et inconvénients de chaque option? Quel est le meilleur choix pour une application Web volumineuse et très riche?
Option 1: ASP.NET/ASP.NET MVC
Vendeur: Microsoft
Environnement: Visual Studio
Langue: C #
Sortie: HTML + JavaScript + AJAX
Exemple: www.stackoverflow.com
Option 2: Silverlight
Vendeur: Microsoft
Environnement: Visual Studio
Langue: C #
Sortie: exécutable .NET?
Exemple: ?
Option 3: Google Web Toolkit
Vendeur: Google
Environnement: Eclipse
Langue: Java
Sortie: HTML + JavaScript + AJAX
Exemple: http://www.projectkaiser.com:8080/pk/
Option 4: Flex
Vendeur: Adobe
Environnement:?
La langue: ?
Sortie: Flash (fichier .swf)
Exemple: http://listen.grooveshark.com/
Option 5: Adobe AIR
Vendeur: Adobe
Environnement:?
La langue: ?
Sortie: AIR
Exemple: http://www.colabolo.com/fr/download.html
Option 5: Ruby on Rails
Vendeur: Rails Core Team
Environnement:?
Langue: Ruby
Sortie: HTML + JavaScript + AJAX?
Exemple: ?
Option 6: applets Java
Vendeur: Sun
Environnement: Eclipse
Langue: Java
Sortie: Applet Java
Option 7: OpenLeszlo
Vendeur: ?
Environnement:?
La langue: ?
Sortie:?
Exemple: ?
Option 8: Vexi
Vendeur: équipe principale du Vexi
Environnement: Eclipse
Langue: XML + JavaScript
Sortie: Java
Exemple: Démo sur http://vexi.sourceforge.net/
Option 9: Django
Vendeur: équipe principale de Django
Environnement:?
Langue: Python
Sortie: HTML + JavaScript + AJAX
Exemple: ?
Option 10: XUL
???
Vous avez tout mélangé. Vous avez deux couches ici: une interface utilisateur qui rend l'application "riche" et un code côté serveur.
Silverlight
Fonctionne mieux avec la plate-forme .NET. Je n’envisagerais pas de joindre Java, Ruby on Rails, PHP ou quelque chose du genre.
Les outils sont commerciaux.
Flash/Flex (Flash Platform)
Mon préféré et celui que je pense le plus mature de la liste (j’exprime mon opinion subjective en tant que développeur Flex/Java). Fonctionne avec toutes les technologies côté serveur utilisant un simple service Http. WebService est la meilleure intégration par les services AMF (protocole binaire efficace). L'intégration est à différents niveaux. Des appels à distance de base (suffisants pour 90% des projets) sont disponibles pour toutes les plateformes (.NET, Java EE, PHP, RoR). mais il existe une bibliothèque pour les échanges de haut niveau (synchronisation de données, transmission de données, événements client-serveur ou même injection de dépendances client-serveur) pour Java EE: Adobe Livecycle Data Services (commercial) ou GraniteDS et Tide Framework (gratuit, fonctionne avec JBoss Couture).
Flex SDK (compiler and lib) est gratuit, mais FlexBuilder est commercial.
OpenLaszlo
Il existe deux options: "compilation" en direct pour flasher ou html + javascript sur le serveur OpenLaszlo, ou compilation au moment du développement pour flasher et téléverser sur un serveur http. S'intègre à la plupart des technologies côté serveur. L'idée est similaire à flex mais était le premier.
Le SDK est gratuit, IDE est plutôt pauvre.
JavaFX/Java Applet
C’est plutôt expérimental, les outils graphiques et IDE sont médiocres. L'idée est de coder de manière déclarative (mais pas XML) l'interface de code swing et de l'exécuter en tant qu'applet. Je pense que id n'a pas le statut de production.
Flash/Flex et Silverlight vous fournissent les outils les plus avancés pour créer une interface utilisateur enrichie avec le multimédia (streaming vidéo/audio, utilisation de la webcam, microphone, etc.).
Adobe AIR
AIR signifie Adobe Integrated Runtime, qui vous permet d’exécuter des applications Flex ou HTML + Javascript sur votre bureau (fonctionne de la même manière que Java Virtual Machine + WebStart). Pour les applications Flex, les intégrations avec remotesystems sont identiques à celles décrites ci-dessus. L'application AIR est installée sur la machine cliente et fonctionne comme n'importe quelle application. Vous avez également accès au système de fichiers. AIR fonctionne aussi sous Windows, Mac et Linux/BSD (je pense).
Java
Il s’agit de: Java EE 5 (maintenant Java EE 6) ou d’une simple application Web sans conteneur d’application. Vous pouvez avoir une interface utilisateur riche basée sur le javascript, telle que Google Web Toolkit, JBoss RichFaces, IceFaces, etc.
S'intègre bien avec l'interface Flex aux infrastructures d'intégration - Adobe LiveCycle ... (version commerciale), BlazeDS (simple, gratuit), GraniteDS + Tide + Gravity (version avancée, gratuite), WebOrb et autres. (2 ou 3), JBoss Seam et beaucoup ...
.NET
Je ne suis pas un expert ici. Vous donne des opportunités pour une interface riche en JS. s'intègre à Silverlight et Flex (WebOrb, .NET et AMF ).
Il y a beaucoup d'autres technologies là-bas. Certains d'entre eux ont leur propre interface riche, d'autres non. La plupart d'entre eux s'intègre à Flex
PHP
Interface utilisateur riche avec cadre d’application Prado. Il existe des frameworks plus simples PHP (demandez à Google). Intégration Flex avec AmfPHP, WebOrb, SabreAMF
Ruby on Rails
Langage + Serveur + Cadre d'application. Peut s'intégrer avec Flex
Python
Il y a quelques frameworks d'application: Django, Pylons ... Peut s'intégrer à Flex
Scala + Ascenseur
Lift est un framework d'application écrit en scala. Fonctionne sur le serveur Java.
Fusion froide
Une technologie Adobe. Le langage est CFML. Fonctionne sur le serveur Adobe Coldfusion mais il n’ya pas de Railo gratuit de JBoss. S'intègre à Flex.
Mes cinq cents
ASP.NET - oublie ça. Technologie du millénaire dépassée.
Silverlight pros - des bibliothèques commerciales très puissantes disponibles. Si l'effet «wow» est un must, alors c'est votre choix, mais vous devriez dépenser un peu d'argent pour acheter le logiciel 3D parties.
Par exemple. Regarder
sirius2. intersoftpt. com
démos. telerik. com/silverlight/tableau de bord /
Silverlight contre: le navigateur doit avoir le plugin silverlight installé, ce plugin doit être mis à jour de temps en temps lorsque la nouvelle version de silverlight est publiée et utilisée dans votre logiciel. De plus, vous n'êtes pas sûr que ce plug-in soit entièrement disponible pour les systèmes d'exploitation * nux - vous pouvez donc potentiellement vous en tenir à Windows.
GWT pros: aucun plugin n'est nécessaire, vous développez avec Java et Java est compilé en javascript pur. Mon outil préféré pour créer des applications efficaces, par exemple http://www.projectkaiser.com
Contre GWT: bibliothèques médiocres à interface graphique (même si on parle de bibliothèques commerciales)
Applets Java. Vous pouvez regarder pivot. Apache. org
Ma réponse à "Quel est le meilleur choix pour les applications Web volumineuses et très riches" est Silverlight. Attention cependant!
je regarde aussi quelle technologie utiliser, je pense que theres 1, vous voudrez peut-être jeter un oeil à
Appcelerator Titanium - Il vous permet de développer pour des plates-formes de bureau et mobiles utilisant des technologies Web telles que HTML5/CSS/JS et pour une plate-forme de bureau, même PHP/Python.
toujours l'évaluation aussi
nous nous intéressons également aux applications Web natives (PHP, ASP.NET MVC) et aux applications Internet grand public (AIR, Silverlight, Titanium). Les RIA sont puissantes dans le sens où elles peuvent interagir avec le système de fichiers et sont généralement plus rapides car elles existent localement. Les applications Web ne peuvent pas interagir avec le système de fichiers et sont généralement plus lentes et impliquent davantage de latence. mais comme ils existent sur le web, je peux y accéder n'importe où.
en fait, je voulais régler avec des technologies Web ouvertes telles que HTML5/CSS3/JS/PHP/Python, mais en tenant sérieusement compte de la plate-forme .NET. C #/F #/WPF/Entity Framework/Silverlight et les fonctionnalités de Windows 7 Superposition d’icônes, barre de progression, listes de sauts offrent beaucoup de potentiel. et la possibilité d'utiliser un seul framework, quelques langues pour les applications web et de bureau, même les RIA, est un atout majeur. J'ai également vu beaucoup de vidéos sur les modèles et pratiques MS recommande que la qualité, etc., soit fantastique. Cela peut être difficile à apprendre au début, mais je pense que cela en vaudra la peine. l'inconvénient que beaucoup diront même moi, c'est sa source fermée. outils généralement plus chers
Si vous envisagez de créer une application Web avec de riches fonctionnalités interactives sur le client, il existe 3 options classiques:
Pour mon argent, HTML est de loin la plate-forme la plus intéressante. Il est le plus actif et est de plus en plus normalisé sur tous les navigateurs. HTML5 ajoute la prise en charge de fonctionnalités telles que le stockage local et le traitement en arrière-plan. Google Chrome a même maintenant une bibliothèque graphique 3D (WebGL) - Firefox à venir.
Si j'étais vous, je me concentrerais sur l'apprentissage de la pile HTML (5) - HTML, CSS, CSS3, HTML5, jQuery et sur des frameworks open source tels que backbone.js, jQuery mobile, JQTouch, angular.js, etc. Je suis plusieurs de ces projets sur GitHub - vous pouvez voir la liste plus grande ici:
https://github.com/mckoss/following
Votre application Web riche a probablement besoin d'une sorte d'infrastructure côté serveur pour la prendre en charge. Ruby on Rails est probablement le framework le plus populaire et très facile à démarrer. Heroku peut héberger votre application pour vous très facilement et de manière évolutive.
Si vous avez déjà beaucoup de code Java (moi-même, je ne suis pas un fan de Java), le GWT de Google est un cadre très agréable pour la création d'applications en Java pur et compile les éléments côté client en JavaScript.
Personnellement, j'aime bien Python côté serveur - Google App Engine fournit une option très agréable, évolutive et simple à programmer (utiliser le framework Django sur Google App Engine est la meilleure option ici pour les applications non triviales).
Et, si je pouvais suggérer quelque chose de nouveau sur lequel je travaillais déjà, Pageforest.com fournit une plate-forme d'applications web en JavaScript pur. Vous écrivez TOUT votre code en JavaScript côté client et utilisez AJAX/REST pour connecter les utilisateurs et enregistrer les données sur le serveur Pageforest (ce service est ouvert et gratuit pour les développeurs).
Bonne chance!
Sencha Ext JS est une puissante bibliothèque frontale offrant une expérience de type bureau dans le navigateur. Avantages: apparence homogène, architecture puissante (POO basée sur un prototype), beaucoup de widgets. Inconvénients: dans la plupart des cas, pas gratuit.
Si vous choisissez de vous en tenir à l'approche modulaire (ce qui est recommandé pour les applications Web complexes riches en données avec des centaines de modèles) et souhaitez utiliser Ruby sur le back-end, consultez Netzke: https://github.com/ nomadcoder/netzke-core .
Je pense que le développement Web devient de plus en plus complexe d'année en année (plates-formes et périphériques multiples, périphériques plus capables). À mesure que cela se produit, les couches logicielles deviennent de plus en plus définies et complexes. L’intégration et l’indépendance de ces couches deviennent de plus en plus importantes si vous souhaitez investir à long terme. Vous ne pouvez plus compter sur la création de la solution dans une seule technologie. Je regarderais donc des systèmes/standards ouverts comme Web 2, 3, etc.
Je suis totalement d'accord avec Peter Gwiazda, je ne peux donc rien dire de plus à propos de cet article, car il les a tous couverts. Ce que je veux ajouter, ce sont d’autres spécifications. D'abord, voyez clairement dans votre esprit ce que vous souhaitez accomplir avec cela. Quelle est l'application que vous souhaitez développer? Recherchez également dans quel OS vous souhaitez que l'application s'exécute. Ensuite, vous déciderez du type de langage/cadre que vous souhaitez développer. Effacez votre cible, analysez quel cadre il vaudra mieux développer (en fonction de la demande, à mon avis), puis allez apprendre. Vous ne pouvez pas les apprendre tous à la fois! Chaque langue/plate-forme a ses avantages et ses inconvénients, vous décidez donc ce qui vous convient le mieux!
Option pour les personnes python:
Pyjamas (Google Web Toolkit) - Python compilé dans JS
+ tout backend en python (Django, Web.py ..).
Toutes les communications passent par JSON-RPC