2009-09-28 11 views
7

Ho svolto alcune ricerche per portare la mia esperienza di programmazione e passare al mercato della programmazione Java, a causa di una combinazione di interessi personali e forze del mercato locale. Come è possibile ricavare dal titolo, la maggior parte della mia esperienza è stata nella creazione di siti e applicazioni basate sul Web, e mi piacerebbe trasferire la maggior parte delle mie precedenti esperienze possibili.Quando Java è la scelta giusta per le applicazioni basate sul Web

Una cosa su cui non sono riuscito a trovare una risposta concreta per quando un sito web o un progettista di applicazioni basate su Web sembrano andare con una soluzione basata su Java, rispetto ad altre opzioni attualmente sul mercato. Quali opzioni fornirebbe a Java che avrebbe un progettista selezionare Java come linguaggio di programmazione di base su cui basare un progetto?

Grazie per le risposte costruttive che possono arrivare da questa richiesta.

EDIT: avrei dovuto includere l'avvertenza se altri fattori sono uguali, ad esempio se l'hardware, il software, l'abilità di sviluppatore in java sono all'altezza di dove dovrebbero essere per tali progetti e così via.

risposta

4

Si consideri anche questo: Java tende a essere eseguito su server di app in cui è in esecuzione un programma globale persistente e si generano thread/processi separati per soddisfare singole richieste. Tuttavia, se il principale VM globale gracchia per qualche motivo, l'intera app può andare giù. Il vantaggio, ovviamente, è che si ottengono risorse a livello di applicazione/sistema che è possibile inizializzare e utilizzare in modo continuo per tutte le richieste

Altri ambienti come PHP in pratica abbattono e ricostruiscono l'intero ambiente per ogni richiesta. È possibile codificare la persistenza dei dati a livello di applicazione utilizzando un database, ma non è possibile ottenerlo gratuitamente. D'altra parte, se un processo php gracida durante l'elaborazione dei dati delle app, non uccide l'intero sistema, poiché l'intero ambiente viene solo demolito/ricostruito per la successiva richiesta.

2

Credo che la saggezza convenzionale su questo argomento sia che Java è più adatto a sistemi molto grandi che richiedono la disciplina della tipizzazione statica. Inoltre, in siti molto frequentati, Java può utilizzare meno memoria ed essere più veloce della maggior parte degli interpreti.

(Destra fuori dalla scatola, Java vuole molta memoria. Ma su un sistema occupato Java ha una sola copia di tutto il codice in esecuzione.)

Ci sono anche alcuni motivi prosaici a bastone con Java, per specifiche siti. Potrebbero aver bisogno dell'integrazione di back-office o di qualche altro grande pezzo di codice esistente.

+5

Un'app scritta male non funzionerà in nessuna lingua. Usando Perl e memcached, serviamo oltre 9 milioni di pagine viste al mese, non perché Perl sia lo schwa, ma perché l'architettura e l'infrastruttura del nostro sito sono ben progettate. – BryanH

+0

Sono certamente d'accordo. – DigitalRoss

+0

@DigitalRoss, ho modificato il tuo post per rimuovere alcuni refusi, sembra che la tua modifica li abbia ripristinati –

13

Il fattore principale è quello in cui i tuoi sviluppatori sono esperti. Se hai un gruppo di sviluppatori Java, vai con Java.

+6

Così vero. Java e .Net sono alla pari in questo senso, entrambi possono fare il lavoro abbastanza bene e si tratta solo di chi hai a disposizione, i costi dell'hardware e del software impallidiscono rispetto al costo del team di sviluppo. – Spence

+2

se ti interessa il linguaggio in cui i tuoi sviluppatori sono abili, allora probabilmente non hai questo grande numero di sviluppatori. Un grande sviluppatore troverà lo strumento giusto per il lavoro giusto e lo userà. – Zak

2

Assicurarsi di includere una curva di apprendimento nel tempo di sviluppo se gli sviluppatori non hanno familiarità con la lingua scelta.

+1

Compreso il tempo per sistemare le cazzate. –

1

Vorrei utilizzare Java se esistesse una libreria o un framework che fornisse funzionalità specifiche che nessun altro linguaggio ha fatto (o meno).

