J'ai programmé des applications Web java pendant 10 ans avant de passer à Python, il y a 4 ans. Je pense que je suis beaucoup plus productif avec Python et que je peux faire beaucoup plus en moins de temps. Pour être honnête, je suis beaucoup plus heureux lorsque je développe en python. Voici quelques-unes des raisons pour lesquelles j’estime que python est meilleur que Java sur la base de mon expérience personnelle.
Cadres Web:
Lorsque j'ai commencé à programmer des applications Web en Java, Struts est apparu et ce n'était pas génial, mais c'était la meilleure chose disponible. J'ai créé de nombreuses applications Struts et quelques autres dans d'autres cadres. Chaque fois qu'un nouveau framework est sorti (Tapestry, Wicket, GWT, rayures, grails, AppFuse, Play, RichFaces, Spring, etc.), je l'essayais et voyais s'il était meilleur, et la plupart du temps, ce n'était qu'un peu mieux et parfois pas mieux du tout. Je dois dire que le cadre de jeu est un pas dans la bonne direction.
Piles non incluses:
L'un des aspects les plus ennuyeux de Java est le fait que la plupart des bibliothèques que vous utilisez ne sont pas incluses dans java, vous devez donc inclure une tonne de bibliothèques tierces provenant d'endroits comme apache commons. Si vous utilisez quelque chose comme hibernate avec une autre grande bibliothèque, vous vous retrouverez dans l'enfer de la dépendance à Jar, où hibernate nécessite une version d'un fichier jar et quelque chose d'autre nécessite une autre version. Si vous chargez les fichiers jar dans le mauvais ordre, vous n’avez pas de chance. Vous devez vous fier à des outils tels que maven et ivy pour gérer vos dépendances, ce qui ne fait qu'augmenter le nombre de dépendances dans votre projet, ce qui en fait des projets énormes. J'avais quelques fichiers de guerre de 100 Mo + fichiers de guerre pour les applications Web les plus simples.
Trop d'options:
Pour une raison quelconque, il semble y avoir beaucoup trop de façons différentes de faire la même chose en Java. Il existe plus de 38 frameworks Web différents pour Java selon wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) et 23 ORM différents ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_server_software#). Java ) pour ne citer que quelques exemples. Si vous regardez d'autres langues, leur nombre est plus raisonnable. Certaines personnes pensent qu’avoir beaucoup d’options est une bonne chose, mais cela n’entraîne pas beaucoup de gaspillage d’efforts de la part de la communauté des développeurs, tout le monde réinvente la même roue et si vous êtes un nouvel utilisateur de la langue que vous utilisez. trop d'options à choisir.
Serveurs d'applications:
Les applications Web Java sont très lourdes et nécessitent beaucoup de ressources pour s'exécuter. Ils ont particulièrement faim de mémoire. Comme tout logiciel, ils peuvent être réglés pour réduire leur empreinte sur les ressources, mais par rapport à d'autres langues, leur configuration immédiate est horrible. Dans mon passé, j'ai utilisé weblogic, Websphere, Jboss, Tomcat et Jetty. J'ai utilisé les trois premiers uniquement lorsque j'ai été forcé d'utiliser des EJB, mais même si vous n'utilisiez pas d'EJB, il s'agissait de serveurs d'applications volumineux et parfois difficiles à configurer et à exécuter correctement. Tomcat et Jetty sont bien meilleurs et plus faciles à configurer, mais restent des ressources.
Hébergement d'applications:
Si vous n'exécutez pas votre propre serveur, il est très difficile de trouver un hébergement partagé pour vos applications java à un prix raisonnable. La raison principale en est que les applications java nécessitent beaucoup plus de mémoire que d’autres langues. Il n’est donc pas logique pour un fournisseur d’hébergement partagé de dépenser sa précieuse mémoire RAM pour exécuter un site java, alors qu’ils pourraient exploiter 5 sites php au même endroit. Cela signifie qu'il y a moins de fournisseurs proposant l'hébergement java, ce qui entraîne des coûts plus élevés pour l'exploitation de votre site Web.
Temps de développement:
Lorsque je développais en Java, je me trouvais beaucoup plus lent que ce que je pouvais faire en python. J'aurais besoin de faire un changement, de compiler, de redéployer puis de tester, ce qui ralentit le processus itératif. Je sais qu'il y a moyen de rendre cela plus rapide, mais même au mieux, je me suis senti beaucoup plus lentement que ce que je peux faire en python.
Il y a aussi beaucoup moins de code standard pour faire la même chose en python, je passe donc moins de temps à développer le code.
Java semble trop complexe dans de nombreux domaines. De nombreuses API et interfaces ne sont que très compliquées pour ce que vous voulez faire. Et chacun, ainsi que son frère, pense être un architecte java, ce qui se traduit par de gros systèmes compliqués, difficiles à utiliser et à développer.
IDE:
Quand je me développais à Java, je me sentais collé à l'IDE, j'étais perdu sans cela. IntelliJ est le meilleur IDE sur le marché, et il était difficile de passer à python car il n’y avait rien de tel pour python. Donc, au lieu d’un IDE, j’ai juste utilisé textmate, qui n’est qu’un éditeur de texte normal. C'était difficile au début, mais parce que c'était juste un éditeur de texte, c'était une application très rapide et réactive. Je pouvais ouvrir tout mon projet en quelques secondes, alors que lorsque je souhaite ouvrir un projet dans un IDE, cela peut prendre une minute ou plus, avec une machine disposant de beaucoup de RAM. Les fabricants d'IntelliJ sont sortis avec un éditeur de python appelé pycharm, je l'ai acheté quand il est sorti et c'est génial. Mais ce que j’ai compris, c’est que je n’ai pas besoin d’un IDE pour Python, je suis satisfait d’un éditeur de texte. Lorsque je reviens à travailler sur des applications Web Java, ce que je dois faire de temps en temps, j'essaie d'utiliser l'éditeur de texte, mais je ne l'ai pas encore parfaitement maîtrisé. Personnellement, j'ai plus besoin de l'EDI pour Java, car si je perds quelque chose, la recompilation et le redéploiement prennent plus de temps, ce qui me ralentit.
ORM:
Quand j'ai commencé à utiliser Hibernate comme ORM, je trouvais ça génial, il y avait des problèmes, et ce n'était pas parfait, mais c'était mieux que ce que je faisais auparavant. J'en étais content, jusqu'à ce que je fasse une application avec l'ORM de Django sur un projet en python, ce qui m'a ouvert les yeux, c'est ainsi qu'un ORM est censé fonctionner. Après ce projet, je suis retourné en hibernation et je me suis senti déçu. J'avais envie de retourner à l'ORM de Django. Sqlalchemy est un autre grand ORM en python, similaire au ORM de Django, mais un peu différent. J'ai peu d'expérience avec l'ORM de ROR, mais d'après ce que je me souviens, c'était assez bon aussi.
Modèles:
Les systèmes de templates Web en Java ne sont pas très bons, et je pense les avoir tous essayés (tuiles, freemarker, vélocité, etc.). La plupart d'entre eux n'offrent que des fonctionnalités de base et sont difficiles à utiliser. Du côté de Python, mes deux favoris sont les modèles Django et Jinja2, ils ont tout ce dont je pourrais avoir besoin dans un moteur de templates et sont vraiment faciles à utiliser.