JavaでPlay 2.0を使用したプロトタイプを完成しましたが、今後はScalaを学習することを検討していますので、今後の開発に切り替えることができます。
通常はJava対Scalaのディスカッションだけではありません.Playフレームワークで見られるような問題は、ScalaのイディオムをJavaに強制することです。ドキュメントからの例についてcalling multiple web services:
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
の注釈を削除して見栄えをよくすることに注意してください。インデントには2つのスペースを使用し、検証やエラーリカバリを行わない非常に単純な例を選んでください。私はあなたが完全に他のコードを台無しにすることなく、このように出力するようにコードフォーマッタを構成できるかどうかも分かりません。
実際には、私は別のサービスからデータを取得するための恐ろしいJava-Scala-abominationの読めないブロックで終わってしまいました。
残念ながら、私はScalaで応答を結合する例は見つかりませんでした。少なくとも1つの電話番号web services in Scalaは、はるかに短くて読みやすくなります。
Iterateesは非常にintrestingの外観とScalaのコードは確かに – dreampowder
本当にコンパクトに見えますが、ScalaはJavaのより少ない冗長です:-)あなたもこれを見てみることができます:http://stackoverflow.com/questions/727078/whats-so-great-about-scala –
@dreampowder事実上、AFAIK、iterateesはおそらくJavaで欠けている機能の1つに過ぎませんバージョン、他の要素は両方の言語で非常に匹敵します。だから、もしあなたがJavaに慣れていれば、そのままで、欠けている部分だけScalaを使うことができます。あなたが環境設定を持っていない場合は、どの言語があなたにとって良いのか自分自身で確認する必要があります。 – biesior