繁体   English   中英

Wicket或Playframework?

[英]Wicket or Playframework?

我是Java Web开发的新手,我想选择一个好的Java Web框架来学习。 我发现了一些关于Apache Wicket框架Playframework的非常好的回声。 我决定去找其中一个; 但我需要选择;-)

那么,选择什么以及为什么?

编辑

我的要求:

  • 我有很好的使用Django开发的经验,所以类似的框架会很棒,
  • 我需要一个可以与其他主流Java好东西(库,工具等)交互的框架,这样我就可以利用Java真正提供的功能。

Wicket和Play是两种截然不同的框架。

Play是一个MVC框架,您可能会对Django感到熟悉。 像Django一样,它提供的不仅仅是Web位,还提供了基于JPA的ORM框架,脚手架工具以及可能更多(我没有实际经验)。 他们在他们的网站上有一个很棒的教程,你可能会在那里看到Django的相似之处。

Wicket是一个面向组件的框架(如JSF和Tapestry),并且主要关注面向对象的设计。 它本身也是MVC,但页面通常是通过组合自包含和可重用的组件(View和Controller,可插拔模型)构建的。 这些组件可以通过标准继承和组合进行扩展,并且标记与代码非常清晰地分开并且易于修改。

检票可以自动管理事件的回调和状态,这样你就不必想的网址可言,不管你的网页是多么复杂。 一个可点击按钮的快速示例,当点击它时非常有用(非常有用):

  // In a page constructor
  add(new Link("link") {
        public void onClick() {
          setVisible(false);
        }
    });

我想强调一点,你不必使用服务器端状态,并且如果你愿意的话,很可能将Wicket用作“普通”MVC框架(是的,它很容易得到漂亮的URL)。

Wicket项目仅关注核心Web框架,并且没有额外的“细节”,例如特殊的ORM支持或脚手架。 我个人同意Wicket项目的理念,但是对于进入框架的新开发人员来说,做一些“简单”的东西,比如可排序和可分页的表格可能有点令人生畏,因为预构建的组件有点稀缺。 Wicket的学习和生产力曲线可能有点陡峭,但好处是,一旦你制作了符合你需求的组件(和“行为” - 更长的故事),它们就是非常可重复使用的。

虽然我个人喜欢Wicket,但我有一种预感,你可能会玩Play最好。 你的问题表明你想要一个可以访问Java库的“Django”,在这种情况下,我认为Play(或其他一些Java MVC)是安全的选择。 另一方面,也许你一直在使用Django,因为你不知道Wicket有多么强大。 ;)如果您提供有关项目的更多信息,我们将能够提供更合格的回复。

作为一个侧节点:由于Play不是很主流(至少目前为止),我还会考虑Grails ,它具有强大的商业支持和更多开箱即用的模块。

玩! 适用于来自Python和PHP等脚本语言的开发人员。 它提供了自己的构建系统和管理脚本,有点像Rails或Django。 现有的构建工具和基础结构(如通常用于Java-land中的依赖关系管理的Maven存储库)将无法与Play良好集成。

对于来自Java桌面开发的开发人员来说,Wicket会更加舒适。 它不提供特殊工具,因此如果您有偏好,将更容易集成到特定的构建工具中(并且有许多构建工具提供Java生态系统中可用的自动依赖项检索等功能。)

所以这两个选项之间存在很大差异:)如果你能找出最有利于你的经历,那么决定应该很清楚。

如果您的系统仅适用于Web层,请播放! 框架非常合适。 But ,如果您的数据模型不仅仅适用于Web,可能exported as REST by Spring with CXF ,并由GWT或其他Web服务使用,并且您希望确保与Web层,Wicket(使用Spring / hibernate)的一致状态是个不错的选择。

我对Play的感觉不太好! 是缓存机制。 您必须手动命名/插入/检索/无效/清除缓存。 这将使整个架构容易出错。 使用spring / JPA(hibernate)/ ehcache(或其他提供程序)的wicket时,可以为上层(web / REST ...)定义一致的缓存/ dao层,这不会强加状态不一致。

wicket的另一个优点是它具有Java支持的内置AJAX支持。 虽然这些AJAX的状态是在服务器端维护的(可能有点迟钝),但如果你不想学习JavaScript,你仍然可以构建一个“不那么糟糕”的AJAX页面。

随着玩! ,如果你不了解JS,并且不想学习它,不想操纵繁琐的DOM,你只能建立一个“普通”的网站。 OTOH,如果你熟悉JS / jQuery,你可以选择Play!

我正在使用PLay! 很多,并使用Wicket进行一些评估。 我的经验是,您必须编写更多代码才能完成与Wicket相同的工作。 你对Wicket有更多的“间接”。 我个人更喜欢尽可能少的“仪式”代码,这很容易理解。

表演! 建筑师也在为Play!添加Scala支持,我认为这是一个好主意,因为Scala可以与Java代码和库完全互操作,但远比Java先进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM