Domanda

Mi chiedo se esista una facilità simile a Django nello sviluppo di app Web combinata con una buona distribuzione, debug e altri strumenti?

Django è un framework molto produttivo per la creazione di siti ricchi di contenuti;il migliore che ho provato e una boccata d'aria fresca rispetto ad alcune delle mostruosità di Java là fuori.Tuttavia è scritto in Python, il che significa che c'è poco supporto reale in termini di distribuzione/packaging, debug, profiler e altri strumenti che rendono molto più semplice la creazione e la manutenzione delle applicazioni.

Ruby ha problemi simili e anche se mi piace Ruby tanto meglio di quanto mi piaccia Python, ho l'impressione che Rails sia più o meno sulla stessa barca in Django quando si tratta di gestire/supportare l'app.

Qualcuno qui ha provato sia Django che Grails (o altri framework web) per progetti non banali?Come si sono confrontati?

È stato utile?

Soluzione

Hai chiesto qualcuno che usasse sia Grails che Django.Ho lavorato su entrambi per grandi progetti.Ecco i miei pensieri:

IDE:Django funziona molto bene in Eclipse, Grails funziona molto bene in IntelliJ Idea.

Debug:Praticamente lo stesso (supponendo che tu usi IntelliJ per Grails ed Eclipse per Python).Debug delle fasi, ispezione delle variabili, ecc...non è mai necessaria una dichiarazione di stampa per nessuno dei due.A volte i messaggi di errore di Django possono essere inutili, ma i messaggi di errore di Grails sono generalmente piuttosto lunghi e difficili da analizzare.

È ora di eseguire un test unitario:django:2 secondi.Graal:20 secondi (entrambi i test stessi vengono eseguiti in una frazione di secondo, è la parte relativa al caricamento del framework per eseguirli che prende il resto...come puoi vedere, Grails è frustrantemente lento da caricare).

Distribuzione:Django:copia e incolla un file in una configurazione di Apache e, per ridistribuirlo, basta modificare il codice e ricaricare Apache.Graal:crea un file .war, distribuiscilo su Tomcat, risciacqua e ripeti per ridistribuirlo.

Linguaggi di programmazione:Groovy è TOTALMENTE fantastico.Lo adoro, più di Python.Ma certamente non ho lamentele.

Plugin:Graal:molti plugin non funzionanti (e possono utilizzare ogni libreria Java di sempre).Django:alcuni plugin stabili, ma sufficienti per fare la maggior parte di ciò di cui hai bisogno.

Banca dati:Django:migrazioni di schemi utilizzando South e relazioni generalmente intuitive.Graal:nessuna migrazione dello schema e per impostazione predefinita elimina il database all'avvio...WTF

Utilizzo:Django:startup (specialmente nello spazio Gov 2.0), negozi di sviluppo web indipendenti.Graal:impresa

Spero che aiuti!

Altri suggerimenti

Tuttavia è scritto in Python, il che significa che c'è poco supporto reale in termini di distribuzione/imballaggio, debug, profiler e altri strumenti che rendono molto più semplice la costruzione e il mantenimento delle applicazioni.

Python ha:

  1. UN ottimo debugger interattivo, che fa un ottimo uso di Python SOSTITUZIONE.
  2. facile_installazione anv virtualenv per la gestione delle dipendenze, il confezionamento e la distribuzione.
  3. funzionalità di profilazione paragonabile ad altre lingue

Quindi IMHO non dovresti preoccuparti di queste cose, usa Python e Django e vivi felicemente :-)

Fortunatamente per te, la versione più recente di Django corre su Jython, quindi non è necessario abbandonare l'intero ecosistema Java.

Parlando di framework, quest’anno ho valutato:

  1. Piloni (Pitone)
  2. webpy (Pitone)
  3. Symfony (PHP)
  4. TortaPHP (PHP)

Nessuno di questi framework si avvicina alla potenza di Django o Ruby on Rails.Basandomi sull'opinione del mio collega potrei consigliarti Kohana struttura.Lo svantaggio è che è scritto in PHP e, per quanto ne so, PHP non dispone di strumenti eccezionali per il debug, la profilazione e il confezionamento delle app.

