Quando Java è una buona scelta per lo sviluppo web? [chiuso]


35

Quando Java è una buona scelta per lo sviluppo web?

Per favore, non dire "Quando hai un team di sviluppo che conosce solo Java".


5
Può essere chiesto come, quale caratteristica rende Java come il mio linguaggio di sviluppo web?
Abimaran Kugathasan,

1
Un leggero svantaggio dell'uso di Java è la mancanza di un framework dominante sul mercato. Nessun framework basato su Java è davvero salito in cima alla pila (come Struts aveva fatto in passato). Personalmente mi rivolgo a Spring MVC se lavoro con un'app Spring o Grails per qualsiasi altra cosa (come puoi chiamare in qualsiasi momento a Java).
Martijn Verburg,

Improvvisamente ottenuto 25 punti da questa domanda!
Gulshan,

stiamo prendendo in considerazione il software opensource esistente?
Jonathan,

2
"come Struts ha avuto in passato": cosa c'è di sbagliato nell'utilizzare gli strut oggi (a parte il fatto che non è più di moda)?
Giorgio

Risposte:


35

Dati i numerosi framework disponibili, la maturità della piattaforma ecc., Sono tentato di dire "quasi sempre". Quindi, ecco alcuni motivi per cui non dovresti usare Java:

  • come un negozio MS puro, probabilmente preferisci farlo nel modo .net
  • se hai bisogno del webhoster più economico possibile, probabilmente hai solo PHP come tua scelta
  • se vuoi farlo il più rapidamente possibile, Ruby on Rails, Grails o Django sono probabilmente più adatti alle tue esigenze
  • se il tuo team di sviluppo conosce solo XYZ, dove XYZ! = Java, è meglio usare XYZ

7
Quindi, usiamo Java se non siamo un negozio MS, abbiamo l'intenzione di spendere soldi per l'hosting, abbiamo abbastanza tempo per lo sviluppo usando Java e abbiamo sviluppatori Java. Va bene?
Gulshan,

Gulshan: sì, puoi dirlo in questo modo
user281377

3
Ci sono molte altre ragioni come è gonfio, intraprendente ed è Java (l'ultimo può essere ignorato se usi Scala o qualcos'altro per la JVM).
Raynos,

1
@Raynos, allora cosa consigli invece?

2
@ ThorbjørnRavnAndersen dipende davvero da quali sono i requisiti. Se i requisiti sono generici (non di nicchia), utilizzare la piattaforma più conveniente per sviluppatori e server.
Raynos,

19

Java è utilizzato in siti Web di piccole e medie dimensioni. Il punto cruciale è che c'è molto meno hosting web gratuito per i siti Web Java rispetto ad esempio a PHP, il che significa che se non si dispone di risorse sufficienti per ospitare il proprio server Web, probabilmente non si sceglierà Java.

Si noti che con Java EE 6, in particolare il profilo Web, sono incluse molte tecnologie standard che possono creare applicazioni Web molto potenti senza dover codificare molto. Purtroppo non è ancora abbastanza mainstream.

Si noti che questo è cambiato un po 'di recente con Google Application Engine, che consente di distribuire applicazioni Web Java standard (con alcune restrizioni) nel cloud gratuitamente per siti a traffico medio-basso.


In tutti i casi non ospiterò il mio sito Web in un hosting web gratuito. Ma la domanda c'è un problema con l'hosting web java pagato? È molto costoso per esempio?
Goma,

1
@saeed, non in quanto tale. Molte persone scelgono l'opzione e il codice più economici di conseguenza.

La jave è molto costosa di altre, per esempio? c'è un hosting condiviso per java?
Goma,

@Saeed, ci sono alcuni motivi tecnici per cui non è possibile raggruppare più JVM su una singola scatola Linux o Windows come è possibile creare istanze LAMP condivise, il che implica implicitamente che una JVM ospitata è più costosa di una LAMP ospitata. Google utilizza una JVM diversa, il che significa che può offrirla gratuitamente.

@ Thorbjörn: hai qualche link su come lo fa Google? Ho sentito che usano Jetty, ma non so molto di più sulla loro soluzione.
Jonas,

12

Quando la tua piattaforma è UNIX / Linux e hai bisogno di un ricco set di strumenti, come Mappatura oggetti / relazionali, Sicurezza, Orchestrazione complessa di servizi Web, ecc.
(Non stiamo parlando di semplici siti Web, vero?)


