【问题标题】:a large scale java project solution大型java项目解决方案
【发布时间】:2010-12-14 15:02:05
【问题描述】:

我想从头开始一个项目。我是一名多年的 Java 开发人员。前段时间我什至写了自己的 mvc 框架是为了好玩。现在我在一家使用内部框架的公司工作——我认为这完全浪费了时间和金钱。我尊重与不同技术人员合作进行大型项目的想法。项目的分离很重要;图形专家、前端开发人员、软件架构师、软件开发人员、数据库专家等。我不能冒险使用像 php 这样的脚本语言。

最近,我正在为一个大型项目的各个方面研究 Java 技术。我的意思是,对于前端,我遇到了非常著名的技术。

  • 春天
  • 我的面孔
  • 挂毯
  • Google 网络工具包
  • 速度

他们每个人都说它是最简单、最快、最新的技术等等。当然,只有他们一个人可以掌握真相。我需要一种前端技术来快速实现 ajax、客户/管理员安全、主题、模板、国际化、缓存静态页面、集群和对 ejb 的支持。它还应该有 IDE 支持、社区支持、丰富的文档和在线教程。我仍然没有经验可供选择的那些框架。也许还有更好的?最重要的是,我不能冒险启动一项有发展限制的技术。对这一层有什么建议吗?

对于业务层,我确信 EJB 和 JPA。我什至考虑为这一层的外观设计一个 Web 服务,以实现未来扩展的互操作性。但是,我不知道保护该层(它可以应用于其 Web 服务级别),这对我来说仍然是一个问题。对于应用服务器,我正在考虑使用 GlassFish。

最后一个问题是应该选择什么 IDE 进行开发。关于将要使用的所有技术,IDE 应该在每一步都为我提供帮助,要么为我进行配置,要么帮助我使用其现成的向导进行配置。我想 IDE 会有合适的插件来使用技术。

我知道我想要的太多了,但是我希望能够结合多种技术来帮助我在未来的计划中节省时间和金钱。

我很高兴听到您的回应和经验。

已编辑:没有最终答案,我知道。我只是在听取建议。任何答案表示赞赏。

【问题讨论】:

  • 当然只有他们一个人可以掌握真相。实际上,他们可能没有一个人掌握真相:-)
  • 但通常情况下,他们都掌握了部分真相:)
  • “我需要一个前端技术(...)。它还应该有 IDE 支持、社区支持、丰富的文档和在线教程。” - 这真的很适合这个季节。不幸的是圣诞老人不做编程框架:/
  • @Jules:赞成将圣诞老人和编程结合起来。 ;-)
  • @Jules:圣诞老人有望创造奇迹:)

标签: java ajax jakarta-ee ejb frontend


【解决方案1】:

好吧,我将竭尽全力提出具体建议,因为我认为这个问题可以得到回答。

我会简单地推荐我的堆栈。

我的堆栈是前端的 Stripes,后端是 Glassfish/Java EE 5。

Stripes 是一个简单的 Action(或 MVC,随您的便便),它拥有一个小而强大且发声的社区。它与 JPA 紧密集成(通过插件)、一本非常好的、最新的有关该主题的打印机书籍以及出色的参考文档。它的主要渲染技术是带有 JSP 标签和 EL 的 JSP。

它不是像JSF/MyFaces那样的组件框架,所以它的实现更简单,它的生命周期也更简单。它与 Ajax 配合得很好。

Stripes 的关键因素是它基于 HTTP 请求周期,它可以为您完成大部分垃圾工作,而且非常轻量级。这很容易上手和理解。创建一个基本的 Stripes 应用程序是 web.xml 中的几行代码和两个 jars(其中一个是 log4j)。如果您可以使用 HTTP 进行思考,那么 Stripes 非常适合您。

在后端,我只会坚持使用 EJB 和 GlassFish。 Java EE 6 和 GFv3 已经发布了一段时间。它比 Java EE 5 提供了许多新功能,GlassFish 提供了您想使用的大多数 Web 服务技术。 Java EE 6 和 Spring 在每个要点的基础上几乎是相同的,并且由于您正在查看 GF,因此您不妨使用 EJB,因为它已经存在并集成在盒子中。如果您使用的是 Tomcat,那么 Spring 可能是一个不错的选择。

而且,就是这样。这就是你所需要的(我不知道你想要 Velocity 是为了什么,如果你愿意,你可以简单地添加它,但我不会将它用于页面,个人而言,现代 JSP 更好恕我直言)。

Glassfish 将保护您的 Web 服务,您可以在 Web 应用程序中使用 Java EE 安全性,您可以在后端 EJB 与您的 Web 应用程序和 Web 服务之间共享逻辑。这一切都是开箱即用的,只需 15 分钟的配置即可让 Stripes 运行。

我使用 NetBeans,但所有其他 IDE 也能正常工作。 NetBeans 很好,因为它与 Glassfish 集成在一起。少一件事要配置。下载它,启动它,它就可以工作了。

有一个用于 NetBeans 的 Stripes 插件,我不使用它。我认为没有必要。一旦您将几行添加到您从网站剪切和粘贴的 web.xml 中,您就再也看不到 Stripes。从那里开始,都是简单的注释。

除非您迫切需要组件框架的所有复杂性和学习曲线,否则它不会比 Stripes 更好,而带有 Java EE 6 的 GF 可以满足您的一切需求。

所以,总而言之:Stripes 发行版来自 www.stripesframework.org,NetBeans 下载来自 netbeans.org,stripersist 来自 stripes-stuff.sourceforge.net。这是一个坚如磐石的基础,可以随心所欲。

