Ad oggi, useresti JBoss o Glassfish (o un altro) come server Java EE per un nuovo progetto? [chiuso]


136

Se oggi avessi avviato un nuovo progetto Java EE che dovrebbe concludersi tra circa un anno, quale server delle applicazioni sceglieresti e perché?

Parte della tua risposta dovrebbe includere i tuoi argomenti per la tua decisione. E anche quanta esperienza hai con il server Java EE che scegli e con gli altri server disponibili sul mercato. Questi sono interessanti poiché tutti abbiamo un'idea delle indagini e abbiamo pensato che fosse stato inserito nella tua risposta.

Risposte:


181

Ho usato WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat e alcuni altri negli ultimi 10 anni. Quindi, se stavo prendendo in considerazione un nuovo progetto, mi farei prima alcune domande. Una cosa che non metterei più in discussione è che rifiuterei di usare i JSP se non fossi stato torturato fino a quando non avrei pianto per la mia mamma.

Devo essere compatibile / distribuire a un prodotto specifico a causa del mandato di qualcuno? Non c'è modo di ignorarli o convincerli altrimenti? Se è così, c'è la tua risposta.

Devo usare gli EJB? Veramente? Evitali, se possibile, sono davvero necessari solo per sistemi di grandi dimensioni di livello aziendale. Ricorda che sono solo strumenti e strumenti importanti (qualcuno può dire "Golden Sledgehammer"?). Sono pesantemente abusati, quindi chiedo davvero se ne hai bisogno. Se ne hai bisogno, ciò rimuove diverse opzioni tra cui la mia preferita, Jetty.

Devi usare una delle altre principali tecnologie J2EE come JMS, ESB, ecc.? Se è così, e non puoi davvero farne a meno, allora sei di nuovo vincolato a un contenitore J2EE completo. Pensa e indaga attentamente prima di impegnarti in BPM, ad esempio, ed evita AquaLogic BPM a (quasi) tutti i costi - è brutto all'estremo.

Se devi davvero utilizzare un contenitore J2EE completo, considera prima l'open-source perché è più robusto, meglio supportato e più economico. Hanno una base clienti più ampia e interazioni di supporto più aperte, quindi tendono a ottenere soluzioni migliori più velocemente. Tuttavia, la resina è immatura e la eviterei rispetto a GlassFish o JBoss - ho trovato problematico implementare e supportare. Preferirei JBoss a causa della sua più ampia base di clienti, maturità, ecc. GlassFish è più difficile da incorporare in un processo di compilazione / distribuzione automatizzato, ma potrebbe essere più bello per alcune delle sue caratteristiche specifiche (se ne hai bisogno).

Ho un motivo speciale per aver bisogno di Apache? Quindi inclinati verso Tomcat, forse più qualcosa.

Posso accontentarmi solo dei servlet? Quindi userei Jetty: è la soluzione più leggera, più veloce, più semplice e più flessibile. Se mi sto appoggiando a non poter usare Jetty, metterei in dubbio tutte le mie ipotesi sul perché. Si applica YAGNI.

La cosa migliore è usare StringTemplate / WebStringTemplate su Jetty: una soluzione pulita, robusta, veloce e gestibile senza costi di licenza, solida reputazione e supporto, ecc. È da qui che inizio oggi.

La maggior parte delle applicazioni / sistemi scelgono molte fantasiose funzionalità J2EE quando tutto ciò di cui hanno veramente bisogno sono servlet e JDBC con un'architettura / design decente. Domanda perché pensi di aver bisogno di più.

Tra i contenitori completi, eviterei WebLogic e WebSphere a meno che tu non stia supportando un sito Web pubblico MAJOR (il sito Web del mio attuale datore di lavoro è distribuito su WebLogic e ottiene undici + milioni di accessi al mese, altri sono stati comparabili). La vera pretesa di fama di WebLogic è il loro clustering relativamente semplice, ma evita le loro caratteristiche di blocco del fornitore proprietario a (quasi) tutti i costi. WebSphere è semplicemente un incubo che eviterei letteralmente a tutti i costi - mi rifiuto di fare progetti che coinvolgono WebSphere dopo aver fatto un paio in passato. Nessuno dei due prodotti vale le enormi spese di licenza, a meno che tu non abbia veramente un bisogno particolare che guida l'uso di una funzione proprietaria. In un decennio come architetto / ingegnere senior per molte aziende di Fortune 500, non ho ancora visto un tale bisogno. D'altro canto,

Anche per i siti Web pubblici molto grandi e ad alto traffico, i prodotti proprietari sono ancora discutibili. Preferirei spendere quel multimilionario di tasse di licenza su un buon hardware e un po 'di tempo di qualità da una manciata di consulenti davvero bravi per affrontare una semplice soluzione di scalabilità. I milioni in più all'anno potrebbero quindi essere utilizzati per produrre qualcosa degno di vendita su quel bel sito Web ...

