现在选择Java Web Framework?[关闭]

2020/11/17 21:22 · java ·  · 0评论

我们正处于将基于自定义开发的mvc框架构建的大型网站迁移到基于Java的网络框架的计划阶段,该网络框架对ajax,富媒体内容,混搭,基于模板的布局,验证,最大html /提供内置支持java代码分离。Grails看起来是一个不错的选择,但是,我们不想使用脚本语言。我们要继续使用Java。基于模板的布局是首要考虑的问题,因为我们打算将此Web应用程序与多个功能相似但外观完全不同的网站一起使用。

基于门户的解决方案是否非常适合此问题?

有关使用“ Spring Roo”或“ Play”的任何见解将非常有帮助。

我没有找到类似的职位像这样,但它是一个多岁。同时,情况肯定发生了变化!

编辑1:感谢您的伟大答案!该网站正成为最佳的渠道信息,从而为程序员提供信息。但是,我期待有关使用Portal-cms二重奏的更多信息。贾伊亚(Jahia)看货。有什么相似之处吗?

基于门户的解决方案是否非常适合此问题?

就个人而言,我会远离大型门户网站解决方案(它们通常是生产力的杀手ers)。虽然我听说过有关Gatein的消息,但是我没有任何实际经验。

有关使用“ Spring Roo”或“ Play”的任何见解将非常有帮助。

关于Spring Roo,我已经在Internet上阅读过诸如Spring Roo Vs(Wicket和Spring)之类的先前答案以及其他内容,但是我仍然不确定(也许我不明白),我不确定它的成熟度,更重要的是,我真的很想知道SpringSource对Grails和Roo所做的事情(不,Grails与Roo –为什么SpringSource推动了两种非常相似的技术?使我无法说服它们都可以生存)。

关于Play,我不能说太多。我已经像所有人一样看过该演示,但我想阅读现实生活中的反馈。在那之前,我将等待。

我确实找到了类似的帖子(...)。同时,情况肯定发生了变化!

是的,不是:)但是,让我们进入演示框架吧:您的问题没有一个答案(就像一年前一样),周围有数十个框架,而且没有明确的赢家。仅举几例:

  • JSF:许多人都对基于组件的框架持怀疑态度,包括我在内,所以我不是谈论它的最佳人,但是...
  • JSF 2(+ CDI /焊接):(Gavin King鼓励)JSF怀疑论者“重新审视”。确实,我认为JSF 2是一个很大的改进,尤其是对于CDI而言,但是...它仍然是相当新的(理解,它没有费用返还)。如果您想使用Java EE 6,请进行检查。
  • Wicket:另一个基于组件的框架正受到越来越多的关注。我听到的大多数有关它的好处:比JSF简单,好设计,可测试性高,对HTML设计人员友好等。您可能喜欢它。
  • Tapestry:只是不要(请参阅为什么停止使用Tapestry?
  • Struts 2,Spring MVC,Stripes:基于动作的框架。一切都不错,并且可以满足您的需求(个人而言,我喜欢Stripes及其在配置方法上的约定,请参阅Stripes vs. Struts2了解它)。
  • GWT,Flex,Grails:这些可能不是您想要的。我不能真正谈论Flex和GWT(最新版本),但我知道Grails确实 一些 支持者

实际上,我建议您看一下Matt Raible的演讲,他在比较Web框架,显示其优势和劣势,收集事实和数字,显示趋势方面确实做得非常出色。我建议:

确实,看看这些演示文稿,它们将帮助您找到合适的框架(没有唯一的答案,但是您可以通过消除选择来限制选择),并且可能会改变您的观点。

我已经使用Spring 3和Jquery一段时间了,但听说了Play并试了一下。我真的很喜欢,Play非常适合PHP之类的东西和诸如Spring之类的重型Java框架。

我最喜欢玩的东西是:

  • 很容易就可以创建一个播放应用程序,您必须在编码和配置上走得很远,才能使用Spring在屏幕上获得一个简单的原始应用程序(尽管Spring 3使它变得容易得多)。
  • Spring Security很棒,但是却以复杂性为代价。Play的安全模块非常简单,可以满足大约90%的应用程序的需求。
  • 您可以进行代码更改,然后在浏览器中单击刷新以查看更改,就像使用PHP一样,而不必使用基于Servlet的框架进行整个重新部署。
  • 错误消息可以很好地显示,并且在大多数情况下不是那么神秘。Play仍需要进行错误处理
  • Play的插件机制非常简单。
  • 对象持久性非常出色,因为内存数据库和JPA随框架一起提供,因此无需配置外部对象持久性工具。从内存数据库到实际的RDBMS是配置文件中的一行更改。
  • MVC设置非常好。您扩展来创建域对象的Model类与JPA实体管理器集成在一起。它们不只是POJO的。
  • 将URL映射到控制器既简单又灵活,并且都在一个“路由”文件中。
  • 每当您创建项目时,Play都会处理所有jar依赖项,并且Play有一个实用工具可以对项目进行月食化(或您喜欢的任何IDE),以便将其直接导入到您喜欢的IDE中。

我不喜欢Play的事情

  • 文档还不完整,仍然存在许多未记录的功能。
  • 该框架是服务器,因此您必须为每个应用程序专用一个端口。我认为有人正在开发虚拟主机插件,但我还没有看到它的实际应用。
  • 它还很年轻,项目很棒,技术很棒,但确实需要更多开发人员。我们将花一些时间来解决这个问题。

我的首选是Wicket标记和Java代码清晰分开。非常容易编写和使用组件。简单易用的Ajax,可测试性。您可以直接在页面/组件中进行调试,而不会从您的JSF实现中获得含糊不清的错误消息;)

