首页 文章

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

提问于
浏览
148

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

基于门户的解决方案是否适合这个问题?

任何关于使用“Spring Roo”或“Play”的见解都会非常有帮助 .

我找到了像this这样的类似帖子,但它已经超过一年了 . 事情肯定在同一时间发生了变化!

EDIT 1: 谢谢你的答案!这个网站正在成为沟内程序员信息的最佳单一来源 . 但是,我期待有关使用portal-cms二人组的更多信息 . Jahia看起来像货物 . 有什么相似的吗?

17 回答

  • 1

    我发现stripes真的很有效,而且重量很轻......它的目的是比struts更轻盈 . 我用示例(!)来支持它 .

  • 146

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

    就个人而言,我会远离大胖的Portal解决方案(他们通常是 生产环境 力杀手) . 我听说Gatein虽然很好,但我对它没有任何实际经验 .

    任何关于使用“Spring Roo”或“Play”的见解都会非常有帮助 .

    关于Spring Roo,我已经阅读了之前的答案,比如Spring roo Vs (Wicket and Spring)以及互联网上的其他内容但是我得到了它,我真的想知道SpringSource在Grails和Roo上做了什么(不,Grails vs Roo - why SpringSource is pushing two very similar technologies?并没有让我相信他们都会幸存下来的 .

    我不能多说Play . 我看过每个人的演示,但我想阅读现实生活中的反馈 . 在那之前,我会等 .

    我确实找到了类似的帖子(...) . 事情肯定在同一时间发生了变化!

    是的,不是:)但是让我们进入演示框架地狱:你的问题没有单一的答案(比如一年前),那里有十几个框架,没有明显的赢家 . 仅举几例:

    • JSF:关于这个基于组件的框架有很多怀疑论者,包括我,所以我不是最好的谈论它但是...

    • JSF 2(CDI / Weld):鼓励JSF怀疑论者(by Gavin King)至"take a second look" . 实际上,我认为JSF 2是一个很大的改进,特别是对于CDI,但是......它仍然很新(理解,它缺乏反馈) . 如果你想拥抱Java EE 6,请查看它 .

    • Wicket:另一个基于组件的框架越来越受到关注 . 我听到的主要是好东西:比JSF简单,设计漂亮,可测试性高,HTML设计友好等等 . 你可能会喜欢它 .

    • 挂毯:只是不要(见Why did you stop using Tapestry?

    • Struts 2,Spring MVC,Stripes:基于动作的框架 . All decent and will cover your needs (就个人而言,我喜欢Stripes及其关于配置方法的约定,请参阅Stripes vs. Struts2以了解它) .

    • GWT,Flex,Grails:这些都不是't maybe not what you'正在寻找 . 我不能真正谈论Flex和GWT的(最新版本),但我知道Grails确实have some fans .

    实际上,我在比较网络框架,展示自己的优势和劣势,收集事实和数据,展示趋势方面做得非常出色......我建议:

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

  • 11

    我一直在使用Spring 3和Jquery一段时间,但听说过Play并给了它一个机会 . 我非常喜欢它,Play非常适合像PHP和像Spring这样的重型Java框架 .

    我最喜欢玩的东西是:

    • 非常容易获得一个播放应用程序,你必须在编码和配置方面走得很远才能在Spring屏幕上获得一个简单的crud应用程序(尽管Spring 3使它变得更容易) .

    • Spring Security非常棒,但却以复杂性为代价 . Play的安全模块非常简单,可满足大约90%的应用程序的需求 .

    • 您可以在浏览器中进行代码更改并点击刷新以查看与PHP类似的更改,而不必执行此操作整个基于Servlet的框架重新部署 .

    • 错误消息显示得很好,而且大部分时间都不是那么神秘 . 播放仍然需要处理他们的错误处理

    • 那里's a plugin mechanism for Play that'很简单 .

    • 对象持久性非常好,因为内存数据库和JPA随框架一起提供,因此没有外部对象持久性工具的配置 . 从内存数据库到实际的RDBMS是配置文件中的一行更改 .

    • MVC设置完成得非常好 . 您扩展以创建域对象的Model类与JPA实体管理器集成 . 他们're not just POJO' .

    • 映射到控制器的URL简单而灵活,并且都在一个"routes"文件中 .

    • 每当你创建一个项目Play时都会处理所有的jar依赖项,并且Play有一个eclipse-ify(或你喜欢的任何IDE)的实用程序,以便它直接导入你喜欢的IDE .

    我不喜欢Play的事情

    • 文档还没有完全存在,许多未记录的功能仍然存在 .

    • 框架是服务器,因此您必须将端口专用于每个应用程序 . 我认为有人正在开发一个虚拟主机插件,但我还没有看到它的实际应用 .

    • 它's young, the project is awesome and technology is awesome but it really needs some more developers. I would love to dedicate some time to it, we'我会看到的 .

  • 17

    我的首选是Wicket . 清楚地分离标记和java代码 . 非常容易编写和使用组件 . 易于使用Ajax,可测试性 . 您可以直接调试到您的页面/组件,也不会从您的JSF实现中获得神秘的错误消息;)

    terms of performance还有一个很好的比较wicket < - > JSF

  • 2

    我的前三个选择是(按字母顺序):

    他们:

    • 有很好的ajax支持

    • 允许您制作实际的网站,而不是应用程序(如GWT)

    • 稳定,记录完备,广泛使用

    • MVC

    • 纯Java

    • 与Spring作为中间件轻松集成

  • 13

    Play与ROR非常相似,ROR是java中的ROR版本

  • 6

    与其他答案相比,我想强调流行的Web框架的缺点(恕我直言):

    JSF2 - 已发布且已老化 . 仍然只有少数新闻/文章/博客文章/经验 . 我持怀疑态度 . 仍在等待Richfaces / Icefaces的下一个主要版本,它完全支持jsf 2 - 目前只能下载alpha版本 .

    Struts 2 - 如果你're still relying on struts and want to refactor most of your code. Otherwise: Don' t似乎只是一件好事 .

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

    Wicket - 很好的方法,但有点冗长,文档太少(除了行动书中的好检票,但这只涵盖1.3) . 另外,对我来说,它缺乏 Build 在它上面的大项目 . 我目前无法看到检票口的道路在哪里,或者它已经被驱赶到了死胡同 .

    Spring MVC - 尚未尝试过,但你必须在类路径中加入许多jar(spring mess)才能正确使用这个框架 . 它依赖于JSP(在大多数项目中),我认为它已经死了 . 而且你只获得了一个纯粹的MVC框架 - 所有其他东西(ajax和其他东西)都必须实现/集成 .

    Stripes - 一个设计精巧的小型MVC框架,但文档太少,提交/提交者太少,版本太少,行业支持太少,邮件列表活动太少 .

    如果我错过了那里的主要框架(我故意离开了Tapestry),我也很好奇,这可能是你的选择(对我来说也是如此) .

  • 1

    我在 JAX-RS 取得了巨大的成功 . 它是唯一具有某种JSR规范和除servlet和portlet规范之外的多种实现的Java Web Framework(尽管这可能是一件坏事) .

    关于Java的一件坏事和好事就是你可以选择和匹配框架(python也有这个功能/问题) . 它很好,因为你不必把所有鸡蛋放在一个篮子里 .

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

    Javascript/Flash + Request/Response handling + Dependency Injection + Persistence

    Javascript: JQuery,Prototype,Dojo

    Request/Response: Spring MVC,Stripes和我最喜欢的JAX-RS(Jersey,Apache CXF)

    Dependency Injection: Spring 天,Guice

    Persistence: JPA(Hibernate,Google App存储),Hibernate,JDO等 .

    我在使用AspectJ使Java“少吸收”方面也取得了很大的成功 . 通过使用Spring的@Configurable和AspectJ的ITD mixins,您可以获得像Domain对象一样的Rails(这实际上是Roo所做的,但是你不需要Roo来做这件事) .

  • 3

    看看RESThub,遵循Play的相同原则!但通过重用一些企业级框架/工具(如Maven 3 / Spring 3 / Jersey / jQuery)来实现 .

    RESThub与其他框架相比具有非常大的破坏性,因为它是一个完整的堆栈工具包,但没有任何服务器端MVC或基于servlet的框架 . 相反,它使用基于jQuery UI的GUI,该GUI使用JAX-RS(REST)Web服务和基于embeddedJs的Javascript模板系统 .

    服务器是无状态的,我们使用HTML5 sessionStorage在客户端保持会话 . 这种方法是针对RIA和可扩展性而设计的 .

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

  • 2

    JSF是一个很好的框架,但JSF 1.2在发布后的几年内缺乏远见 . JSF 2.0看起来很有前途,并且在JSF 1.2中添加了许多新东西,例如ajax支持,facelets,Annotation支持和默认约定(更少的XML),比1.2更容易构建组件 .

    如果您关心DI支持,它也可以很好地与Spring集成 .

  • 0

    我会提出 Spring 季推荐 . 我不是一个巨大的粉丝GWT,我不认为Java - > Javascript交叉编译器还没有 . 我正在开发一个AJAX应用程序,它在服务器上使用spring,在客户端上使用jQuery . 虽然技术上并没有对jQuery提供“开箱即用”的支持,但是实现一个spring-MVC AjaxView非常简单并且需要大约25行代码 .

  • 8

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

  • 10

    Ext GWT Spring

  • 5

    我认为你所寻找的是与Jahia关系密切的东西 . 它支持GWT,Mashups,媒体内容等 .

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

  • 41

    BACKBASE PORTAL SOFTWARE

    几年前曾使用门户软件“ Backbase ”,这还不是很成熟 . 但是发展是好的和容易的 .

  • 1

    看看ItsNat

    ItsNat基本上是服务器中的Java W3C浏览器,非常简单(服务器中的DHTML),推广AJAX密集型Single Page Interface应用程序

  • 1

    不仅仅是一颗子弹的东西是基于玩家的RIA框架 . 防爆 . Adobe Flex Java(当然,这可能取决于您的“网站”是真的“网站”还是更像“应用程序”,您不会在Flex中使用博客网站 . )

    ajax,

    在AJAX-as-a-buzzword意义上,Flex通常使用AMF(一种比AJAX应用程序使用的协议更高效的二进制协议),尽管您也可以使用Flex严格执行AJAX . 所以Flex支持AJAX,但也支持"better than AJAX" .

    富媒体内容,混搭,

    由于Flex在Flash'虚拟机'平台上运行,我认为很少需要添加 .

    基于模板的布局,

    不确定这到底是什么,但听起来像Flex mxml .

    验证,

    支持当然,虽然你可能决定做一些自定义的东西,如果你想得到花哨 . (不是你必须这样做 . )好的一点是,你可以得到你想要的那么复杂 - 或者不是 .

    最大html / java代码分离

    您可以使您的演示文稿代码与服务器端逻辑和数据访问层分开 - 它可以确保您的开发环境能够实现跨浏览器兼容性,一致的目标平台,无需担心新浏览器或新浏览器版本会破坏您的应用程序,顶级的类似Java的调试功能,以及更专业/令人印象深刻的终端产品 .

相关问题