1
Puoi ottenere queste cose anche dai linguaggi di scripting: guarda Python e SQLAlchemy. Anche Rails utilizza un ORM (ActiveRecord) e ha una buona sicurezza.
Brian D.

3
Anzi, ma non credo che siano potenti come Hibernate, Spring Framework, BPEL frameworks.
Sorantis,

1
Cosa c'è di sbagliato con Java su non UNIX / Windows.
Tom Hawtin: affronta il

2
Niente. Ma su Windows hai .NET
Sorantis il

2
-1 Stai facendo sembrare che nessuna delle alternative non abbia strumenti decenti disponibili.
Raynos,

9

Ogni volta che ancora un altro team Java mi fa incazzare, sfogo cercando domande come questa. Lasciami ripetere. Sono uno sviluppatore lato cliente e lo sono da quasi 5 anni. Ho lavorato su siti che vanno dai microscopi unici per lo più a contenuto, a siti enormi come Sears, a siti più sofisticati di tipo app in cui è richiesta una profonda esperienza dell'interfaccia utente. Ho avuto a che fare con Rails, PHP, .net web form (ew), .net MVC (molto meglio) e una disposizione bouquet di soluzioni Java per lo sviluppo web accompagnata da sviluppatori e team che sono stati tutti disastri completi da affrontare. Scrivo anche un po 'di Python e sto iniziando a scavare Django.

La mia esperienza con i team Java è stata universalmente terribile. Gli strumenti sono sempre una PITA. Gli sviluppatori non vogliono mai credere di aver fatto qualcosa di sbagliato e indurli a reinvestigare il proprio territorio una volta che hai escluso un problema alla tua estremità è come tirare i denti. La mia prima vittima nel trattare con i team Java nella mia esperienza è il tempo di sviluppo convertito in tempo di e-mail scrivendo lunghe e lunghe spiegazioni del perché il problema è definitivamente alla fine. L'HTML non è generalmente il loro problema a meno che tu non voglia effettivamente controllarlo. Quindi è probabile che tutto vada all'inferno perché in realtà vuoi spostare alcuni div di livello superiore.

Ci sono cose sulla lingua che non mi piacciono, ma penso che il vero problema sia la cultura e il fatto che l'accettazione sia così diffusa, hai una tonnellata di mediocrità nel mezzo. La cultura che sospetto scaturisce dal modo in cui viene commercializzato Java. Scrivi una volta, distribuiscilo ovunque. Traduzione: "Devi solo imparare una cosa!" Le persone che trovano fondamentalmente attraente vogliono maneggiare Java come un martello gigantesco per ogni unghia con un minimo di affinamento del loro mestiere per quanto riguarda lo sviluppo del web.

Quindi, se hai sviluppatori che conoscono Java e altre lingue ma che in realtà preferiscono Java, direi di sì, vai avanti se sembra la soluzione giusta. Ma se hai sviluppatori Java che conoscono Java e tutto il resto soddisfa a malapena i criteri per renderlo effettivamente un punto elenco sul loro curriculum, chiedi loro di creare una semplice app con una varietà di pagine semi-complesse sull'estremità HTML e provare questo test semplice. Rompi un po 'di HTML. Prova a convincerli a capire cosa c'è che non va. Se il problema immediato che iniziano a risolvere è deviare la colpa da loro stessi, tenerli lontani! @ # $ Dallo sviluppo web. Il web dev è multidisciplinare e richiede un interesse attivo nel settore per avere successo. Non è un posto per persone che vogliono solo mantenere la conoscenza di una lingua e sono più inorridite dai problemi che interessate a risolverli.

Non sto affermando che Java stessa è la radice dell'incompetenza e ho sentito che la primavera è buona. Sono sicuro che ci sono team Java competenti là fuori. Non ne ho ancora incontrato uno e non penso che sia una coincidenza. Penso che Sun abbia molto a che fare con questo. Penso anche che gestire team web come o sotto dipartimenti IT abbia molto a che fare con questo.


1
Ho gli stessi problemi che descrivi, ma non ho mai pensato che potesse dipendere dal linguaggio di programmazione. Pensi che le persone che programmano, diciamo, in PHP, siano più aperte e flessibili?
Виталий Олегович,

