我是 Java Web 开发的新手,我想选择一个好的 Java Web 框架来学习。我发现了一些关于Apache Wicket 框架和Playframework的非常好的回声。我决定选择其中一个;但我需要选择;-)
那么,选择什么以及为什么?
编辑
我的要求:
- 我在 Django 开发方面有很好的经验,所以类似的框架会很棒,
- 我需要一个可以与其他主流 Java 好东西(库、工具等)交互的框架,这样我就可以利用 Java 真正提供的功能。
我是 Java Web 开发的新手,我想选择一个好的 Java Web 框架来学习。我发现了一些关于Apache Wicket 框架和Playframework的非常好的回声。我决定选择其中一个;但我需要选择;-)
那么,选择什么以及为什么?
编辑
我的要求:
Wicket 和 Play 是两种截然不同的框架。
Play 是一个 MVC 框架,您可能会对来自 Django 的熟悉。与 Django 一样,它提供的不仅仅是 web 位,还提供了基于 JPA 的 ORM 框架、脚手架工具等等(我没有实际经验)。他们的网站上有一个很棒的教程,你可能会在那里看到 Django 的相似之处。
Wicket 是一个面向组件的框架(如 JSF 和 Tapestry),主要关注面向对象的设计。它本身也是 MVC,但页面通常是通过组合自包含和可重用的组件(视图和控制器、可插入模型)来构建的。这些组件可以通过标准继承和组合进行扩展,并且标记与代码非常干净地分离并且易于修改。
Wicket 可以自动管理事件回调和状态,因此无论您的页面多么复杂,您都不必考虑 url 。一个可点击按钮的快速示例,当它被点击时会消失(非常有用):
// 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 领域中通常用于依赖管理的 Maven 存储库)将无法与 Play 很好地集成。
Wicket 对于来自 Java 桌面开发的开发人员来说将更加舒适。它不提供特殊工具,因此如果您有偏好,它会更容易集成到特定的构建工具中(并且有许多构建工具提供诸如 Java 生态系统中可用的自动依赖项检索之类的东西。)
因此,这两个选项之间存在相当大的差异 :) 如果您能确定哪种体验对您最有利,那么从那里做出的决定应该很清楚。
如果您的系统仅适用于 Web 层,请玩!框架很合适。But
,如果您的数据模型不只是用于 web ,也许exported as REST by Spring with CXF
,并且被 GWT 或其他 web 服务使用,并且您想确保与 web 层的状态一致,那么 Wicket(带有 Spring/hibernate)是一个不错的选择。
我对 Play 的感觉不太好!是缓存机制。您必须手动命名/插入/检索/无效/清除缓存。这将使整个架构容易出错。虽然带有 spring/JPA(hibernate)/ehcache(或其他提供程序) 的检票口,您可以为上层 (web/REST...) 定义一致的缓存/dao 层,这不会强加状态不一致。
wicket 的另一个优点是它具有由 Java 支持的内置 AJAX 支持。虽然这些 AJAX 的状态是在服务器端维护的(可能有点迟钝),但如果你不想学习 JavaScript,你仍然可以构建一个“不那么糟糕”的 AJAX 页面。
玩!, 如果你不懂 JS,又不想学,又不想操作繁琐的 DOM,那只能做一个“一般”的网站。OTOH,如果你精通JS/jQuery,你可以选择Play!.
我正在使用播放器!很多,并且已经使用 Wicket 进行了一些评估。我的经验是,您必须编写更多代码才能使用 Wicket 完成相同的工作。Wicket 有更多的“间接性”。我个人更喜欢“仪式”尽可能少且易于遵循的代码。
表演!架构师还在为 Play! 添加 Scala 支持,我认为这是一个好主意,因为 Scala 可以与 Java 代码和库完全互操作,但比 Java 先进得多。