代码之家  ›  专栏  ›  技术社区  ›  Sylvain

如何构建一个Java Web应用程序

  •  5
  • Sylvain  · 技术社区  · 15 年前

    很快我将不得不为一家公司启动一个网络项目,现在我需要选择一种技术来构建这个应用程序。 我正在考虑使用Java,因此我想找到一个框架来帮助我构建应用程序(我习惯于PHP框架,如CaKEPHP和CODIDENTER)。

    我不明白的是,它似乎存在着许多框架和技术,它们的目标并不相同。动作框架,组件框架…我能用一个我不能用另一个做什么? 看来,Java Web应用程序应该通过混合很多不同的技术来开发,因此我有点迷失了… 我已经研究了不同的Java框架,例如JSF、条形、StrutS2、Tapestry、WIKET和Spring。 关于以后,我不安静地看到这个框架的不同部分,它能为我做什么,不能做什么。我能从Spring中得到什么,不需要什么……

    因此:我需要什么来构建一个Java Web应用程序?

    我已经将JSF用于一个基本的CRUD应用程序,但我正在尝试找到一些更适合我需要的应用程序。 我们必须构建的应用程序将既是一个社区平台,也是一个商业站点,要保护明智的数据:)

    关于ORM,我想我还是去冬眠吧… 我也听说过马文或蚂蚁,他们能以什么方式帮助我?

    任何建议/指导方针都将不胜感激:—) 事先谢谢。

    编辑:我的需求是:一个Java框架,它是:

    • 文件齐全/易于获得帮助/尽可能简单…
    • Java越多越好
    • Ajax友好/功能强大,可构建漂亮的用户界面…
    • 国际化
    • 作为一名学生,技能的市场化可能很重要…

    要构建的应用程序是

    • 社区网站:Web2.0,CRUD
    • 电子商务网站

    完整的规格还没有完成。

    5 回复  |  直到 15 年前
        1
  •  9
  •   kgrad    15 年前

    这是一个很难回答的问题,最近在你的情况下,我将尝试给出一些见解。基本上,对于Java,框架有很多选择,没有人能真正告诉你哪一个最适合你,我们能做的就是给你一些技术的分解。

    以下是我在寻找你想要的相同答案时遇到的问题。

    Java有一堆技术试图提供一个完整的堆栈解决方案。这些技术可以分解为其他技术,但是当您一起使用它们时,它们会很好地工作。

    基本上,Web应用程序有三层,即表示层、业务层和数据层。表示层是前端,用户可以看到。您通常可以为这三个层混合和匹配技术。例如,您可以使用一个带有用于IOC和Hibernate的Spring框架的条纹前端作为ORM。

    有许多伟大的技术可以用于表示层,包括SpringMVC、Struts、Stripes、Wicket、JSF/Seam和Tapestry等。大多数使用JSPL的视图使用JSP,除了WIKET之外,实际上通过使用Java“组件”(POJOS)将HTML与逻辑完全分离。这两种方法都有好处和缺点。Wicket方法的好处在于,您有静态的类型检查和HTML的完全分离,因此您可以将其交给您的设计师。

    对于业务层,人们通常使用某种类型的反向控制框架(IOC)进行依赖注入(DI)。IOC流行的框架是Spring和Seam,它们具有相关的技术,如Spring安全性,通常由其他技术支持。对于直接的DI框架,GoogleGuice似乎很受欢迎。

    最后,对于数据层,大多数人倾向于使用Hibernate或JPA。还有其他人,但我没有他们的经验,不能提供更多的信息。

    Tapestry是另一个框架,它试图从我所理解的内容中获得完整的堆栈,并采用类似于Wicket(或者我猜Wicket采用类似Tapestry)的方法。Grails是另一个使用groovy的全栈框架,构建在Spring和Hibernate之上。如果你喜欢轨道,颗粒是相当好的。

    这些技术中的大多数都有大量可用信息和非常活跃的邮件列表/IRC聊天室。你需要做的是看看他们,然后决定哪种方法是适合你的。这里没有人能告诉你你想要什么。

    如果您需要推荐,我希望有一天使用wicket/guice/hibernate堆栈。

        2
  •  3
  •   fforw    15 年前

    我最喜欢的是春天。新的SpringMVC2.5设置起来既简单又快捷,有很多注释可以帮助您声明性地连接控制器,这节省了您大量的输入。它还集成了弹簧容器,这绝对是我最喜欢的轻型J2EE替换容器。我通常将SpringMVC与简单的JSP结合在一起,但是还有很多其他视图技术可供选择。为了坚持,我通常使用休眠。也许值得一看 Spring ROO 这有点像没有groovy的圣杯。SpringSecurity提供了一种很好且简单的声明性安全方法,并集成到一系列认证技术中。

    Maven和Ant都是构建工具,而Maven也为您处理依赖关系。您“只是”设置描述您想要的库和版本需求的描述符,Maven将为您下载所有库及其依赖项。但是,它强制您遵循特定的项目布局。对于蚂蚁来说,有常春藤可以依赖。

        3
  •  2
  •   Ruben    15 年前

    我建议你看看 Grails .GRAILS是一种“按惯例编写代码”的Web应用程序框架,它是基于一系列已验证的Java框架(Spring,Hibernate,…)构建的,并使用 Groovy 语言…

    圣杯的美妙之处在于,你几乎不需要对春天、冬眠等知识就可以开始了。但是之后,如果有必要的话,您仍然可以访问这些框架的全部功能。

        4
  •  2
  •   Andrew Swan    15 年前

    一定要使用Spring作为后端;他们的免费支持论坛上有一个优秀的社区(您还可以支付更多的正式支持)。

    关于您使用Hibernate的决定,您可能希望对JPA进行编码,以便将您的应用程序与Hibernate分离(这是几个JPA实现之一)。

    如果您想要一个Ajax前端,那么值得一看 ZK 框架;它非常容易使用而不必学习JavaScript,并且避免使用像DWR这样的管道库。

        5
  •  1
  •   Vincent Ramdhanie    15 年前

    别人建议用弹簧是个好主意。你会发现你实际上会同时使用许多不同的框架,因为每个框架解决了一个稍微不同的问题。

    我建议您在投入使用之前对每个框架或技术投入一些时间,但是您最终会希望让它们一起工作。例如,您可能需要Struts+Spring+Hibernate设置。配置它们可能是一个头疼的问题。

    所以我建议你用 AppFuse 这有助于生成具有基本功能的基本应用程序。它节省了大量的时间。当然,您需要了解为您配置的不同框架,因此这不是一个神奇的解决方案。