PHP ha lo sviluppatore al 100% e meno la cultura che lo circonda. Non amo la sua mancanza di coerenza alla base, ma mi fiderei del lavoro di un team PHP di medio livello per lo sviluppo web in un modo in cui non mi fiderei di un team Java. Aiuta che è improbabile che uno sviluppatore di PHP esperto abbia lavorato con qualsiasi cosa tranne il web e probabilmente è stato assunto per esperienza su gradi / credenziali. Il problema Java potrebbe essere in parte dovuto alla rigidità intrinseca del linguaggio, ma onestamente penso che si tratti più della natura del modo in cui gli sviluppatori Java vengono formati, delle soluzioni Java adottate e degli sviluppatori Java assunti.
Erik Reppen,

1
@Erik Reppen: Penso che tu stia sovra-generalizzando la tua esperienza: non penso che i team Java siano peggiori dei team che lavorano in altre lingue o, almeno, non peggiori della media. Conosco due ottimi negozi che lavorano molto con Java. Il primo, fa progetti in Java e in Ruby (circa il 50% ciascuno). Il secondo lavora principalmente in Java ma ha realizzato progetti individuali a Scala e in Common Lisp.
Giorgio

@Giorgio L'ho perso ma ho lavorato con altre persone che gestiscono il back-end tramite .NET, Rails, Java e PHP. Non sto contando le esperienze di una volta con altre lingue e gli sviluppatori schifosi certamente non sono unici di Java. Inoltre, come ho detto, sono sicuro al 100% che ci siano team Java molto competenti là fuori. Qualcuno non deve fare schifo ma IMO, non sto generando troppo. Si è verificato un problema con gli sviluppatori Java a livello mediano. È un fenomeno culturale nella mia esperienza. Così brutto che ho smesso di lavorare con i negozi Java a meno che non conosca gli sviluppatori in questione.
Erik Reppen,

5

Java è perfetto per i piccoli siti Web. Puoi far funzionare le pagine JSP molto rapidamente con un server Web Java come Tomcat , ad esempio.

Sebbene nella mia esperienza Java sia più comune per i siti Web di grandi dimensioni in cui vi è una maggiore necessità di elaborazioni complesse sul lato server, in questo caso troverete framework Java più sofisticati utilizzati come JavaServer Faces (JSF).

È importante notare che storicamente un'installazione Java completa non era disponibile in molte configurazioni di web hosting a basso costo, quindi ciò potrebbe spiegare la prevalenza di altre lingue come PHP in questi ambienti.


Questo significa che l'hosting di applicazioni Web Java è troppo costoso? o non è economico come PHP per esempio? puoi darmi un buon link host weh per Java in modo che io possa vedere i prezzi? Ho fatto una ricerca, ma non so quale abbia i prezzi standard, quindi posso avere una visione d'insieme.
Goma,

1
l'hosting di applicazioni Web Java non è costoso, è sufficiente un provider di hosting che ti consenta di eseguire applicazioni Java. Qualsiasi ambiente di hosting Linux in cui si ottiene un account di accesso alla macchina andrà bene: uso Ubuntu su Amazon Web Services per il mio hosting Java.
Mikera,

2

Le ragioni principali per l'utilizzo di Java nello sviluppo web si riducono a quanto segue:

  • Il cliente lo richiede. Nel bene o nel male, alcuni clienti hanno "liste tecnologiche accettate", e se proponete qualcosa che non è in quella lista, è meglio che abbiate una spiegazione davvero valida sul perché - e sul perché qualcosa nella lista non potrebbe essere usato.
  • Sviluppa su Windows, distribuisci su Unix. La maggior parte delle macchine di sviluppo sono Windows, alcune sono Mac e pochissime sono Linux, proprio come ci si aspetterebbe dalle normali macchine client. Tuttavia sul server, hai la stessa probabilità di vedere una forma di Unix come sei un server Windows. Java è probabilmente il più vicino a scrivere una volta distribuito ovunque (non è perfetto, ma migliore di alcune alternative).
  • Scelta gestionale. Ammettiamolo, scegliere Java su un'altra lingua avrà più a che fare con la capacità di trovare programmatori e sostituire i membri del team che lasciano il progetto piuttosto che basarsi esclusivamente sui meriti della lingua.

Circa 2: configurare l'IDE in modo corretto. Eclipse ha questa stupida idea di impostazione predefinita di una codifica di file Windowish che può causare danni in un server Linux.
Eldelshell,

