Você, atualmente, usaria o JBoss ou o Glassfish (ou outro) como servidor Java EE para um novo projeto? [fechadas]

136

Se você iniciou um novo projeto Java EE hoje, que deve ser concluído em cerca de um ano, qual servidor de aplicativos você escolheria e por quê?

Parte da sua resposta deve incluir seus argumentos para sua decisão. E também quanta experiência você possui com o servidor Java EE que você escolher e com os outros servidores disponíveis no mercado. Isso é interessante, pois todos temos uma noção da investigação e do pensamento que foram colocados em sua resposta.

user14070
fonte

Respostas:

181

Eu usei WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat e alguns outros nos últimos 10 anos. Portanto, se eu estivesse pensando em um novo projeto, me perguntaria primeiro algumas perguntas. Uma coisa que eu não questionaria mais é que eu me recusaria a usar JSPs, a menos que eu fosse torturada até chorar pela minha mãe.

Preciso ser compatível / implantar em um produto específico por causa do mandato de alguém? Não há como ignorá-los ou convencê-los do contrário? Se sim, aí está sua resposta.

Eu tenho que usar EJBs? Realmente? Evite-os, se possível - eles são realmente necessários apenas para sistemas corporativos muito grandes. Lembre-se de que eles são apenas ferramentas, e grandes ferramentas (alguém pode dizer "Marreta Dourada"?). Eles são muito usados, de modo que realmente questionam se você precisa deles. Se você precisar deles, isso removerá várias de suas opções, incluindo o meu favorito, Jetty.

Você precisa usar alguma das outras principais tecnologias J2EE, como JMS, ESB, etc? Nesse caso, e você realmente não pode prescindir, estará novamente restrito a um contêiner J2EE completo. Pense e investigue cuidadosamente antes de se comprometer com o BPM, por exemplo, e evite o AquaLogic BPM a (quase) todos os custos - é feio ao extremo.

Se você realmente deve usar um contêiner J2EE completo, considere o código-fonte primeiro porque é mais robusto, melhor suportado e mais econômico. Eles têm uma base maior de clientes e uma interação de suporte mais aberta, portanto, tendem a obter melhores correções mais rapidamente. No entanto, a resina é imatura e eu a evitaria em relação ao GlassFish ou JBoss - achei problemático implantar e dar suporte. Eu preferiria o JBoss por causa de sua ampla base de clientes, maturidade, etc. O GlassFish é mais difícil de incorporar em um processo automatizado de criação / implantação, mas pode ser mais agradável para alguns de seus recursos específicos (se você precisar).

Tenho um motivo especial para precisar do Apache? Então incline-se para o Tomcat, talvez mais alguma coisa.

Posso me contentar com apenas servlets? Então eu usaria o Jetty - é a solução mais leve, rápida, fácil e flexível. Se eu me inclino a não poder usar o Jetty, questionaria todas as minhas suposições sobre o porquê. YAGNI se aplica.

O melhor é usar o StringTemplate / WebStringTemplate no Jetty: uma solução limpa, robusta, rápida e sustentável, sem taxas de licenciamento, reputação e suporte sólidos, etc. É aí que começo hoje.

A maioria dos aplicativos / sistemas escolhe muitos recursos sofisticados do J2EE quando tudo o que eles realmente precisam é de servlets e JDBC com uma arquitetura / design decente. Pergunta por que você acha que precisa de mais.

Dos contêineres completos, eu evitaria o WebLogic e o WebSphere, a menos que você suporte um site público MAJOR (o site do meu empregador atual é implementado no WebLogic e recebe onze milhões de acessos por mês, outros são comparáveis). A verdadeira reivindicação da fama do WebLogic é seu agrupamento relativamente fácil, mas evita os recursos proprietários de bloqueio de fornecedor a (quase) todo o custo. O WebSphere é simplesmente um pesadelo que eu evitaria literalmente a todo custo - eu me recuso a fazer projetos envolvendo o WebSphere depois de ter feito alguns no passado. Nenhum dos produtos vale as enormes taxas de licenciamento, a menos que você realmente tenha uma necessidade especial que incentive o uso de um recurso proprietário. Em uma década como arquiteto / engenheiro sênior de muitas empresas da Fortune 500, ainda não vi essa necessidade. Por outro lado,

Mesmo para sites públicos grandes e de alto tráfego, os produtos proprietários ainda são questionáveis. Prefiro gastar esses milhões de dólares por ano em taxas de licenciamento em um bom hardware e um tempo de qualidade de um punhado de bons consultores para resolver uma solução simples de escalabilidade. Os milhões extras por ano poderiam então ser usados ​​para produzir algo digno de vender naquele belo site ...

EDIT: outra peça a considerar ...

Encontrei recentemente terracota . Estou repensando tudo e pretendo implantá-lo em um sistema significativo em breve. Em particular, a Terracotta faz o cluster melhor do que qualquer outra coisa, então eu não recomendaria mais o WebLogic por seu cluster.