Ad esempio, se disponessi di una libreria java integrata per l'esecuzione del nostro frantumatore di griglie Gruntmaster, sarebbe logico utilizzare Java per creare un'app che doveva controllare il Gruntmaster.

Qualcuno potrebbe dire che qualunque sia la lingua ufficiale del proprio negozio è la lingua che si dovrebbe usare - non sono d'accordo con tale regola, poiché nella mia esperienza un buon sviluppatore può imparare qualsiasi lingua.

Non esiste una regola dura e veloce altrimenti; ogni lingua ha i suoi punti di forza e di debolezza. Il fatto che tu stia facendo questa domanda su Java mi dice che non ti è familiare.

Ti suggerisco di andare avanti e creare un'app o tre in Java, quindi lo saprai. :)

2

Per la maggior parte, la migliore tecnologia è quella che state già utilizzando.

Se disponi di codificatori che conoscono java, gli amministratori di sistema possono configurare le app java e sapere cosa fare quando un'applicazione java smette di funzionare e i project manager che sanno come pianificare e pianificare accuratamente una distribuzione Java, è necessario un motivo molto, molto convincente per scegliere qualcos'altro come .NET per un nuovo progetto, anche se .NET è "migliore" (qualunque cosa significhi).

Ci sono, naturalmente, delle eccezioni; se stai usando qualcosa di obsoleto e/o non sarà supportato in futuro (come il classico ASP), o non hai sistemi legacy, allora è il momento di usare qualcosa di nuovo.

1

C'è pochissima separazione tra le funzionalità delle varie tecnologie oggi disponibili per la programmazione web.

Java una volta era la scelta predefinita poiché superava di gran lunga le capacità delle tecnologie concorrenti, ma non è più vero.

La risposta Microsoft è maturata rapidamente; i tempi dell'ASP classico sono ormai lontani. Net ora fornisce tutte le capacità e la facilità di programmazione offerte da Java.

Nuovi linguaggi come PHP e Ruby sono arrivati ​​o sono diventati molto più mainstream e sono anche valide scelte in base alle esigenze di programmazione.

Così come molti altri dicono che si riduce a quale linguaggio voi o i vostri sviluppatori hanno familiarità.

+4

Uno degli svantaggi principali dello stack Microsoft è comunque legato esclusivamente ai sistemi operativi Microsoft. Uno potrebbe o potrebbe non piacere Windows, ma la possibilità di eseguire su diversi sistemi operativi è quasi sempre un vantaggio. –

3

Concordato con molti dei precedenti poster, ma una possibile considerazione è la velocità di runtime.

Se si utilizza un server stack LAMP di base, con PHP4 o inferiore, Python o Perl, se non si imposta la pre-compilazione, tutti gli script dovranno essere ricompilati in fase di runtime. Ciò può causare un enorme stress sul server per applicazioni ad alta intensità. Se ti trovi nella situazione in cui non puoi abilitare la pre-compilazione per LAMP, ma puoi farlo per Java (la maggior parte dei server Java richiede questo), questo dovrebbe essere motivo di preoccupazione. Lo svantaggio è che potrebbe essere necessario ricompilare grossi blocchi della tua applicazione web ogni volta che lo modifichi. Mi rendo conto che questo sta diventando sempre meno un problema al giorno d'oggi, ma è qualcosa da verificare.

1

Un altro aspetto da considerare è la possibilità di utilizzare un vasto ecosistema di librerie open source.

Lingue come PHP, Perl o Ruby hanno un tale spazio di mercato (quasi) integrato. Net è piuttosto chiuso in questo senso. D'altra parte, Java ha un ecosistema di biblioteche di grandi dimensioni e di livello enterprise da cui scegliere e comunità da cui imparare.

1

Praticamente sono d'accordo con i ragazzi sulla possibilità di sfruttare l'infrastruttura umana esistente.

Tecnologicamente, Java è abbastanza buono per le cose Web non standard, come l'uso pesante di AJAX (GWT, DWR, Comet in primis), Mobile (dove generalmente sono necessari molti dati di sessione e meno bling front-end) , cose davvero semplici che saranno messe sotto un carico immenso (rimbalzeranno sicuramente ad ogni Apache mod_XXX ogni volta, l'unica cosa più veloce nell'uso diffuso è il codice nativo).

Problemi correlati