In realtà mi riferivo alle ipotesi su dove vivono determinati file e ogni volta che devi interagire con il sistema operativo.
Berin Loritsch, il

"C è probabilmente il più vicino a scrivere una volta distribuito ovunque" Ho risolto questo problema per te.
Raynos,

@Raynos, se solo fosse vero. Sfortunatamente, a meno che tu non abbia le stesse librerie standard su tutte le piattaforme, ciò non può valere. Il linguaggio di base C è molto portatile, te lo dico io. Tuttavia, tutto ciò che è specifico del sistema operativo (come la creazione di un thread, l'apertura di un socket o la creazione di un elemento dell'interfaccia utente) ha qualcosa nell'API che non può essere trasferito con una semplice ricompilazione. Con Java, non è necessario ricompilare, tanto meno modificare il codice per utilizzare la nuova API di sistema.
Berin Loritsch,

@BerinLoritsch intendi dire che dopo 40 anni non abbiamo API generiche per elementi specifici del sistema operativo che funzionano solo multipiattaforma con una semplice ricompilazione? Posso immaginare che sia vero negli anni '80.
Raynos,

2

Parlando tecnicamente:

  • Se è possibile definire un'architettura suscettibile all'ottimizzatore hot-spot.
  • Se anticipi la necessità del massiccio sovraccarico OO imposto da Java.

Se avessi avviato un'applicazione Web, avrei usato Ruby on Rails e progettato in modo tale che gli hotspot potessero essere scambiati quando RoR raggiungeva il suo limite di ridimensionamento delle prestazioni.

Java ha un odore definito di COBOL e "i programmatori di fascia bassa usano Java" in sospeso, e i fiaschi Oracle non stanno aiutando la reputazione. Se hai la scelta , scegli una lingua che attiri i migliori sviluppatori.


"scegli una lingua che attiri i migliori sviluppatori." Esempio?
Eldelshell,

1
@Ubersoldat: Go, Ruby, Clojure, Haskell, Python sono tutte lingue che lo fanno.
Paul Nathan,

Python è carino perché in realtà riesce a molte delle cose che Java pretende di fare. E non è difficile farlo funzionare bene con gli altri quando devi risolvere un problema con un'altra lingua. Non so di Ruby, ma gli sviluppatori di Rails sono una specie di crapshoot nella mia esperienza. È l'effetto JQuery. Alle persone che sanno cosa stanno facendo piace perché è veloce ed efficace nelle mani giuste. Alle persone che non sanno cosa stanno facendo piace perché non devono sapere così tanto.
Erik Reppen,

@Erik Reppen: D'altra parte, Ruby come lingua ha un design più gradevole e più coerente di Python. Penso davvero che questi confronti linguistici siano spesso una questione di gusti e si tende a favorire le lingue con cui hanno più familiarità.
Giorgio

0

È semplice: utilizzare Java quando le prestazioni del back-end sono una delle principali preoccupazioni. C'è più sovraccarico durante la codifica, ma il codice verrà eseguito letteralmente tra il 1 ° e il 1 ° e 1 ° / 500 ° del tempo. Php, Ruby e altre lingue tipizzate dinamicamente saranno sempre molto più lente dei server java o .net.

La maggior parte delle soluzioni per il web non avrà bisogno di questo. Twitter non ha abbandonato Rails fino a quando non hanno iniziato ad avere un picco di popolarità, ad esempio.


-1

Non l'unico motivo, ma con la crescente popolarità della creazione di siti Web con sofisticati front-end simili ad applicazioni pur avendo la logica di fare "cose" sul server - non dovrebbe essere necessario alcun motivo per spiegare perché Java sia almeno uguale a qualsiasi altro opzione sul lato server. Ma alla fine del client, se qualsiasi javascript si trasformerà rapidamente in un incubo di manutenzione del codice e facendo uso di GWT per mantenere queste cose a distanza di armi in modo da poter programmare in Java, puoi avere il meglio di entrambi i mondi con il tuo server facendo il sollevamento di carichi pesanti e il processore di un cliente che dà loro l '"esperienza". Impara a integrarlo con qualcosa come jQuery e puoi avere anche tutto il piacere per gli occhi che desideri.

Non alcun tipo di esperto delle alternative, ma se qualcun altro può proporne uno con lo stesso tipo di flessibilità e ampiezza, felice di sentirlo.


+1 per jQuery :)
abel