Rob Williams
fonte
7
Para referência futura, geralmente é possível encontrar as definições para acrônimos por meio de uma pesquisa no Google ou na Wikipedia. YAGNI = Você não está indo precisá-la = não exagere seus Gestão Java Message Service ESB = Enterprise Service Bus BPM = Business Process JMS projeto =
Rob Williams
21
Seus comentários sobre Java EE e EJB estão um pouco desatualizados. J2EE ?! Isso foi há 5 anos atrás. Dê uma olhada no Java EE 6 e modernize sua perspectiva!
Brian Leathem
6
@ Brian: Eu concordo com Brian, especialmente com EJBLite, tornou-se muito mais leve.
Thang Pham
7
@ Brian, veja o post - ele foi escrito três anos antes do seu comentário. E eu ainda diria que o Spring é mais leve do que um Java EE reduzido.
duffymo
2
Qual é o veredicto agora em 2012? O JBoss 7 AS supera o Glassfish no domínio Java 6 EE? Ou o contrário?
Rolando
10

O termo "servidor de aplicativos" é ambíguo. Com o GlassFish v3, você pode começar pequeno com, digamos, um contêiner da Web tradicional e evoluir (usando OSGi e a funcionalidade simples "adicionar contêiner") para adicionar o que quiser: JPA, JAX-RS, EJB, JTA, JMS, ESB , etc ... No entanto, é o mesmo produto, a mesma interface administrativa, etc. Isso se qualifica como servidor de aplicativos para você? -Alexis (Sol)

Alexis MP
fonte
1
Infelizmente, o Glassfish não é mais um produto oficial, mas "apenas" a implementação de referência.
Thorbjørn Ravn Andersen
9

A primeira pergunta que normalmente me faço é "Posso fazer isso com o Tomcat?". Se a resposta for não, porque preciso do JMS ou JTA, recorro a um servidor de aplicativos.

Eu usei o WebLogic 8 há cerca de 3 anos, satisfeito com a facilidade de uso do WebLogic e o modelo de licenciamento / custo. Nós o usamos em dois projetos, um era um serviço da Web e o outro, um portal. Não encontramos nenhum problema com o WebLogic ou o WebLogic Portal em nenhum desses projetos.

Nos últimos dois anos, eu estava trabalhando com o WebSphere. Sempre que negociava com a IBM, sempre acabava custando o dobro do equivalente a um WebLogic, mas a política corporativa determinava que o WebSphere precisava ser usado. Achei que a curva de aprendizado no WebSphere era consideravelmente mais íngreme que o WebLogic e nosso ciclo de vida de construção / implementação / teste consumia tanto tempo que usamos o Tomcat no ambiente de desenvolvimento. Mas o maior problema que tive com o WebSphere foi quando encontramos um bug que nos forçou a atualizar para o próximo release de patch apenas para encontrar um novo problema ao analisar o web.xml. Foi preciso um turno de 48 horas para resolver tudo isso.

No momento, estou usando o JBoss. Há cerca de três meses, eu estava prestes a embarcar no meu novo projeto com o Tomcat e o Jetspeed 2, mas notei que o Jetspeed 2 parece um pouco estagnado no momento e o JBoss Portal 2.7.0 foi lançado com o suporte ao JSR 286 / Portlet 2.0. Dei uma olhada no JBoss e achei muito fácil configurar e administrar. O ciclo de criação / implantação / teste é muito rápido e raramente preciso reiniciar o servidor, a menos que eu tenha alterado um arquivo XML Spring em algum lugar.

bmatthews68
fonte
Boa resposta! Já experimentou o Jetty? E qual a sua opinião sobre o caso, se você tiver?
7

Uso o jBoss há 3-4 anos.

Argumentos para o jBoss:

  1. Código aberto.
  2. Suporte comercial disponível.
  3. Comunidade de usuários grande e ativa.

Argumentos contra o jBoss:

  1. Nenhuma liberação de contêiner Java EE 5 suportada por acesso geral.
  2. Muita documentação, mas detalhada; pode ser difícil encontrar as respostas para "Como faço para x?"
  3. Ferramentas administrativas para 4.x pobres em comparação com outras ofertas comerciais.
johnstok
fonte
"Nenhuma liberação de contêiner JEE 5 suportada por acesso geral." Eu acho que não é mais o caso, correto?
precisa
@Raedwald: Sim, agora que JEE 6 tem sido em torno de algum tempo ;-)
ymajoros
4

Checkout GlassFish 3.1! Construída sobre o kernel GlassFish v3 modular baseado em Java EE 6, a versão 3.1 oferece armazenamento em cluster, administração centralizada e alta disponibilidade.

Consulte http://blogs.oracle.com/nazrul/entry/glassfish_3_1 para obter mais detalhes.

