如果你今天开始了一个为期一年左右的新Java EE项目,你会选择哪个应用服务器?为什么?
你的回答应包括你做出该决策的理由。另外还要说明您在所选Java EE服务器上的经验以及市场上其他可用服务器的经验。这些是有趣的,因为我们可以感受到你在回答中所付出的研究和思考。
如果你今天开始了一个为期一年左右的新Java EE项目,你会选择哪个应用服务器?为什么?
你的回答应包括你做出该决策的理由。另外还要说明您在所选Java EE服务器上的经验以及市场上其他可用服务器的经验。这些是有趣的,因为我们可以感受到你在回答中所付出的研究和思考。
在过去的10多年中,我使用了WebLogic、WebSphere、JBoss、GlassFish、Resin、Jetty、Tomcat等多种IT技术。因此,如果我考虑一个新项目,我首先会问自己几个问题。其中一个我不会再质疑的事情是,除非我被折磨到哭妈妈为止,否则我绝不会再使用JSP。
我是否必须兼容/部署特定产品,因为有人的命令?是否没有办法忽略它们或说服他们改变想法?如果是这样,那么答案就出来了。
我是否必须使用EJB?真的吗?尽可能避免使用它们--它们只在非常大型的企业级系统中才真正需要。请记住,它们只是工具,而且是很大的工具(有人能说“金鎚子”吗?)。它们被过度使用,所以一定要认真地质疑你是否需要它们。如果确实需要它们,那么这将削弱你的选择,包括我的最爱Jetty。
您是否必须使用其他主要的J2EE技术,如JMS、ESB等?如果是这样,并且您真的不能没有它们,则再次受限于完整的J2EE容器。在承诺BPM之前,请仔细考虑和调查,并尽可能避免使用AquaLogic BPM--它极其丑陋。
如果您确实必须使用完整的J2EE容器,首先考虑开源,因为它更强大、得到更好的支持并且更具成本效益。它们拥有更大的客户群和更多的开放式支持交互,因此它们往往会更快地获得更好的修复程序。但是,相对于GlassFish或JBoss,Resin还不成熟,我会避免使用它--我发现它部署和支持存在问题。我更喜欢JBoss,因为它拥有更广泛的客户群、成熟度等等。GlassFish很难纳入自动化构建/部署流程中,但如果您需要它的特定功能(如果您需要),它可能会更好一些。
我是否有特殊理由需要使用Apache?那么可以倾向于Tomcat,可能再加上其他东西。
我只使用Servlet能否胜任?如果可以,我会选择Jetty——它是最轻、最快、最简单、最灵活的解决方案。如果我对使用Jetty持怀疑态度,那么我会质疑自己为什么要这样做。YAGNI原则适用。
最好使用StringTemplate/WebStringTemplate on Jetty:一种干净、强大、快速、可维护的解决方案,没有许可费、具有良好的声誉和支持等等,这就是我现在的首选。
大多数应用程序/系统选择使用很多花哨的J2EE特性,而实际上他们只需要一些合理的架构/设计以及Servlets和JDBC。质疑为什么你认为你需要更多的东西。
对于全功能容器来说,除非您要支持一个主要的公共网站(我的当前雇主的网站部署在WebLogic上,并且每月接收1100万次以上的点击量,其他情况类似),否则我会避免使用WebLogic和WebSphere。WebLogic真正的招牌是其相对较容易的集群,但请尽量避免使用他们的专有供应商锁定功能。WebSphere就是一场噩梦,我会尽可能避免——在过去做了几次WebSphere项目后,我拒绝做任何涉及WebSphere的项目。除非您真正有一个驱动使用专有功能的特殊需求,否则这两个产品都不值得支付巨额许可费用。作为一名高级架构师/工程师,我在为许多财富500强公司工作的十年中,从未见过这样的需求。另一方面,我看到很多由于选择这些专有产品而导致的痛苦。
即使对于那些真正大型、高流量、公共网站,也还有问题。我宁愿将每年的数百万美元许可费用用于购买一些好硬件和一些来自一些真正优秀的顾问的优质时间,以解决一个简单的可扩展性方案。然后,多出来的数百万美元可以用于生产一些值得在那个漂亮网站上销售的东西......
编辑:还有一个需要考虑的因素...
我最近遇到了Terracotta。我正在重新思考一切,并计划很快在一个重要的系统中部署它。特别是,Terracotta比其他任何东西都更擅长集群,因此我不再推荐WebLogic的集群。
我已经使用jBoss三到四年了。
jBoss的优点:
jBoss的缺点:
试用 GlassFish 3.1!基于模块化的、基于 Java EE 6 的 GlassFish v3 内核,版本 3.1 提供了集群、集中管理和高可用性。
请参考http://blogs.oracle.com/nazrul/entry/glassfish_3_1获取更多细节。
我仍然认为WebLogic是市场上最好的Java EE应用服务器。如果您可以负担得起那些许可证费用,那么我认为这是值得的。
我很惊讶地发现,通过组合Tomcat、OpenEJB和ActiveMQ,您能够实现很长的路程。这对我来说似乎是一种低成本的替代方案。
我也会考虑使用Spring dm Server。它基于Tomcat,但我认为他们添加的OSGi部分可能会很快普及。如果像Spring框架一样具有相同的质量,那么它将非常出色。
另一种选择:完全不使用应用服务器。
请查看http://www.atomikos.com/Publications/J2eeWithoutApplicationServer。
对于 Web 项目,如果必须使用,请保持轻量级的 Web 容器,并结合像 Wicket 这样的东西,以避免 JSP/JSF 或 Struts 的复杂性。
希望有所帮助。 Guy