性能方面,还有一个比较好的检票口<-> JSF

对我来说,前三个选择是(按字母顺序):

他们:

  • 有很好的ajax支持
  • 允许您创建实际的网站,而不是应用程序(例如GWT)
  • 稳定,有据可查,用途广泛
  • MVC
  • 纯Java
  • 与Spring轻松集成为中间件

游戏与ROR非常相似,ROR是Java中的ROR版本

与其他答案相反,我想强调一下流行的Web框架的缺点(IMHO):

JSF2-已发布,并且已经过时。仍然只有少数新闻/文章/博客文章/经历。我很怀疑。仍在等待完全支持jsf 2的Richfaces / Icefaces的下一个主要版本-当前只能下载Alpha版本。

Struts 2-如果您仍然依赖Struts并想重构大部分代码,这似乎只是一件好事。否则:不要。

GWT-我不喜欢单页和java-> javascript方法。我不确定是否一个会话-可以轻松实现多个视图/窗口。对我来说,该框架应用于大量用户的单窗口富Internet应用程序。

Wicket-不错的方法,但是有点冗长,可用的文档太少(行动手册中的好门框除外,但这仅涵盖1.3)。而且,对我来说,它缺少大型项目,而大型项目却建在其上。我目前无法看到检票口的路往何处行驶,或者是否已经驶入尽头。

Spring MVC-尚未尝试过,但是您必须在类路径中包含许多jar(春季混乱),才能正确使用此框架。而且它依赖于JSP(在大多数项目中),我认为它已经死了。而且,您只有一个纯MVC框架-所有其他内容(ajax和其他东西)都必须实现/集成。

Stripes(条纹) -一个设计精巧的MVC框架,但是文档太少,提交/提交者太少,发行版太少,行业支持太少,邮件列表活动太少。

我也很好奇我是否错过了一个主要框架(我故意遗漏了Tapestry),这可能是您(也是我)的一个选择。

我在JAX-RS上取得了巨大的成功它是唯一具有某种JS​​R规范和多种实现(而不是servlet和portlet规范)的Java Web Framework(尽管这可能是一件坏事)。

Java的坏处是,您可以选择和匹配框架(python也具有此功能/问题)。很好,因为您不必将所有鸡蛋都放在一个篮子里。

这是一般的Java Web应用程序堆栈配方:

Javascript / Flash +请求/响应处理+依赖注入+持久性

Javascript: JQuery,Prototype,Dojo

请求/响应: Spring MVC,Stripe和我最喜欢的JAX-RS(Jersey,Apache CXF)

依赖注入:春季,吉斯

持久性: JPA(Hibernate,Google App存储),Hibernate,JDO等。

