玩2.0+Java还是玩2.0+Scala



我正在考虑在玩1.2之后迁移到玩2.0。有一件事让我很困扰,那就是人们说Scala对于play2.0应用程序来说更"受欢迎"。我知道1.2和2.0的区别,但我不确定Java的Play 2.0和Scala 的Play 2.0之间是否有区别

所以我脑子里有一些问题:

  • 在Play中,有什么事情是我不能用java over scala做的吗2.0应用程序
  • 如果我开始在玩2.0应用程序

我刚刚用Java完成了一个使用Play 2.0的原型,现在我正在考虑学习Scala,这样我就可以切换到它进行进一步的开发。

这不仅仅是常见的Java与Scala的讨论——我在Play框架中看到的问题是,它将Scala习惯用法强加给了Java。文档中关于调用多个web服务的示例:

public static Result feedComments(String feedUrl) {
return async(
WS.url(feedUrl).get().flatMap(
new Function<WS.Response, Promise<Result>>() {
public Promise<Result> apply(WS.Response response) {
return WS.url(response.asJson().findPath("commentsUrl").get().map(
new Function<WS.Response, Result>() {
public Result apply(WS.Response response) {
return ok("Number of comments: " + response.asJson().findPath("count"));
}
}
);
}
}
)
);
}

它可以工作,但看起来不像传统的Java。那些括号看起来真的很吓人。即使是Eclipse也会感到困惑,永远不知道我需要或想要使用什么泛型——我总是必须手动选择它们。

还要注意的是,在文档中,他们删除了@Override注释,只使用了两个空格进行缩进,并总体上选择了一个非常简单的示例,没有验证或错误恢复,这样就不会使用太多行。我甚至不确定您是否可以配置一个代码格式化程序来像这样输出它,而不会完全扰乱其他代码。

在实践中,我最终得到了一个不可读的Java Scala块,它只是为了从另一个服务中获取一些数据。

不幸的是,我在Scala中找不到任何组合响应的例子。至少在Scala中调用单个web服务看起来更短、更容易阅读。

AFAIK,最好使用Scala,因为它提供了更多的功能性。

例如(如果我错了,请纠正我),您可以直接在Scala中使用Iteratees(也称为反应式编程),但我不知道如何用Java实现这一点。

此外,Play的Java API是Play体系结构的上层,核心是用Scala编写的;所以,如果你想了解内部发生了什么,那就选择Scala。

还要注意,您可以在同一个Play项目中混合Java和Scala,这样您就可以顺利地使用Scala。

我是Play的新手,刚刚用Java编写了一个中小型项目

它工作正常,功能强大,但很多功能似乎都是以Scala为中心的,Java支持也不尽如人意。Java API Doc实际上是不存在的,这使IDE失去了一些舒适感(IntelliJ-我推荐它)。Java世界中的集成不是很"自然"(SBT..),它不是作为一个war或maven模块构建的(但似乎有插件可以做到这一点)。您有点失去了现有Java工具的好处。

将Play与其他Frameworks区别开来的概念几乎都是scala原生的,Java其次。

我偶然发现了一些错误和怪癖,我总是会在Scala代码中结束,我必须阅读和理解才能修复或解决它

因此,Java方面的东西对我来说是非常次要的,尽管他们显然在努力让自己变得同样优秀。

现在,在Project之后,我会说它非常可用,甚至会再次使用它(在Java中)。

如果我开始学习并在剧中使用scala,我有什么优势2.0应用程序?

正如djangofan所评论的,当你在谷歌上搜索Play帮助时,你会得到Scala中的例子。

在Play 2.0中,有什么事情我不能用java over scala做吗应用

然而,我还没有(还是一个初学者)为Scala找到一个等效的Ebean。我发现的Scala示例都使用直接SQL实现持久性。数据库数据库在哪里?

由于我还没有找到Play with Scala的数据库抽象,我将继续使用Java。。。

最新更新