请到 #stripes 的 freenode 上的 Stripes IRC,我们会回答您的任何问题(或点击邮件列表)。

【讨论】:

  • 我喜欢您的回复,非常感谢您的详细回答。听起来很有希望!
【解决方案2】:

嗯,首先,你的问题不好。每项技术都有其光明的一面和黑暗的一面。要选择一些特定的技术 - 您需要所有这些技术的经验来估计您的项目可能会出现哪些问题。鉴于您的定义:fast implementation for ajax, customer/administrator security, themes, templates, internationalization, caching static pages, clustering and a support of ejb - 90% 的框架直接或使用一些插件支持所有这些。

此外,各种技术针对各种需求进行了更好的优化。你不可能拥有一个完美无缺的多合一超级框架,并且尽可能以最好的方式完成所有工作。鉴于该框架具有高度可扩展性和快速性(例如:Spring 和/或 Portlet),因此难以为一些小任务进行配置。

所以我唯一可以推荐的是谷歌“Java Web 框架比较”并希望最好。

关于 IDE,我只能看到 2 个选择:IntelliJ Idea 和 Eclipse。同样,没有明确的赢家,所以谷歌再次成为您可以获得的唯一信息来源。

添加: 再次谈论框架,复杂的项目同时使用其中的几个,利用每个框架的最佳部分来帮助满足特定的项目需求。但要有效地做到这一点 - 您需要成为所有混合技术的专家。

【讨论】:

  • 我知道所有框架都以某种方式支持一切。在更短的时间内开发是我在这里最大的兴趣,使用一个可靠的框架可以让我避免可能发生的最常见/特定问题。我正在寻找最先进的网络框架
  • 没有每个人都喜欢的“艺术”。每种“艺术”都有自己的观众。 “最先进的”框架也是如此:)
【解决方案3】:

几乎没有人可以真正为您回答这个问题。就前端技术而言,其中一个框架适用于您,而其他框架则不适用。这完全取决于哪一个对你有意义。我的建议是全部尝试并选择您觉得最舒服的那些。

话虽如此,我确实有一些建议。首先,不要限制自己使用 Java。如果是我,我会使用在 jRuby 上运行的 Ruby on Rails 作为前端,因为它是我用过的最快的开发 Web 应用程序的框架。通过在 jRuby 上运行它,它允许您连接到 Java 并让 Java 及其库在后端完成所有繁重的工作。我会远离 Web 服务并使用 ReST 来实现。

就 IDE 而言,绝对要使用 IntelliJ IDEA。可能需要一点时间来适应,但它绝对是市场上最快的 IDE。不过,Eclipse 和 Netbeans 都非常适合 Java,而且价格便宜一些。

再一次,答案是“视情况而定”。

【讨论】:

  • 我要弄脏红宝石来检查一下。只有一件事,jRuby究竟是如何与java,或jvm,或ws-rpc(换句话说,业务层)通信的?
  • 我与 Ruby 没有任何关系,但还有 Grails (Groovy on Rails),它使用与 Ruby on Rails 类似的概念制作,并且完全是 Java。
【解决方案4】:

以上所有项目都是从简单的想法开始的。随着它们获得关注,它们都添加了对某些人有用但不一定对所有人有用的相邻功能。换句话说,您必须进行深入分析才能选择完美的框架。

除非您碰巧与从事特定框架工作的数十人的想法相同,否则您不会找到完美的匹配,假设所有这些想法都完全一致。唯一“完美”的匹配是您自己编写的,即使这样您也发现它并不完美,因为您开发框架的时间和精力有限;毕竟,你确实有程序要写,框架开发时间与程序开发时间竞争。

就 IDE 而言,品味和风格各不相同。我倾向于在旧的 Netbeans 和 Eclipse 之间进行选择,而我的下一个 IDE 将是 IntelliJ Idea。要记住的是,大多数人只使用一个 IDE,然后诋毁其余的,所以你真的无法得到一个很好的比较。 IDE 需要花费太多时间才能真正学会让一个人给出诚实公正的意见。一个好的候选 IDE “X” 在某些人眼中是最差的,在其他人眼中是最好的。

【讨论】:

  • 首先感谢您的回答。我没有找到最终的答案。我只是在寻找个人的意见。
【解决方案5】:

考虑到其他答案的外观,我想说剩下的最大因素是您和您的团队的学习曲线。鉴于您对角色分离的描述,您的主要关注点应该是选择一个总体框架,例如 Spring。从那里,您的数据库人员可以选择他们想要的任何数据持久性(hibernate、jdbc 等),而您的 gui 人员可以选择他们想要的任何前端(tapestry、jsf 等)。

对于如此明显的角色分离,我最关心的是团队的沟通。确保他们是高度开放的交流,尤其是在讨论界面设计时,因为这些将是您项目成功或失败不可或缺的一部分(尤其是如果您选择 Spring)。

就 IDE 而言,这是个人喜好。其他帖子中提到的两个(Eclipse 和 IntelliJ)是我听到最多的两个,Eclipse 是我过去 4 或 5 年的标准 IDE。我不熟悉 IntelliJ,但我知道 Eclipse 有支持 Spring、Hibernate 和许多其他框架和 ORM 解决方案的插件。它还具有支持其他语言的插件,例如 Ruby 和 PHP。

【讨论】:

    【解决方案6】:

    “前段时间我什至写了我自己的 mvc 框架是为了好玩”——说到底,你可能会后悔没有坚持下去。事实上,比现在“出名”更好的技术很可能是稍后会出名的技术,而不是现在。您的列表中有一半已经过时了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 2012-06-26
      • 1970-01-01
      • 2014-05-08
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多