scala と java を一緒に使用して、それぞれが最適に機能すると思われるものに使用できます。
私は休止状態がJavaでなければならないことを知っています。
これは必ずしも真実ではありません。scala クラスを Hibernate ORM オブジェクトとして使用できます。コンパイルされた .class ファイルが、Hibernate が期待するのと同じ getter、setter、およびデフォルトのコンストラクターになることを確認する必要があるだけです。
Web アプリ モジュールも scala で記述できます。コントローラーは、Spring MVC が期待する契約に従うだけで済みます。
一般に、Java で書かれたものはほとんどすべて scala で書き直すことができます。大まかに例外はありますが、成熟するたびに挑戦することを制限しないでください。既存のコードが異常なこと (つまり、ブラック マジック リフレクション) を何もしていないと仮定すると、問題ないはずです。
ここで興味深い質問は、Maven で動作させる方法です...
maven-scala-pluginを使用してこの種のプロジェクトを機能させることを説明する既存の SO の質問があります (scala と Java リソースが混在するマルチモジュール)。このソリューションに追加する唯一の追加コメントは、私の経験では、Java ソースに依存する scala モジュールでのみ動作させることができ、その逆ではないということです。これは、maven 構成が Java コンパイラーと scala コンパイラーを別々に使用したためです。理論的には、scala コンパイラーは Java ファイルもコンパイルできるため、すべてに対して 1 つのコンパイラーのみを使用するように構成した場合、この制限に遭遇することはありません。
編集:
Blankman は次
のようにコメントしています。Mavenの問題を理解しているかどうかわかりません。
はい、Java と Scala のソースが混在するいくつかのプロジェクトに取り組んできました。Hibernate レイヤーには Scala を使用しませんでしたが、他のすべてのレイヤーには使用しました。
私が説明している Maven の問題は、maven-scala-plugin 構成の結果でした。scala ファイルをコンパイルする方法を知るには、それを構成する必要があります。私たちの構成 (おそらく正しくない) は、最初に javac を使用して Java ファイルをコンパイルし、次に scalac を使用して scala ファイルをコンパイルするようにセットアップされました。これは、コンパイル時に利用できないため、scala クラスを参照する Java コードを書くことが許可されていないことを意味していました。適切な構成があれば、scalac コンパイラを使用してすべてのソースを一緒にコンパイルできるはずです。これにより、この厄介な制限が取り除かれます。上記でリンクしたSOの質問には、構成例と、私が話しているコンパイル時間の問題に関するいくつかの議論があります。プラグインの設定に関する参照がさらに必要な場合は、プラグインの Web サイト (上記にもリンクされています) で公式ドキュメントを確認してください。