La société ArielPartners a publié
une étude comparative de Zope et de Cocoon, deux environnements objets faisant office de serveurs d’applications Web pour les sites Internet et intranet orientés publication de contenu. Leur conclusion présente Zope comme un environnement plus puissant, plus mûr et mieux documenté, avec une avance de une à deux années sur Cocoon et les environnements de publication Java similaires à Cocoon. En particulier, Zope offre des fonctionnalités satisfaisantes de gestion des transactions, de la sécurité et une évolutivité remarquable (scalabilité).
ArielPartners publie également une
comparaison détaillée des langages Python (associé à Zope) et Java (associé notamment à Cocoon). Cette comparaison soutient la thèse suivante : il suffit d’adopter Python ET Java pour couvrir l’intégralité des besoins de développement courant en informatique d’entreprise. Python offre les avantages suivants :
- le code Python est plus concis (3 à 5 fois plus concis qu’en Java) et le codage est plus rapide et facile
- le langage évolue plus rapidement que Java car Java a acquis plus d’inertie
- Python impose moins de contraintes pour le codage, au prix d’un plus grand risque d’erreurs lors de l’exécution du code
- Python est plus facile à apprendre pour les débutants tout en étant satisfaisant pour les experts : sa courbe d’apprentissage est plus douce
- Zope est un serveur d’application python reconnu.
- La syntaxe de Python est plus claire et plus lisible
- Python, comparativement à Java, offre un code plus facilement maintenable.
- L’interpréteur Python compile le code à sa première exécution et exonère ainsi le développeur de phases de compilation fastidieuses.
- Python est un choix judicieux pour la majorité des tâches de développement en entreprise.
- Les domaintes d’excellence de Python sont : le scripting, le prototypage rapide, l’intégration de systèmes (langage « glue »), les applications web, les outils graphiques, les outils de traitement XML.
Les avantages de Java sont les suivants :
- on compte 3 millions de développeurs Java dans le monde contre un demi million de développeurs Python
- Le code Java, plus contraint pour le développeur, offre moins de risque de bug
- Java s’accompagne d’offres mûres et nombreuses en matière de serveurs d’application grâce à J2EE, RMI, Jini et JavaSpaces. Les principaux serveurs d’application sont BEA WebLogic, IBM WebSphere, Sun One Application Server et JBoss (opensource).
- Java offre des modèles à base de composants adaptés à l’entreprise avec les modèles JavaBeans et EJB.
- Java s’accompagne d’outils de conception graphique, de documentation et de débuggage très avancés.
- Java, comparativement à Python, offre un code plus performant.
- Java se présente comme un choix complémentaire intelligent pour tous les cas …
- … où Python n’a pas encore fait ses preuves (Aspect-Oriented Programming, recherche sur les technologies SOAP/WSDL/UDDI, utilisation d’outils de modélisation UML avancés)
- … où les performances brutes sont critiques
- … où il s’agit de mettre en place des systèmes distribués ou parallélisés à très grande échelle
- … où la facilité de recrutement de compétences de développement ou la disponibilité d’outils de développement est critique
Ping : AkaSig » Portails / CMS en J2EE
I don’t know if Python is better than Java… but I know that Zope is a shit… Doesn’t have documented all features, and is hard to get support (too expensive). Plone is a shit to… It doesn’t have nothing that I couldn’t find in Java developed products.
If you talk about multi-inheritance of Python, on real life you may deal with Web Projects without thinking on it, and if I have to do a complex application, I will use C++ or Visual C++ (linux/windows) instead of Python.
I think the success of a product, depends in part of how good is the documentation, because is the path that newbies will follow to learn and use it. And Java is far better than Python on this matter.
I prefer Java or .NET than this inmature technology.
Eduardo said : Plone is a shit to… It doesn’t have nothing that I couldn’t find in Java developed products. As I pointed here there seems to be no J2EE CMS/portal as rich in terms of features as Plone is. In other words, the CMS or portal products based on Zope are seen by many J2EE developers/architects as more mature than their J2EE counterparts. Of course, you may be able to build something stronger as a custom application in J2EE, but it would certainly not offer the flexibility of a ready-to-go CMS or portal.
Eduardo said If you talk about multi-inheritance of Python, on real life you may deal with Web Projects without thinking on it. I fully agree. This is the reason why I personnally don’t really care about that !
[…]the success of a product, depends in part of how good is the documentation[…] You are damn right ! I personnally feel like the documentation available on Python and Plone is quite nice and up-to-date enough. The documentation of Zope may be lacking. One part of the problem is that the Python family of technology is evolving quite quicker than Java (because the installed base is smaller). And the documentation is sometimes late behind the latest releases ! But as the installed base is growing larger, the most important parts of this stack are stabilizing and the documentation is more satisfying.
[documentation] is the path that newbies will follow to learn and use it. And Java is far better than Python on this matter. Errr… OK for the importance of documentation but I don’t think Java is better than Python for newbies ! The ease of learning Python looks significantly higher than with Java. The Zope learning curve is quite steep but the development version of Zope (Zope 3X) is correcting this. And I think that CMS products such as Plone are really more appealling to newbies than J2EE is !
Your remarks sound as if you are saying that for your kind of developments and your kind of profile, J2EE is more suitable than Python. I perfectly understand that Python is not the silver-bullet for any IT development (nor is Java). The Ariel Partners thesis is precisely that there is no silver-bullet in this domain and that enterprises should try to combine Java for heavy stuff (or C++ for more fundamental stuff) and Python for agility. It would be interesting to know the kinds of applications you usually develop. In what domain (finance ? real-time applications ? embedded systems ?) ? I would enjoy finding a general map of IT saying : in this territory, techno X and techno Y compete ; in this territory, techno Z is the undeniable king and so on.
Pour avoir utiliser zope et plone dans le développement d’un CMS, je suis daccord avec Eduardo. Plone et Zope manquent cruellement de documentation. le manque de structure du python le rend souvent confus et opaque pour quelqu’un qui n’a pas suivit le projet depuis sa naissance.
De plus, ni Zope ni Plone ne sont, à ce moment, à un stade de maturation suffisant, de nombreux bug subsiste dans le code et des mises à jours fréquentes sont nécessaire, cependant, la compatibilité n’est pas toujours assurée. si votre plone fonctionne sur votre zope sur votre python, changer de version pour l’un de ces trois éléments peut s’avéré catastrophique.
Enfin, la db de zope peut s’avéré catastrophique. Pour une utilisation légère (site perso, PME, … ) elle est suffisante, mais pour une utilisation plus lourde (plusieurs Go et millions d’objet), ce n’est plus le cas
Certe, java et ces framework sont devenus plus statique à cause de l’innertie, mais ils apportent plus de garanties que le python et ces framework, en tout cas, à l’heure actuel
Gpg, tu as l’air d’avoir de l’expérience en matière de développement de CMS. Existe-t-il à tes yeux une alternative J2EE crédible à Plone pour faire un CMS? Un CMS J2EE open source qui soit suffisamment riche, mature, documenté et supporté pour être autant crédible que Plone?
En ce qui concerne « le manque de structure de Python », je suis très surpris de ta remarque. Je code en Java et en Python (même si j’ai appris Python avant) et à mes yeux Python est bien plus clair et facile à lire que Java, ne serait-ce qu’à cause de l’indentation forcée. Je n’ai pas suivi Python depuis sa naissance (je m’y suis mis à partir de la version 2.1 je crois). Mais franchement, lire du Python est bien plus facile que de lire du Java (Java me paraît toujours trop verbeux et se perd dans les détails, même si la version 6 corrige une partie de ces problèmes en reprenant des syntaxes plus proches de Python).
Je ne suis pas d’accord avec toi quand tu dis que Zope et Plone ne sont pas à un stade de maturation suffisant. Ce sont des produits en production dans de très grandes organisations et pour de grands sites. Ils existent depuis longtemps et bénéficient d’un large support commercial (pas aussi large que pour certains produits J2EE, certes). Pour ce qui est de la compatibilité entre les versions de Python, Zope et Plone, il y a certes des contraintes à respecter mais je ne vois pas en quoi cela peut être un problème significatif: dans le pire des cas, tu utilises par exemple une installation de Python spécifique à ton instance Zope plutôt que d’utiliser l’interpréteur python de l’OS.
Pour la ZODB, ce que tu dis m’intéresses car je n’ai jamais travaillé sur des projets d’une telle dimension (millions d’objets stockés). Si tu as des détails à fournir sur les problèmes de scalabilité, je suis preneur (par curiosité, en fait). J’ai entendu dire que l’on trouve des produits commerciaux qui permettent d’assurer la scalabilité de la ZODB en en distribuant le contenu sur plusieurs instances. Mais je n’ai jamais travaillé avec.
Je suis d’accord avec ta conclusion sur le fait que Java apporte plus de garanties ne serait-ce que parce que c’est plus populaire: ça apporte la garantie que l’on peut plus facilement trouver des compétences sur le marché des prestataires. Par contre, comme je ne connais pas d’équivalent satisfaisant à Plone dans le monde Java, je reste persuadé que Plone et les frameworks sous-jacents gardent leur avance dans le monde des CMS. J’aimerais me tromper (pour le bien de la communauté J2EE) et si tu connais des équivalents à Plone en CMS J2EE open source, ça m’intéresse!