Programei aplicativos da web em java por 10 anos antes de mudar para python, há mais de 4 anos. Sinto que sou muito mais produtivo usando python e posso fazer muito mais em um curto período de tempo. Para ser sincero, fico muito mais feliz quando desenvolvo em python. Aqui estão algumas das razões pelas quais eu acho que python é melhor que Java, com base na minha experiência pessoal, sua milhagem pode muito.
Estruturas da Web:
Quando eu comecei a programar aplicativos da Web em Java, o Struts acabou de sair, e não foi ótimo, mas foi a melhor coisa disponível. Criei vários aplicativos struts e alguns em outros frameworks ao longo do caminho. Sempre que surgia uma nova estrutura (Tapeçaria, Wicket, GWT, stripe, grails, AppFuse, Play, RichFaces, Spring, etc.), eu experimentava e veria se era melhor e, na maioria das vezes, era apenas um pouco melhor. e, às vezes, nem melhor. Eu tenho que dizer que a estrutura do jogo é um passo na direção certa.
Pilhas não incluídas:
Uma das partes mais irritantes do Java foi o fato de que a maioria das bibliotecas que você usa não foram incluídas no próprio java, você teve que incluir uma tonelada de bibliotecas de terceiros de lugares como apache commons. Se você usar algo como o hibernate com qualquer outra biblioteca grande, você acaba no inferno das dependências do Jar, onde o hibernate precisa de uma versão de um jar e outra coisa precisa de outra versão. Se você carregar os arquivos jar na ordem errada, estará sem sorte. Você precisa depender de ferramentas como maven e ivy para gerenciar suas dependências, e isso traz mais dependências para o seu projeto, o que resulta em projetos enormes. Eu tinha alguns arquivos de guerra com mais de 100 MB de arquivos de guerra para os aplicativos Web mais simples.
Muitas opções:
Por alguma razão, parece haver muitas maneiras diferentes de fazer a mesma coisa em Java. Existem mais de 38 estruturas da web diferentes para java, de acordo com a wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) e 23 ORMs diferentes ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software# Java ) apenas para citar alguns exemplos. Se você olhar para outros idiomas, eles têm um número mais razoável. Algumas pessoas pensam que ter muitas opções é uma coisa boa, mas não leva a muito esforço desperdiçado na comunidade de desenvolvedores, todos estão reinventando a mesma roda e, se você é uma pessoa nova para o idioma que tem muitas opções para escolher.
Servidores de aplicativos:
Os aplicativos da web Java são realmente pesados e exigem muitos recursos para serem executados. Eles são especialmente famintos por memória. Como qualquer software, eles podem ser ajustados para reduzir o consumo de recursos, mas em comparação com outros idiomas, a configuração imediata é horrível. No passado, usei weblogic, websphere, Jboss, tomcat e jetty. Eu usei apenas os três primeiros quando fui forçado a usar EJBs, mas mesmo se você não estiver usando EJBs, eles eram grandes servidores de aplicativos e, às vezes, difíceis de configurar e funcionar corretamente. O Tomcat e o Jetty são muito melhores e mais fáceis de configurar, mas ainda são recursos desnecessários.
Hospedagem de aplicativos:
Se você não está executando seu próprio servidor, é muito difícil encontrar hospedagem compartilhada para seus aplicativos java a um preço razoável. O principal motivo é que os aplicativos java requerem muito mais memória em comparação com outros idiomas, portanto, não faz sentido que um provedor de hospedagem compartilhada gaste sua valiosa RAM executando um site java, quando eles podem executar sites de 5 php no mesmo local. Isso significa que há menos provedores oferecendo hospedagem java, o que, por sua vez, significa custos mais altos para executar o seu site.
Tempo de desenvolvimento:
Quando desenvolvi em java, me vi muito mais lento do que o que posso fazer em python. Eu precisaria fazer uma alteração, compilar, reimplementar e testar, e isso atrasa o processo iterativo. Eu sei que existem maneiras de tornar isso mais rápido, mas mesmo assim, me senti muito mais lento do que o que posso fazer em python.
Também há muito menos código clichê para fazer a mesma coisa em python, portanto, passo menos tempo desenvolvendo o código também.
O Java parece superdimensionado em várias partes. Muitas APIs e interfaces são muito complicadas para o que você deseja fazer. E todos e seus irmãos pensam que são um arquiteto java e isso resulta em grandes sistemas complicados e difíceis de usar e desenvolver.
IDE:
Quando eu estava desenvolvendo em Java, me senti preso ao IDE, fiquei perdido sem ele. O IntelliJ é o melhor IDE do mercado, e foi difícil mudar para o python porque não havia nada parecido no python. Então, em vez de um IDE, eu apenas usei o textmate, que é apenas um editor de texto normal. Foi difícil no começo, mas como era apenas um editor de texto, era um aplicativo muito rápido e responsivo. Eu poderia abrir todo o meu projeto em alguns segundos, enquanto que quando eu quiser abrir um projeto em um IDE, pode levar um minuto ou mais, com uma máquina com uma tonelada de RAM. Os criadores do IntelliJ lançaram um editor de python chamado pycharm, eu o comprei quando ele foi lançado e é ótimo. Mas o que percebi é que não preciso de um IDE para python, estou bem com um editor de texto. Quando volto a trabalhar em aplicativos da Web Java, que tenho que fazer periodicamente, tento usar o editor de texto, mas ainda não o dominei. Pessoalmente, preciso mais do IDE para Java porque, se eu estragar algo, leva mais tempo para recompilar e reimplementar, o que me deixa mais lento.
ORM:
Quando comecei a usar o Hibernate como ORM, achei ótimo, tinha problemas e não era perfeito, mas era melhor do que o que estava fazendo antes. Fiquei feliz com isso, até fazer uma aplicação com o ORM do Django em um projeto python, e isso abriu meus olhos, é assim que um ORM deve funcionar. Depois desse projeto, voltei ao hibernar e fiquei decepcionado, e desejava voltar ao ORM do Django. Outro grande ORM python é o sqlalchemy, que é semelhante ao ORM do Django, mas um pouco diferente. Tenho experiência limitada com o ORM da ROR, mas pelo que me lembro, também foi muito bom.
Modelos:
Os sistemas de modelos da Web em Java não são tão bons e acho que já tentei todos eles (blocos, marcador livre, velocidade, etc.). A maioria deles oferece apenas funcionalidade básica e é uma dor de se trabalhar. No lado do Python, meus dois favoritos são modelos do Django e Jinja2, eles têm tudo o que eu poderia precisar em um mecanismo de modelagem e são realmente fáceis de usar.