Programé aplicaciones web de Java durante 10 años antes de cambiarme a Python, hace más de 4 años. Siento que soy mucho más productivo usando Python y puedo hacer mucho más en un período de tiempo más corto, y para ser honesto, estoy mucho más feliz cuando me desarrollo en Python. Estas son algunas de las razones por las que creo que Python es mejor que Java basado en mi experiencia personal, su milagro puede muy.
Marcos web:
Cuando comencé a programar aplicaciones web en Java, Struts acaba de salir, y no fue genial, pero fue lo mejor disponible. Creé un montón de aplicaciones struts, y algunas en otros marcos a lo largo del camino. Cada vez que salía un nuevo marco (Tapiz, Wicket, GWT, stripe, grails, AppFuse, Play, RichFaces, Spring, etc.), lo probaba y veía si era mejor, y la mayoría de las veces era solo un poco mejor , y a veces no mejor en absoluto. Tengo que decir que el marco de juego es un paso en la dirección correcta.
Baterías no incluidas:
Una de las partes más molestas de Java fue el hecho de que la mayoría de las bibliotecas que usa no estaban incluidas en Java, tenía que incluir un montón de librerías de terceros de lugares como apache commons. Si usa algo como hibernar con cualquier otra biblioteca grande, termina en el infierno de dependencia de Jar, donde hibernate necesita una versión de un jar, y algo más necesita otra versión. Si carga los archivos jar en el orden incorrecto, no tiene suerte. Debe depender de herramientas como maven y hiedra para administrar sus dependencias, y esto solo trae más dependencias a su proyecto, lo que resulta en proyectos que son enormes. Tenía algunos archivos de guerra de 100 MB + archivos de guerra para las aplicaciones web más simples.
Demasiadas opciones:
Por alguna razón, parece haber demasiadas formas diferentes de hacer lo mismo en Java. Hay más de 38 marcos web diferentes para java según wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) y 23 ORM diferentes ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software# Java ) solo por nombrar un par de ejemplos. Si nos fijamos en otros idiomas, tienen un número más razonable. Algunas personas piensan que tener muchas opciones es algo bueno, pero no lo es, lleva a un gran esfuerzo desperdiciado en la comunidad de desarrolladores, todos están reinventando la misma rueda, y si eres una persona nueva en el idioma que tienes demasiadas opciones para elegir.
Servidores de aplicaciones:
Las aplicaciones web Java son realmente pesadas y requieren muchos recursos para ejecutarse. Son especialmente hambrientos de memoria. Al igual que cualquier pieza de software, pueden ajustarse para reducir su huella de recursos, pero en comparación con otros idiomas, su configuración inmediata es horrible. En mi pasado he usado weblogic, websphere, Jboss, tomcat y jetty. Solo usé los primeros tres cuando me vi obligado a usar EJB, pero incluso si no está usando EJB, eran servidores de aplicaciones grandes y, a veces, difíciles de configurar y ejecutar correctamente. Tomcat y Jetty son mucho mejores y más fáciles de configurar, pero siguen siendo grandes recursos.
Alojamiento de aplicaciones:
Si no está ejecutando su propio servidor, es realmente difícil encontrar alojamiento compartido para sus aplicaciones java a un precio razonable. La razón principal es porque las aplicaciones Java requieren mucha más memoria en comparación con otros idiomas, por lo que no tiene sentido que un proveedor de alojamiento compartido gaste su valiosa RAM ejecutando un sitio Java, cuando podrían ejecutar 5 sitios php en el mismo lugar. Eso significa que hay menos proveedores que ofrecen alojamiento Java, lo que a su vez significa mayores costos para ejecutar su sitio web.
Tiempo de desarrollo:
Cuando desarrollé en Java, me encontré mucho más lento que lo que puedo hacer en Python. Tendría que hacer un cambio, compilar, volver a implementar y luego probar, y esto ralentiza el proceso iterativo. Sé que hay formas de hacer esto más rápido, pero incluso en el mejor de los casos, me sentí mucho más lento que lo que puedo hacer en Python.
También hay mucho menos código repetitivo para hacer lo mismo en Python, por lo que también paso menos tiempo desarrollando el código.
Java simplemente se siente sobredimensionado en muchas partes, muchas de las API e interfaces son demasiado complicadas para lo que quieres hacer. Y todos y su hermano piensan que son arquitectos de Java y esto da como resultado grandes sistemas complicados que son difíciles de usar y desarrollar.
IDE:
Cuando estaba desarrollando en Java, me sentí atrapado en el IDE, me perdí sin él. IntelliJ es el mejor IDE del mercado, y fue difícil cambiar a python porque no había nada parecido para python. Entonces, en lugar de un IDE, simplemente utilicé textmate, que es solo un editor de texto normal. Al principio fue difícil, pero como era solo un editor de texto, era una aplicación realmente rápida y receptiva. Podría abrir todo mi proyecto en unos segundos, mientras que cuando quiero abrir un proyecto en un IDE podría llevar un minuto o más, con una máquina con una tonelada de RAM. Los creadores de IntelliJ salieron con un editor de python llamado pycharm, lo compré cuando salió por primera vez, y es genial. Pero me di cuenta de que no necesito un IDE para Python, estoy bien con un editor de texto. Cuando vuelvo a trabajar en aplicaciones web Java que tengo que hacer de vez en cuando, trato de usar el editor de texto, pero todavía no lo he dominado. Personalmente necesito más el IDE para Java porque si estropeo algo, lleva más tiempo volver a compilar y volver a implementar, lo que me ralentiza.
ORM:
Cuando comencé a usar Hibernate como ORM, pensé que era genial, que tenía sus problemas y que no era perfecto, pero era mejor que lo que estaba haciendo antes. Estaba contento con eso, hasta que hice una aplicación con el ORM de Django en un proyecto de Python, y eso me abrió los ojos, así es como se supone que funciona un ORM. Después de ese proyecto, volví a hibernar, y me sentí decepcionado y deseé volver al ORM de Django. Otro gran ORM de Python es sqlalchemy, que es similar al ORM de Django, pero un poco diferente. Tengo una experiencia limitada con el ORM de ROR, pero por lo que recuerdo, también fue bastante bueno.
Plantillas:
Los sistemas de plantillas web en Java no son tan buenos, y creo que los he probado todos (mosaicos, marcadores libres, velocidad, etc.). La mayoría de ellos ofrecen solo funcionalidades básicas y son difíciles de trabajar. En el lado de Python, mis dos favoritos son las plantillas de Django y Jinja2, tienen todo lo que podría necesitar en un motor de plantillas y son realmente fáciles de usar.