Ho programmato le app Web Java per 10 anni prima di passare a Python, 4+ anni fa. Sento di essere molto più produttivo usando Python e di poter fare molto di più in un breve periodo di tempo, e ad essere sincero, sono molto più felice quando mi sviluppo in Python. Ecco alcuni dei motivi per cui penso che Python sia migliore di Java in base alla mia esperienza personale, il tuo chilometraggio potrebbe molto.
Frame Web:
Quando ho iniziato a programmare app Web in Java, Struts è appena uscito, e non era eccezionale, ma era la cosa migliore disponibile. Ho creato un sacco di app struts e alcune in altri framework lungo la strada. Ogni volta che usciva un nuovo framework (Tapestry, Wicket, GWT, stripe, grails, AppFuse, Play, RichFaces, Spring, ecc.), Lo provavo e vedevo se era meglio, e la maggior parte delle volte era solo un po 'meglio e talvolta non è affatto migliore. Devo dire che il framework di gioco è un passo nella giusta direzione.
Batterie non incluse:
Una delle parti più fastidiose di Java era il fatto che la maggior parte delle librerie che usi non erano incluse in Java stesso, dovevi includere un sacco di librerie di terze parti da luoghi come i comuni di Apache. Se usi qualcosa come l'ibernazione con qualsiasi altra grande libreria, finisci nell'inferno di dipendenza Jar, dove l'ibernazione ha bisogno di una versione di un vaso e qualcos'altro ha bisogno di un'altra versione. Se carichi i file jar nell'ordine sbagliato, sei sfortunato. È necessario dipendere da strumenti come Maven ed Edera per gestire le proprie dipendenze, e questo porta solo più dipendenze nel progetto, il che si traduce in progetti enormi. Ho avuto alcuni file di guerra 100 MB + file di guerra per le app web più semplici.
Troppe opzioni:
Per qualche motivo sembra che ci siano troppi modi diversi di fare la stessa cosa in Java. Ci sono oltre 38 diversi framework web per java secondo wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) e 23 diversi ORM ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software# Java ) solo per citare un paio di esempi. Se guardi altre lingue hanno un numero più ragionevole. Alcune persone pensano che avere molte opzioni sia una buona cosa, ma non lo è porta a un grande sforzo sprecato nella comunità degli sviluppatori, tutti stanno reinventando la stessa ruota e se sei una persona nuova nella lingua che hai troppe opzioni tra cui scegliere.
Server delle app:
Le applicazioni Web Java sono molto pesanti e richiedono molte risorse per funzionare. Sono particolarmente affamati di memoria. Come qualsiasi software, possono essere ottimizzati per ridurre il loro footprint di risorse, ma rispetto ad altre lingue la loro configurazione è orribile. Nel mio passato ho usato weblogic, websphere, Jboss, tomcat e jetty. Ho usato i primi tre solo quando sono stato costretto a usare gli EJB, ma anche se non li stai usando erano server di app di grandi dimensioni e talvolta difficili da configurare e funzionare correttamente. Tomcat e Jetty sono molto migliori e più facili da configurare, ma sono ancora maiali delle risorse.
Hosting di app:
Se non stai utilizzando il tuo server, è davvero difficile trovare hosting condiviso per le tue app java a un prezzo ragionevole. Il motivo principale è perché le app java richiedono molta più memoria rispetto ad altre lingue, quindi non ha senso per un provider di hosting condiviso spendere la loro preziosa RAM eseguendo un sito java, quando potevano eseguire 5 siti php nello stesso posto. Ciò significa che ci sono meno fornitori che offrono hosting Java, il che a sua volta comporta costi più elevati per la gestione del tuo sito Web.
Tempo di sviluppo:
Quando ho sviluppato Java, mi sono trovato molto più lento di quello che posso fare in Python. Avrei bisogno di fare un cambiamento, compilare, ridistribuire e quindi testare, e questo rallenta il processo iterativo. So che ci sono modi per renderlo più veloce, ma anche nella migliore delle ipotesi, mi sono sentito molto più lento di quello che posso fare in Python.
In Python c'è anche molto meno codice plateplate per fare la stessa cosa, quindi dedico anche meno tempo allo sviluppo del codice.
Java sembra troppo ingegnerizzato in molte parti, molte API e interfacce sono semplicemente complicate per quello che vuoi fare. E tutti e il loro fratello pensano di essere un architetto Java e questo si traduce in grandi sistemi complicati che sono difficili da usare e sviluppare.
IDE:
Quando stavo sviluppando in Java, mi sentivo bloccato all'IDE, ero perso senza di esso. IntelliJ è il migliore IDE sul mercato ed è stato difficile passare a Python perché non c'era niente di simile per Python. Quindi, invece di un IDE, ho appena usato textmate, che è solo un normale editor di testo. All'inizio è stato difficile, ma poiché era solo un editor di testo, era un'applicazione davvero veloce e reattiva. Potrei aprire il mio intero progetto in pochi secondi, mentre quando voglio aprire un progetto in un IDE potrebbe volerci un minuto o più, con una macchina con una tonnellata di RAM. I produttori di IntelliJ sono usciti con un editor di pitone chiamato pycharm, l'ho comprato quando è uscito per la prima volta ed è fantastico. Ma quello che ho capito è che non ho bisogno di un IDE per Python, sto bene con un editor di testo. Quando torno a lavorare su app Web Java che devo fare di tanto in tanto, provo a utilizzare l'editor di testo, ma non l'ho ancora imparato. Personalmente ho bisogno dell'IDE per Java di più perché se sbaglio qualcosa ci vuole più tempo per ricompilare e ridistribuire, il che mi rallenta.
ORM:
Quando ho iniziato a usare Hibernate come ORM, ho pensato che fosse fantastico, che avesse dei problemi e non fosse perfetto, ma era meglio di quello che stavo facendo prima. Ne ero felice, fino a quando ho fatto un'applicazione con l'ORM di Django su un progetto Python, e questo mi ha aperto gli occhi, ecco come dovrebbe funzionare un ORM. Dopo quel progetto sono tornato in letargo e mi sono sentito deluso e desideravo tornare all'ORM di Django. Un altro grande ORM in pitone è sqlalchemy, che è simile all'ORM di Django, ma un po 'diverso. Ho un'esperienza limitata con ORM di ROR, ma da quello che ricordo, è stato anche abbastanza buono.
Modelli:
I sistemi di template web in Java non sono così buoni, e penso di averli provati tutti (piastrelle, freemarker, velocità, ecc.). La maggior parte di essi offre solo funzionalità di base e sono una seccatura con cui lavorare. Sul lato Python, i miei due preferiti sono i modelli Django e Jinja2, hanno tutto ciò di cui potrei avere bisogno in un motore di template e sono davvero facili da usare.