【问题标题】:What stack would you use for a new web Java project if you started today? [closed]如果您从今天开始,您会为新的 Web Java 项目使用什么堆栈? [关闭]
【发布时间】:2011-02-24 20:28:12
【问题描述】:

如果您今天要启动一个具有以下要求的全新 Java 项目:

  • 大规模(20k+ 用户)

  • 您想使用相当成熟(不会发生巨大变化)并且在 3 年内不会成为死技术的东西

  • 您想要一些非常高效的东西(无需在 dev 中重新启动服务器,保存代码及其自动编译和部署),生产力和上市时间是关键。

  • 前端有一定数量的 AJAX

  • 没有脚本语言(JRuby、Groovy、PHP 等),必须是 Java

  • 必须支持 i18n

您会使用什么堆栈以及为什么? (当我说堆栈时,我的意思是,一切都变得疯狂,所以应用服务器、mvc 框架、bean 框架、ORM 框架、javascript 框架等......)

【问题讨论】:

    标签: java model-view-controller frameworks stack


    【解决方案1】:

    我会考虑使用 Java EE 6 堆栈:

    • 作为应用服务器的 GlassFish v3:不重,在开发过程中非常高效(GlassFish 3.1 将在今年年底之前发布,将具有集中管理/集群和高可用性/状态复制)
    • 用于演示的 JQuery、JSF 2(或 Wicket)
    • CDI、EJB 3.1(Lite?)、JPA 2.0(Hibernate 3.5+ 或 EclipseLink)
    • Arquillian(1) 使用 Weld SE 和/或 GlassFish Embedded 进行测试

    (1) 另见:

    【讨论】:

    • 呃……Arquillian 到底是什么?它的网页对此并不十分清楚,Overview 链接将我带回到 JBoss 主页面。
    • @R.Bemrose:它是用于集成测试的测试工具。我已经更新了项目网站的链接(并添加了更多链接)。
    【解决方案2】:

    对于一个传统的 java webapp,为了你的目标,我会选择 stripes 作为一个 MVC 框架,因为它很容易设置和运行,它与 spring 和 hibernate 配合得很好,并且有很好的 ajax 支持。

    就生产力而言,eclipse 动态 Web 项目应该可以解决您的编译/部署问题。我一直用它和 tomcat 一起使用,但它也应该与 jBoss 一起使用。

    我个人会使用 tomcat、stripes (mvc)、hibernate (orm)、spring(如果需要)、jQuery (js) 和 eclipse 进行开发。

    【讨论】:

      【解决方案3】:
      • Tapestry 5 和 JQuery(Tapestry 5 被设计为面向未来,不需要重新启动服务器,开发速度非常快 - 组件很精简 - 它也可以很好地扩展)
      • Spring 用于 bean 配置(Tapestry 支持基于注解的 Spring bean 配置)
      • 用于关系模型的手工制作的 JDBC(因为我不喜欢为 ORM 添加另一个代码层,手工制作可以更好地调整)
      • Lucene 用于不需要以关系方式查询的索引或数据
      • Tomcat(或 Jetty,如果嵌入) - 两者都是可靠且经过良好测试的服务器

      【讨论】:

      • 我听说 EJB3/JPA2 在 ORM 方面还不错。再说一遍,EJB3/JPA2 是接口,而不是实现。
      • 几乎相同的答案,但我肯定会使用 Querydsl (source.mysema.com/display/querydsl/Querydsl) 进行查询构造。
      【解决方案4】:

      我会去:

      • Oracle 11g 数据库。
      • 带有 EclipseLink 的 JPA 2.0 ORM。
      • Glassfish v3(至少在 Oracle WebLogic 与 Java EE 6 兼容之前),提供您可能需要的任何消息队列、数据库连接池或任何 JCA 资源。

      我不会选择 JSF...JSF 2.0 比 JSF 1.0 好得多,但在某些方面仍然很糟糕。在“违反 JSF 方式”(或者更确切地说,在 JSF 中没有得到适当照顾)的情况下,您肯定会碰壁。

      如果您希望控制一些复杂的导航,我会选择 Spring 3.0 框架和带有 Spring Web Flow 的 Spring MVC。如果您愿意,这还可以让您选择将 Web 部件放在单独的服务器(例如 Tomcat)上,并通过 IIOP 调用 Glassfish 上托管的 EJB,从而扩大规模。

      如果您希望完全控制页面的设计,(也许您打算聘请网页设计师来维护外观和感觉)我会选择 Velocity 之类的模板引擎,它与 Spring MVC 很好地集成并且对 Dreamweaver 等大多数工具都很友好。

      最后,JQuery 可以使用一些现成的 Javascript 小部件,如日历控件、弹出窗口、用户消息和转换。

      【讨论】:

      • 甲骨文?预算到了……
      • 您能否详细说明“JSF 2.0 仍然很臭”的评论?
      • 没有指定预算限制。这个问题更倾向于可靠性和敏捷性。 oracle 标准版应该可以做到这一点,而不会过度预算,并且真正的应用程序集群开箱即用。否则像 Postgresql 或 Mysql 这样的东西会做,但他们的集群解决方案不是那么强大,实际上如果你想获得适当的支持,仍然需要成本。不过,它们都是很好的数据库。
      • “JSF 2.0 仍然很臭”,因为:a) JSF 对设计师不友好,因为它希望他们学习标签和 JSF 生命周期。设计师通常使用 Dreamweaver 和 Photoshop 等所见即所得工具。 b) 使用 JSF,您将受到可用组件的支配。一旦你需要一个稍微不同的行为,它就会变成一场噩梦。 c) JSF 不支持条件或循环,因为它“违背其模型”,这并不总是足够的。 JSTL 弥补了一些差距,但它们各自的生命周期会带来一些问题(尝试使用 JSTL 循环来使用字符串数组作为 JSF 选项卡视图的标题)。
      【解决方案5】:

      Scala 和 Spring

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多