Apache Wicket 7.2.0 发布

  • Matt Raible
  • 刘嘉洋

2016 年 3 月 6 日

话题:Java语言 & 开发

Apache Wicket PMC已发布 Apache Wicket 7.2.0 版本。这次的发布是一次较小的版本发布,但是它涵盖了很多新的功能。为了了解这次发布的更多内容以及 Apache Wicket 的状况,InfoQ 采访了 Apache Wicket PMC 的成员 Martijn Dashorst 先生。

InfoQ: 首先,恭喜你们顺利发布!在你们的发布说明中新功能和值得注意的部分,你提到了两个值得期待的新功能:1)可以使用 Java’s NIO API 将资源从文件系统中读出 2)从外部服务器加载照片。你可以向 InfoQ 的读者解释一下为什么它们很重要吗?

Dashorst: 第一个功能让用户可以非常便捷地直接将媒体内容从文件系统导入浏览器中去。比如说,当你有视频文件被存储在 zip 存档中时,你可以使用 Java NIO API 直接导入。

Java 代码如下:

URI uri = URI.create("jar:file:///videosFolder/videos.zip!/folderInZip/Video.mp4");
Path path = FileSystemResourceReference.getPath(uri);
FileSystemResourceReference ref = new FileSystemResourceReference("video", path);
Video video = new Video("video", ref);
add(video);

HTML 标记如下:

<video wicket:id="video"></video>

视频组件将在 HTML 文档中创造恰当的媒体标签,当浏览器请求视频组件的时候,FileSystemResourceReference 会直接导入视频组件。

例如说,Wicket 在 Apache OpenMeetings 项目中使用,因此这个功能将会给他们带来便捷。

ExternalImage 组件不仅仅是对现有的组件的再使用,还可以加速现有的 web 最佳实践。ExternalImage 组件支持跨界资源共享协议(CORS)以及和一系列外部 URLs 一起提供的 srcSet 属性。

这使得应用程序可以使用响应的多分辨率照片。

InfoQ: Wicket’s mailing list traffic 似乎正在走下坡路(根据 http://wicket.markmail.org提供的资料,每天平均 6 条信息)。你是否认为这是由于 JavaScript MVC 框架的兴盛造成的?

Dashorst: 我认为 mailing list traffic 的走低是许多不同的因素造成的。

正如你所见,许多其他的框架都关闭了——几周之前 JBoss 宣布了 RichFaces 中止使用——服务器端的网络框架的全盛时期已经渐渐衰退。我在一年多之前注意到,Wicket 是 15 个 2000 年代中期幸存下来的服务端网络框架之一,我使用“幸存”的意思是它在去年还进行了一次发布。

当然,拥有书,拥有在线用户指南可以去除对许多问题的解答需要,Stack Overflow 的出现也可以承担提问和回答问题的任务。

Wicket 已经推出了很长一段时间,在这期间有很多的应用程序都依附于其工作。然而我们从其 6.0 版本开始采纳了语义版本模型,努力将主要的 API 做得最小。这减缓了框架发展的速度,因此给 mailing list traffic 带来了麻烦。

即便如此,服务端框架都已经步入末路,彻底完结了。不需要在这些框架中加入很多东西来改善它们,我怀疑我们的现有用户希望我们可以彻底重写 Wicket,尽管它将给新的开发者提供一个新的引人注意的 API。

这是不是代表着对 Wicket 未来的唱衰?不,我很自信我们将支持开发提供给 Wicket 可以预见的未来!我们经常引入新的开发者到核心队伍中去,以促进项目的发展。我们的下载量在过去的几年中每月都稳定在 70000 次,未来还持续会有使用 Wicket 的项目。

InfoQ: 你们计划在未来在 Wicket 中加入什么功能?

Dashorst: 对 Java 8 lambda 表达式的支持似乎是对我们所处理的任务的很自然的匹配,我们也将加入一些功能,以实现连接组件和你的域中的对象。然而,我们想确保内存需求保持在一个低位。这是我们为 Wicket 8 计划添加的新功能,但现在还没有一个确切的时间表。

我们将关注 Java EE 技术,与 CDI 和 bean validation 这样的框架保持整合。

我们也将改善 Wicket 的一些部分,获得更高的性能。我们最近替换了 Wicket 的一个负责向页面中添加组件的核心功能,之前它的复杂度是 3 层 O(N^2),而替换之后的算法的复杂度仅仅是 O(1)。这是基于过去我们优化 CPU 周期之上,对内存消耗的优化。

我个人非常希望 Wicket 核心的功能可以改变。Wicket 在其许多 AJAX 处理中使用了服务器端状态,而我希望它可以达到无状态的 AJAX。我希望重新访问 Wicket 实例项目,将其和用户指南整合,之后用户手册中就可以引入活跃的代码。

InfoQ: 你怎么看Spring Boot starter for Apache Wicket

Dashorst: 它非常棒!为了创造这个项目,我们投入了大量的劳动,但我还没有使用过它。这是我们在我们的网站上提供的快速启动项目的很好的开端,似乎这也是基于 Wicket 的新项目启动和运行的很好的开端。

我认为这是我们社区活跃的很好的范例、Wicket 整合了大量开源项目,比如说我们的 Wicket

Stuff 项目涵盖了大约 100 个项目。Wicket Bootstrap 项目跟进最新的 Bootstrap 和 Wicket 项目发布。另外一方面作用于,JQuery UI 和 Kendo UI 与 Wicket 的整合。所以即使世人对于服务端框架的兴趣在下降,我们产品会消亡的谣言也实在是太夸张了。

InfoQ: 你还想补充一些什么吗?

Dashorst: 如果你阅读到这里,还没有用过 Wicket,或者你在很久以前用了 Wicket,请尝试一下它!使用 Wicket 从来没有这么简单、你可以使用上面所提及的 Spring Boot 整合,或者我们的Maven Quick Start

如果你想了解谁也正在使用 Wicket,请关注我们的 Built with Apache Wicket tumblr 网站,或者关注我们的推特账号@apache_wicket,在上面我们将发布社区中发生的任何事情,你也可以找到所有使用 Wicket 建造的网站。

查看英文原文Apache Wicket 7.2.0 Released


感谢张龙对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

Java语言 & 开发