您对Scala+Wicket的经验如何?

29

您能分享一下使用Scala和Wicket的经验吗?它们是否自然地配合? 与使用Java相比,使用Scala(和FP)与Wicket会带来什么优势?为什么您会选择 Wicket而不是Lift?


可能应该是社区维基 -- 实际上不会有一个“正确”的答案。 - John Feminella
4个回答

24

如果您对查看代码感兴趣,我在Scala + Wicket中重新实现了Seam“酒店预订”演示:浏览 | SVN - Java + Wicket版本在这里:浏览 | SVN

我使用了(尚未最终确定的)Scala 2.8和NetBeans插件。本来想详细介绍一下它(甚至已经有了一个Groovy + Wicket实现),但以下是一些高层次的印象; 例如,这里是相同UI代码的Java | Scala版本。观察:

  • 更少的样板代码和噪音
  • Scala 在嵌套组件方面似乎非常适合 Wicket
  • 例如,定义内部类/构造函数的工作量/代码行数更少,因此可以在大多数情况下内联完成并保持嵌套无太多混乱
  • 同时作为一行代码覆盖框架方法。很好!
  • Scala 与 Wicket Generics 配合得不错,编译器有时会更加严格,也许这是一件好事。NetBeans 插件有所帮助,但有时仍然存在错误和缓慢。
  • 没有非常复杂的应用程序,因此没有机会多次应用闭包和 FP
  • 需要注意一些陷阱,例如:Fighting Scala - Scala to Java List Conversion - 目前我使用 Java 集合来处理域对象属性。

尚未运行性能测试/比较。敬请期待 :) 如果我发表了详细的博客文章,如果您想知道任何事情,请告诉我。哦,如果您有时间查看代码并告诉我可以改进什么,那就太好了!

我还没有看过 Lift,但这里有一篇博客文章可能对 OP 有所帮助:Lift from a Wicket Developer's Perspective

不得不说,如果需要与Wicket混用,我会毫不犹豫地选择Scala而非Groovy。"组织导入"IDE功能本身就解决了这个问题。新的Groovy内部类支持存在一些陷阱,严重影响了使用Wicket时的效率。同时还遇到了一些问题,例如groovy.lang.Reference不可序列化等。


你用过 Scala Wicket 扩展项目吗?http://www.mail-archive.com/users@wicket.apache.org/msg40899.html? - Antony Stubbs

4
我曾经稍微使用过Scala + Wicket——这是介绍一些Scala的好机会。使用闭包可以帮助减少Wicket控制器中的代码行数,只需要一些隐式转换或实用方法。即使Dave Pollak曾经建议使用这种组合,如果您更喜欢Wicket而不是Lift,或者有一个现有的Wicket应用程序,您想要将Scala与之集成。
只需注意在任何有状态的Wicket组件中使用的数据类型必须可序列化。有时您可以不使用它,并使用无状态的Wicket组件。

3

它们非常搭配。更不用说使用Scala作为您的编程语言所享有的所有优势了。

在我的学习过程中,我抽取了自己认为有用的部分并创建了Scala Wicket扩展项目: http://www.mail-archive.com/users@wicket.apache.org/msg40899.html 虽然我已经有一段时间没有使用它了,但是它应该仍然很好用。我非常希望能有更多的人为这个项目做出贡献。

代码仓库在这里: https://wicket-stuff.svn.sourceforge.net/svnroot/wicket-stuff/trunk/wicketstuff-core/scala-extensions-parent/

遗憾的是,wicket-stuff和wicket都没有在Github上 :/


1

我只想指出一些新的方法,在Scala 2.8中进行scala到java的转换,因为这在Peter Thomas的答案中被指出是一个问题。新的东西在这里描述:Java和Scala集合之间的转换

我想应该解决scala <=> java集合的问题


1
太空博格,我认为你应该将它作为评论放在他的答案下面,而不是作为单独的答案,因为它并没有回答问题。 - Alexey
1
我同意,但我没有找到如何添加评论,"添加评论"选项没有提供给我... 如果您能编辑/更改它,请随意这样做。 - space borg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接