Modificare: Ecco un ottimo articolo sulla creazione di pacchetti e sulla distribuzione di app Python (in particolare le app Django).È un argomento caldo nella comunità di Django ora.

L'affermazione che grails cancella il database all'avvio è completamente sbagliato.Il suo comportamento all'avvio è completamente configurabile e facile da configurare.Generalmente utilizzo create-drop quando eseguo un'app in modalità sviluppatore.Utilizzo l'aggiornamento quando eseguo test e produzione.

Adoro anche l'elaborazione bootstrap che mi consente di preconfigurare utenti di test, dati, ecc. in base all'ambiente in Grails.

Mi piacerebbe vedere qualcuno che ha davvero costruito e implementato alcuni progetti commerciali commentare i pro / contro.Sii una lettura davvero interessante.

Graal.

Grails assomiglia proprio a Rails (Ruby), ma utilizza groovy che è più semplice di Java.Utilizza la tecnologia Java e puoi utilizzare qualsiasi libreria Java senza problemi.

Scelgo anche Grails piuttosto che la semplicità e ci sono molte librerie Java (come jasper report, jawr ecc.) e sono felice che ora si uniscano a SpringSource che rende solida la loro base.

Ho due amici che inizialmente hanno iniziato a scrivere un'applicazione utilizzando Ruby on Rails, ma hanno riscontrato una serie di problemi e limitazioni.Dopo circa 8 settimane di lavoro, hanno deciso di valutare altre alternative.

Si stabilirono sul Struttura del catalizzatore, e Perl.Ciò è accaduto circa 4 mesi fa e hanno ripetutamente parlato di quanto sta migliorando l'applicazione e di quanta maggiore flessibilità hanno.

Con Perl hai a tua disposizione tutto CPAN, oltre alla grande quantità di strumenti inclusi.Suggerirei di dargli almeno un'occhiata.

Il problema della "buona distribuzione" - per Python - non ha il profondo significato che ha per Java.

La distribuzione di Python per Django consiste fondamentalmente nello "spostare i file".Se lo desideri, puoi eseguire direttamente la directory del trunk di subversion.

Puoi, senza sudare troppo, usare Python distutils e costruisci te stesso un kit di distribuzione che inserisca le tue app Django nei pacchetti del sito Python.Non ne sono un grande fan, ma è davvero facile da fare.

Dato che il mio materiale funziona su Linux, ho semplici script "install.py" che spostano il materiale dalle directory Subversion a /opt/this E /opt/that directory.Utilizzo le impostazioni di un percorso esplicito nella mia configurazione di Apache per denominare le directory in cui risiedono le applicazioni.

L'applicazione delle patch può essere eseguita modificando i file sul posto.(Una cattiva politica.) Preferisco modificare la posizione SVN ed eseguire nuovamente la mia piccola installazione per essere sicuro di avere effettivamente tutti i file sotto controllo.

cakephp.org

Cakephp è davvero buono, molto vicino a Ruby on Rails (1.2).È in php, funziona molto bene su host condivisi ed è facile da implementare.

L'unico lato negativo è che la documentazione è un po' carente, ma la ottieni rapidamente e inizi rapidamente a fare cose interessanti.

Consiglio vivamente cakephp.

Personalmente ho realizzato alcuni progetti piuttosto grandi con Django, ma posso confrontarmi solo con dette "montrosità" (Spring, EJB) e cose di bassissimo livello come Twisted.

I framework Web che utilizzano linguaggi interpretati sono per lo più agli inizi e tutti (mantenuti attivamente, cioè) stanno migliorando ogni giorno.

Per "buona distribuzione" lo stai confrontando con i file EAR di Java, che ti consentono di distribuire applicazioni web caricando un singolo file su un server J2EE?(E, in misura minore, file WAR;I file EAR possono avere file WAR per progetti dipendenti)

Non credo che Django o Rails siano ancora arrivati ​​a quel punto, ma potrei sbagliarmi...zuber ha segnalato un articolo con maggiori dettagli sul lato Python.

Capistrano potrebbe aiutare dal lato Ruby.

Sfortunatamente, non ho lavorato molto né con Python né con Ruby, quindi non posso dare una mano con profiler o debugger.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top