Nazrul
fonte
3

Outro ponto que não foi discutido aqui é o desempenho. Se essa é uma preocupação devido ao tipo de serviço ou ao número de usuários, o seguinte será aplicável:

  • Tomcat parece ser mais lento que Glassfish
  • Glassfish parece ser mais lento que Resin
  • A resina é muito mais lenta que o G-WAN + Java

Observe que a G-WAN depende apenas da JVM: ela não usa outros contêineres (a menos que seja especificado explicitamente); portanto, você pode reservá-la para partes críticas de desempenho de seus aplicativos da web.

Como a G-WAN suporta outras linguagens (C, C ++, C #, D, Objective-C), você pode até processar algumas partes dos aplicativos em C bruto, mantendo o Java para outras tarefas.

gert
fonte
2

Eu posso incluir o seu sistema operacional preferido como critério de decisão. Deve facilitar o suporte se você estiver usando o mesmo fornecedor para SO e servidor de aplicativos. Se você já tem um relacionamento com um ou ambos os fornecedores, considere se eles são bons para lidar.

Do ponto de vista técnico, eu escolheria o GlassFish porque ele suporta inovações mais recentes. Eu não acho que o JBoss seja ruim de qualquer maneira, simplesmente não é tão atualizado.

A maior parte da minha experiência é no WebLogic, mas usei o JBoss e o GlassFish. Acabei de lançar um novo site em uma pilha completa de código aberto da Sun (OpenSolaris, GlassFish, MySQL) e foi uma ótima experiência com apenas pequenas frustrações.

Edt
fonte
O sistema operacional não é realmente um problema, a menos que você tenha dependências binárias muito específicas (o que não deve ser o caso da maioria dos projetos java). Desenvolvemos em janelas de 32 e 64 bits e implantamos no Glassfish no Solaris. A maioria dos desenvolvedores realmente não sabe e não precisa se preocupar. Os usuários não o veem (a maioria de nossos desenvolvimentos são aplicativos da web).
ymajoros 6/09/11
2

Ainda acho que o WebLogic é o melhor servidor de aplicativos Java EE do mercado. Acho que vale a pena se você puder pagar essas taxas de licença.

Fiquei surpreso ao ver até onde você pode ir combinando Tomcat, OpenEJB e ActiveMQ. Isso me pareceria uma alternativa de baixo custo.

Eu também procuraria no Spring dm Server. É baseado no Tomcat, mas acho que a parte OSGi que eles adicionaram pode estar em qualquer lugar em pouco tempo. Se for feito com a mesma qualidade que o framework Spring, será realmente muito bom.

duffymo
fonte
2
O problema que tenho com o WebLogic é o bloqueio do fornecedor, que é uma pílula desagradável para engolir quando você realmente não precisa!
Manius
1
Isso é verdade para todos os fornecedores de Java EE que eu conheço, não apenas para o WebLogic. Se você usa algum recurso específico do fornecedor, está preso. Precisa escrever código algum dia.
Duffymo 18/10/10
3
O WebLogic é apenas comercial - é para isso que estou entrando - depois de fazer um grande cheque, você fica "bloqueado" em um grau maior do que em uma alternativa de código aberto. Obviamente, se você se importa com a independência da plataforma, não usaria recursos específicos do fornecedor, então não é a isso que estou me referindo. Na verdade, uma pesquisa que li uma vez disse que os desenvolvedores acreditam que o bloqueio do fornecedor na prevenção é a principal vantagem do código aberto (não o custo).
Manius
Bobagem completa? Você acredita que assinar um contrato multimilionário com um fornecedor não o impede ? Aqui está a sua prova.
Duffymo
@ymajoros Você quis dizer "não deveria" ter um fornecedor bloqueado? Francamente, não consigo entender o seu comentário.
317 Patrick M
1

Uma alternativa: não use nenhum servidor de aplicativos.

Verificação de saída http://www.atomikos.com/Publications/J2eeWithoutApplicationServer .

Para projetos da Web, mantenha um contêiner da Web leve, se necessário, combinado com algo como o Wicket para evitar a complexidade do JSP / JSF ou struts.

HTH Guy

Guy Pardon
fonte
Se você não quiser aprender a usar ferramentas, não use nenhuma. Ou tente se tornar um profissional qualificado e investir no seu ambiente, você será recompensado. Devo admitir que fiz isso em alguns projetos. Os mesmos projetos não desenvolveram appserver, para um cliente-servidor personalizado no Spring, para puramente Java EE e Glassfish. Não gostaria de voltar atrás, a primeira solução era realmente muito complexa, é a mais simples possível hoje (e padrão, seria implantada em qualquer servidor de aplicativos Java EE sem muita alteração).
ymajoros 6/09/11
boa resposta, péssima maneira de obter o documento
msangel 03/01