您能分享一下一起使用 Scala 和 Wicket 的经验吗?他们自然而然地适合彼此吗?使用带有 Wicket 的 Scala(和 FP)比使用 Java 有优势吗?为什么(会)你更喜欢 Wicket 而不是 Lift?
4 回答
对于那些对代码感兴趣的人,我在这里用 Scala + Wicket重新实现了 Seam“酒店预订”演示:浏览| SVN - Java + Wicket 版本在这里:浏览| SVN
我使用了(尚未最终确定的)Scala 2.8 和 NetBeans 插件。有必要详细介绍一下它(甚至有一个 Groovy + Wicket 实现),但下面有一些高级印象;举个例子,下面是Java中相同的 UI 代码| 斯卡拉。观察:
- 当然少了很多样板和更少的“噪音”
- 在嵌套组件方面,Scala 感觉非常适合 Wicket
- 例如,定义内部类/构造函数的工作量/代码行数较少,因此可以大部分内联并保持嵌套而不会造成太多混乱
- 同时覆盖框架方法作为单行。好的 !
- Scala 似乎与 Wicket 泛型配合得很好,编译器有时似乎更严格,也许这是一件好事。NetBeans 插件有帮助,但有时仍然存在错误和缓慢。
- 不是一个非常复杂的应用程序,所以没有机会应用闭包和 FP
- 您需要注意以下一些问题:与 Scala 战斗——Scala 到 Java 列表转换——我暂时使用 Java 集合来管理域对象属性。
尚未运行性能测试/比较。请继续关注 :) 当我有时间发布关于此的详细博客条目时,请告诉我您是否想知道任何事情。哦,如果您有机会查看代码并告诉我可以改进的地方,那就太好了!
我还没有看过 Lift,但这里有一篇可能对 OP 有所帮助的博文:从 Wicket Developer's Perspective 提升
不得不说,如果与 Wicket 混合,我会选择 Scala 而不是 Groovy。“组织导入”IDE 特性本身就解决了这个问题。新的 Groovy 内部类支持在使用 Wicket 时有一些严重的问题。还遇到了一些问题,例如 groovy.lang.Reference not Serializable 等。
我已经使用了一点 Scala + Wicket —— 这是介绍一些 Scala 的好点。给定一些隐式转换或实用方法,闭包有助于减少 Wicket 控制器中的代码行数。甚至 Dave Pollak 也曾建议过这种组合,如果您更喜欢 Wicket 而不是 Lift,或者您想要使用现有的 Wicket 应用程序来改造 Scala。
请注意您在任何有状态 Wicket 组件中使用的数据类型,因为它们必须是可序列化的。有时您可以不这样做,并使用无状态的 Wicket 组件。
他们一起工作得很好。更不用说使用 Scala 作为你的语言的所有好处了。
一路走来,我拿出了一些我觉得有用的东西,并创建了 Scala Wicket Extensions 东西项目: http: //www.mail-archive.com/users@wicket.apache.org/msg40899.html 没用过有一段时间了,但应该还是不错的。我真的很想让更多的人为这个项目做出贡献。
很遗憾检票口的东西(和检票口)不在 Github 中:/
我只想指出在 Scala 2.8 中进行 scala 到 java 转换并返回的新方法,因为它在 Peter Thomas 的回答中被指出为一个问题。那里描述了新的东西:Java和Scala集合之间的转换
它应该解决我猜的 scala <=> java 集合问题