Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
播放2.0+;Java vs.Play 2.0+;斯卡拉?_Java_Scala_Playframework 2.0 - Fatal编程技术网

播放2.0+;Java vs.Play 2.0+;斯卡拉?

播放2.0+;Java vs.Play 2.0+;斯卡拉?,java,scala,playframework-2.0,Java,Scala,Playframework 2.0,我正在考虑在播放1.2之后迁移到播放2.0。让我困扰的一件事是,人们说Scala更适合Play2.0应用程序。我知道1.2和2.0之间的区别,但我不确定使用Java的Play2.0和使用Scala的Play2.0之间是否有区别 所以我心里有个问题: 在一部戏剧中,有什么是我不能用java而不是scala来完成的吗 2.0应用程序 如果我开始学习和使用scala,我有什么优势 播放2.0应用程序 好的,最好使用Scala,因为它提供了更多的功能 例如(如果我错了,请纠正我),您可以直接使用Sca

我正在考虑在播放1.2之后迁移到播放2.0。让我困扰的一件事是,人们说Scala更适合Play2.0应用程序。我知道1.2和2.0之间的区别,但我不确定使用Java的Play2.0和使用Scala的Play2.0之间是否有区别

所以我心里有个问题:

  • 在一部戏剧中,有什么是我不能用java而不是scala来完成的吗 2.0应用程序
  • 如果我开始学习和使用scala,我有什么优势 播放2.0应用程序

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

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

Play的javaapi是Play体系结构的上层,核心是用Scala编写的;所以,如果你想了解内部发生的事情,就使用Scala


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

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

这不仅仅是Java与Scala之间通常的讨论——我在Play框架中看到的问题是,它将Scala习惯用法强加给Java。文档中关于以下内容的示例:

公共静态结果feedComments(字符串feedUrl){
异步返回(
WS.url(feedUrl.get().flatMap(
新函数(){
应用公共承诺(WS.Response-Response){
返回WS.url(response.asJson().findPath(“commentsUrl”).get().map(
新函数(){
应用公共结果(WS.Response响应){
返回ok(“注释数:+response.asJson().findPath(“计数”);
}
}
);
}
}
)
);
}
它可以工作,但看起来不像传统的Java。那些括号看起来真的很吓人。即使Eclipse也会感到困惑,永远不知道我需要或想要使用什么泛型——我总是必须手动选择它们

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

在实践中,我最终得到了一个可怕的Java Scala讨厌的无法读取的块,只是为了从另一个服务获取一些数据


不幸的是,我找不到任何在Scala中组合响应的例子。至少调用single看起来要短得多,而且更容易阅读。

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

它工作正常,功能强大,但很多功能似乎都是以Scala为中心的,Java支持还不够。 Java API文档实际上是不存在的,这会让IDE失去一些舒适感(IntelliJ-我推荐它)。 Java世界中的集成不是很“自然”(SBT..),它不是作为war或maven模块构建的(但似乎有插件可以实现这一点)

将Play与其他框架区分开来的概念几乎都是scala原生的,而Java第二

我偶然发现了一些bug和怪癖,最终我总是会遇到Scala代码,我必须阅读和理解这些代码才能修复或解决这些问题

因此,Java方面的东西对我来说只是第二层的感觉,尽管他们显然在努力让它们同样好

现在,在项目完成后,我会说它非常有用,甚至会再次使用它(在Java中)

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

正如djangofan评论的那样,当你在google上搜索Play帮助时,你会得到Scala中的示例

在Play 2.0中,有什么是我不能通过scala使用java的吗 申请

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


因为我还没有找到使用Scala的数据库抽象,所以我继续使用Java…

Iteratees看起来非常有趣,Scala代码看起来非常紧凑。当然,Scala没有Java那么冗长:-)您也可以看看这个:@DreamPounder事实上,顺便说一句,Iteratees可能只是Java版本中缺少的一个功能,两种语言中的其他元素非常相似。所以,如果您对Java更满意,您可以继续使用它,只对缺少的部分使用Scala。如果你没有偏好。。。你需要检查一下哪种语言更适合你。是的,你可以在同一个Play项目中混合使用Java和Scala,这样你就可以顺利地使用它了Scala@nico_ekito听起来是个不错的计划,我可以用java开发,同时我可以在学习scala时将scala代码添加到项目中。是的,似乎每当我搜索Play帮助时,我总是在Scala中找到例子,我也在这条路上。还是从java开始。而且,自从我提出这个问题以来,他们对java文档做了很大的改进。如果你更看重性能而不是方便,那么使用direct SQL就是一个优势。这就像说,如果你更看重性能而不是方便,那么使用汇编程序是一个优势而不是C#。。。当然有时间和地点,但不是在一般的应用程序编码中。@GreenAsJade,问题是SQL已经像C#或Java一样是一种抽象。ORMs是SQL之上的另一个抽象级别。看看SQLite或CachéIntersystems,它们都允许查看引擎盖下的内容。您的SQL将被转换为p指令
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"));
              }
            }
          );
        }
      }
    )
  );
}