2
-1 per "javascript si trasforma in incubo per la manutenzione del codice", Questo è semplicemente un effetto collaterale di farti scrivere Java javascript agli sviluppatori Java senza alcuna formazione o apprendimento JavaScript. e il principale svantaggio di GWT è che si tratta di un'astrazione che perde, buona fortuna farla funzionare bene sui dispositivi mobili.
Raynos,

Il problema con la rigidità di Java, IMO, è che ti ritrovi con molti sviluppatori che non capiscono perché il loro codice è organizzato forzatamente come è in primo luogo. Quando tutto deve apparire come OOP, a volte il risultato inevitabile è che nulla è realmente.
Erik Reppen,

-1

Il motivo principale per cui sceglierei java è se è necessario utilizzare transazioni distribuite, che può essere una grande preoccupazione per molte aziende. Tuttavia, puoi ancora utilizzare il tuo linguaggio di scripting preferito per lo sviluppo Web e delegare il lavoro su Java solo quando hai bisogno di transazioni veloci / distribuite.


-1

Credo che sarebbe quando l'applicazione sarà molto complessa, con molte persone che la sviluppano, con molti moduli complessi, una logica aziendale complessa e deve comunicare con molte altre applicazioni aziendali.

Ad ogni modo, potresti sviluppare anche in Grails, che offre molte caratteristiche interessanti, facilita molto lo sviluppo e sta maturando molto velocemente.


-1

Java è ok, ma se le prestazioni non sono cruciali, puoi ottenere gli stessi risultati con meno sforzo in altre lingue.


2
"le prestazioni non sono di fondamentale importanza" quando è necessario scrivere in C e assembly non Java.
Raynos,

Benchmark vs. esperienza, i siti Java sono stati senza dubbio i peggiori nella mia esperienza come sviluppatore lato client. Questo potrebbe essere un problema di livello mediano dei talenti più che una cosa linguistica.
Erik Reppen,

2
@ErikReppen: Sicuramente un talento. La velocità Java su un server è seconda solo a C / C ++. PHP o Rails non possono essere confrontati. Ma le librerie di Java e alcuni degli strumenti rendono troppo facile perdere tutta quella velocità facendo cose inutilmente complicate.
Zan Lynx,

-1

Java è un linguaggio di tipo statico ed è più economico degli altri linguaggi di tipo statico utilizzati per lo sviluppo Web, vale a dire C # e VB.net, se la tua azienda non ha un abbonamento MSDN. Le lingue tipizzate staticamente sono utili per progetti medio-grandi, regole di dominio complesse e molto codice back-end, perché puoi organizzare meglio le tue classi e gli IDE ti aiuteranno a trovare errori nel tuo codice.

Con linguaggi tipicamente dinamici, come PHP, Python, Ruby, il tuo sviluppo sarà molto più veloce, ma dovrai testare il tuo codice molto meglio. Se non hai molto tempo e denaro e le tue esigenze cambiano molto rapidamente e non devi fare calcoli molto complessi, le lingue dinamiche sono molto meglio.


-2

Sicurezza

Il motivo principale per le grandi aziende che scelgono Java rispetto ad altre soluzioni è perché è considerato molto più sicuro.

Ciò è dovuto principalmente al fatto che è supportato da un'azienda così grande (ora oracolo).

Va tenuto presente che Java offre un livello molto elevato di sicurezza e un eccellente supporto e analisi (anche se ha un prezzo).


7
Uhh ... e la sicurezza viene magicamente dalla lingua stessa o cosa?
Mchl

1
Sai che Oracle NON è l'unico fornitore di container servlet Java, vero?
Mchl

6
Guerra santa! Combatti Combatti!
abel

2
@Mchl Alcuni provengono dalla lingua o meglio dalla sua VM. Quante volte hai visto hack di sovraccarico del buffer rivolti ai server di app Java? Non vale la pena. Detto questo, Java è considerato più "sicuro" dall'industria di quanto non lo sia, e un falso senso di sicurezza può tornare indietro.
biziclop,

1
Il mio punto qui era che devi differenziare tra Java come linguaggio e ambienti di runtime Java. Non c'è nulla che renda il linguaggio Java più o meno sicuro di qualsiasi altra lingua. D'altra parte, le JVM sono progettate (tra le altre cose) per eseguire il bytecode Java "sandbox", ma la loro sicurezza dipende dall'implementazione specifica. Un buon punto sul falso senso di sicurezza però.
Mchl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.