EDIT: un altro pezzo da considerare ...

Di recente ho incontrato Terracotta . Sto ripensando a tutto e sto cercando di implementarlo presto in un sistema significativo. In particolare, Terracotta fa il clustering meglio di ogni altra cosa, quindi NON consiglierei MAI PIÙ WebLogic per il suo clustering.


7
Per riferimento futuro, di solito è possibile trovare le definizioni degli acronimi tramite una ricerca su Google o Wikipedia. YAGNI = Non ne avrai bisogno = non esagerare con il tuo design JMS = Java Message Service ESB = Enterprise Service Bus BPM = Business Process Management
Rob Williams

21
I tuoi commenti su Java EE ed EJB sono un po 'datati. J2EE ?! È stato come 5 anni fa. Dai un'occhiata a Java EE 6 e modernizza la tua prospettiva!
Brian Leathem,

6
@Brian: sono d'accordo con Brian, specialmente con EJBLite, è diventato molto più leggero.
Thang Pham,

7
@Brian, guarda il post - è stato scritto tre anni prima del tuo commento. E direi ancora che Spring è più leggera di un Java EE dimagrito.
duffymo,

2
Qual è il verdetto ora nel 2012? JBoss 7 AS viene re su Glassfish nel regno Java 6 EE? O viceversa?
Rolando,

10

Il termine "server applicazioni" è ambiguo. Con GlassFish v3, puoi iniziare con, ad esempio, un contenitore web tradizionale ed evolvere (usando OSGi e la semplice funzionalità "aggiungi contenitore") per aggiungere tutto ciò che desideri: JPA, JAX-RS, EJB, JTA, JMS, ESB , ecc ... Eppure è lo stesso prodotto, la stessa interfaccia di amministrazione, ecc. Questo si qualifica come un server delle applicazioni per te? -Alexis (Sun)


1
Purtroppo Glassfish non è più un prodotto ufficiale, ma "solo" l'implementazione di riferimento.
Thorbjørn Ravn Andersen,

9

La prima domanda che mi pongo di solito è "Posso farlo con Tomcat?". Se la risposta è no perché ho bisogno di JMS o JTA, ricorrere a un server delle applicazioni.

Ho usato WebLogic 8 circa 3 anni fa soddisfatto della facilità d'uso di WebLogic e del modello di licenza / costo. Lo abbiamo usato per due progetti, uno era un servizio web e l'altro era un portale. Non abbiamo riscontrato problemi con WebLogic o WebLogic Portal in nessuno di questi progetti.

Negli ultimi due anni ho lavorato con WebSphere. Ogni volta che negoziavo con IBM finiva sempre per costare il doppio di un equivalente di WebLogic, ma doveva essere utilizzata la politica aziendale dettata da WebSphere. Ho trovato la curva di apprendimento su WebSphere molto più ripida di WebLogic e il nostro ciclo di vita di build / deploy / test ha richiesto così tanto tempo che abbiamo usato Tomcat nell'ambiente di sviluppo. Ma il problema più grande che ho avuto con WebSphere è stato quando abbiamo riscontrato un bug che ci ha costretto ad aggiornare alla prossima versione di patch solo per imbatterci in un nuovo problema durante l'analisi di web.xml. Ci è voluto un turno di 48 ore per risolvere tutto ciò.

Al momento però sto usando JBoss. Circa 3 mesi fa stavo per iniziare il mio nuovo progetto con Tomcat e Jetspeed 2, ma ho notato che Jetspeed 2 sembra un po 'stagnante in questo momento e JBoss Portal 2.7.0 è stato appena rilasciato con il supporto JSR 286 / Portlet 2.0. Ho dato a JBoss un giro e ho trovato molto facile da configurare e amministrare. Il ciclo di compilazione / distribuzione / test è molto rapido e raramente devo riavviare il server a meno che non abbia modificato un file XML Spring da qualche parte.


Bella risposta! Hai provato Jetty? E qual è la tua opinione al riguardo nel caso in cui tu abbia?

7

Uso jBoss da 3-4 anni.

Argomenti per jBoss:

  1. Open source.
  2. Supporto commerciale disponibile.
  3. Grande comunità di utenti attivi.

Argomenti contro jBoss:

  1. Nessuna versione del contenitore Java EE 5 supportata ad accesso generale.
  2. Molta documentazione ma dettagliata; può essere difficile trovare le risposte a "Come faccio a fare x?"
  3. Strumenti di amministrazione per 4.x poveri rispetto ad altre offerte commerciali.

"Nessuna versione di contenitore JEE 5 supportata ad accesso generale." Immagino che non sia più il caso, giusto?
Raedwald,

@Raedwald: sì, ora che JEE 6 è in circolazione da un po 'di tempo ;-)
ymajoros,