在使用AspectJ使Java“减少吸气”方面,我也取得了巨大的成功。通过使用Spring的@Configurable和AspectJ的ITD mixin,您可以像域对象一样获得Rails(这实际上是Roo所做的,但您不需要Roo来做到这一点)。

我发现条纹是真正有效和令人惊讶的轻巧....它的目标是超过轻量级支柱我已经从全职Web开发人员的朋友那里听说,尽管我没有第一手经验,但JSF并不值得打扰,并且无法通过示例(!)来支持。

看看RESThub,它遵循与Play相同的原理!但是可以通过重用一些企业级框架/工具(例如Maven 3 / Spring 3 / Jersey / jQuery)来实现。

与其他框架相比,RESThub具有很大的破坏性,因为它是一个完整的堆栈工具箱,但是没有任何基于服务器端MVC或基于Servlet的framworks。取而代之的是,它使用基于jQuery UI的GUI,该GUI使用JAX-RS(REST)Web服务以及基于EmbeddedJs的Javascript模板系统。

服务器是无状态的,我们使用HTML5 sessionStorage将会话保持在客户端。此方法是针对RIA和可伸缩性设计的。

提供了一些演示应用程序(即使正在构建中)。

JSF是一个不错的框架,但是JSF 1.2缺少发布它多年的愿景。JSF 2.0看起来很有希望,并且在JSF 1.2的基础上增加了许多新功能,例如ajax支持,facelets,注释支持和默认约定(较少的XML),比1.2易于构建的组件。

如果您需要DI支持,它也可以与Spring很好地集成。

我会推荐春季建议。我不是GWT的忠实拥护者,我认为Java-> Javascript交叉编译器还不存在。我正在开发一个在服务器上使用spring并在客户端上使用jQuery的AJAX应用程序。尽管从技术上讲,没有对jQuery的“开箱即用”支持,但是实现spring-MVC AjaxView却非常简单,大约需要25行代码。

也许演出晚了一点,但我不得不Vaadin编程仅使用基于组件的方法在Java中完成。客户端-服务器通信更多地是关于用户交互,而不是数据传输,所有业务逻辑都驻留在服务器上。

Ext GWT +弹簧

我认为您正在寻找与Jahia接近的东西。它支持GWT,混搭,媒体内容等。

http://www.jahia.org/cms/lang/zh/home/Jahiapedia/Jahia_Templates
http://www.jahia.net/downloads/jahia/jahia6.0.0/readme/index.html

后台门户软件

几年前就使用了门户软件“ Backbase ”,那时它还不是很成熟。但是很好,很容易开发。

看看ItsNat

itsNat基本上是服务器中的Java W3C浏览器,非常简单(服务器中为DHTML),促进了AJAX密集型单页界面应用程序

基于播放器的RIA框架值得一提。例如 Adobe Flex + Java(当然,这可能取决于您的“站点”是真正的“站点”还是更像是“应用程序”,而您不会在Flex中创建博客站点。)

阿贾克斯

在AJAX即流行的意义上,Flex通常使用AMF(比AJAX应用程序使用的协议更有效的二进制协议),尽管您也可以使用Flex严格执行AJAX的工作。因此,Flex支持AJAX,但也支持“优于AJAX”。

富媒体内容,混搭,

由于Flex在Flash“虚拟机”平台上运行,因此我认为几乎不需要添加任何内容。

基于模板的布局,

不知道这到底是怎么回事,但听起来像Flex mxml。

验证,

当然可以支持,但是如果您想花哨的话可以决定做一些自定义的工作。(不是必须的。)令人高兴的是,您可以根据自己的喜好来做,也可以不做。

最大的html / java代码分隔

使用“虚拟机”开发方法(例如Flex / Silverlight / JavaFX)无法将您分开。这不仅使您可以将表示代码与服务器端逻辑和数据访问层分开,还可以确保将它们分开。“虚拟化”您的开发环境可为您提供跨浏览器的兼容性,一致的目标平台,无需担心新的浏览器或新的浏览器版本会破坏您的应用程序,一流的Java调试功能以及更专业/令人印象深刻的最终产品。

本文地址:http://java.askforanswer.com/xianzaixuanzejava-web-frameworkguanbi.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!