3

Un altro punto che non è stato discusso qui è la prestazione. Se questo è un problema a causa del tipo di servizio o del numero di utenti, sarà applicabile quanto segue:

  • Tomcat sembra essere più lento di Glassfish
  • Glassfish sembra essere più lento della resina
  • La resina è molto più lenta di G-WAN + Java

Si noti che G-WAN si basa solo sulla JVM: non utilizza ulteriori contenitori (se non specificato in modo esplicito), pertanto è possibile riservarlo a parti critiche in termini di prestazioni delle applicazioni Web.

Poiché G-WAN supporta altri linguaggi (C, C ++, C #, D, Objective-C), è anche possibile elaborare alcune parti delle applicazioni in C grezzo mantenendo Java per altre attività.


2

Potrei includere il tuo sistema operativo preferito come criterio decisionale. Dovrebbe essere più semplice supportare se si utilizza lo stesso fornitore per sistema operativo e app server. Se hai già una relazione con uno o entrambi i fornitori, considera se sono buoni da trattare.

Da un punto di vista tecnico sceglierei GlassFish perché supporta le innovazioni più recenti. Non penso che JBoss sia cattivo in ogni caso, semplicemente non è così aggiornato.

Gran parte della mia esperienza è su WebLogic ma ho usato JBoss e GlassFish. Ho appena pubblicato un nuovo sito su uno stack open source Sun completo (OpenSolaris, GlassFish, MySQL) ed è stata una bellissima esperienza con solo piccole frustrazioni.


Il sistema operativo non è davvero un problema, a meno che tu non abbia dipendenze binarie molto specifiche (che non dovrebbe essere il caso della maggior parte dei progetti Java). Sviluppiamo su Windows, 32 e 64 bit e implementiamo su Glassfish su Solaris. La maggior parte degli sviluppatori non lo sa davvero e non deve preoccuparsene. Gli utenti non lo vedono (la maggior parte dei nostri sviluppi sono applicazioni web).
ymajoros,

2

Penso ancora che WebLogic sia il miglior server di app Java EE sul mercato. Penso che ne valga la pena se puoi permetterti quei costi di licenza.

Sono stato sorpreso di vedere quanto lontano puoi andare combinando Tomcat, OpenEJB e ActiveMQ. Mi sembrerebbe un'alternativa a basso costo.

Esaminerei anche il server Spring dm. È basato su Tomcat, ma penso che il pezzo OSGi che hanno aggiunto potrebbe essere ovunque in breve tempo. Se è fatto con la stessa qualità del framework Spring, sarà davvero molto buono.


2
Il problema che ho con WebLogic è il blocco del fornitore, è una brutta pillola da ingoiare quando davvero non è necessario!
Manio,

1
Questo è vero per tutti i distributori Java EE che conosco, non solo WebLogic. Se utilizzi funzionalità specifiche del fornitore in cui sei bloccato. Devi scrivere il codice qualche volta.
duffymo,

3
WebLogic è solo commerciale - questo è quello che sto ottenendo - una volta che hai scritto un grande assegno, sei "bloccato" in misura maggiore di quanto non sia con un'alternativa open source. Ovviamente se ti interessa l'indipendenza della piattaforma, non utilizzeresti funzionalità specifiche del fornitore, quindi non è ciò a cui mi riferisco. In realtà un sondaggio che ho letto una volta ha detto che gli sviluppatori credono che il blocco del fornitore in evitamento sia il vantaggio n. 1 dell'open source (non dei costi).
Manius,

Assurdità complete? Credi che firmare un contratto multimilionario con un fornitore non ti blocchi? Ecco la tua prova.
duffymo,

@ymajoros Intendevi "non dovrei" avere il blocco del fornitore? Francamente, non riesco a dare un senso al tuo commento.
Patrick M,

1

Un'alternativa: non utilizzare affatto appserver.

Check-out http://www.atomikos.com/Publications/J2eeWithoutApplicationServer .

Per i progetti Web, mantenere un contenitore Web leggero, se necessario, combinato con qualcosa come Wicket per evitare la complessità di JSP / JSF o puntoni.

HTH Guy


Se non vuoi imparare a usare gli strumenti, non usarne nessuno. Oppure prova a diventare un professionista qualificato e investi nel tuo ambiente, sarai ricompensato. Devo ammettere che l'ho fatto per alcuni progetti. Gli stessi progetti non si sono evoluti in appserver, in un client-server personalizzato in primavera, in puro Java EE e Glassfish. Non avrei mai voluto tornare indietro, la prima soluzione era in realtà troppo complessa, è semplice come può essere oggi (e standard, si distribuirebbe su qualsiasi server di app Java EE senza grandi cambiamenti).
ymajoros,

buona risposta, cattivo modo per ottenere il documento
msangel
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.