さて、
Scala / Akka は、システム開発における多くの一般的な落とし穴に対して、さまざまな概念を提供します。ほんの一部を Java EE と比較するには、次のようにします。
=> JavaBeans:
Mutable Data-structures は単なる悪であり、スレッドセーフではありません。それらをコンテナに入れても何も変わりません。scala が CaseClasses で強制するので、代わりに不変のデータ構造を使用してください。
=> EJB: EJB
の構成は最悪です。実際の問題は、EJB が再利用性という点で有用であるためには、実際にはほとんど当てはまらない高度な凝集性が必要であるということです。それらを容器に詰めても、それ以上良くなることはありません. Scala では、構成に trait を使用すると、f-bounded ポリモーフィズムによって保護されたコンストラクター注入を通じて、アドホックな構成を使用できます。人生はとても簡単です。
=> トランザクション:
はい、トランザクション マネージャーは既に改善を行っていますが、それを機能させるには大きな Java EE スタックが必要です。Scala では、akka が提供する Software Transactional Memory (STM) を使用するだけで完了です。
=> 持続性:
ORM は本当に必要か? squeryl.org のようなプロジェクトは、厳密に型指定された LINQ を Scala に追加します。Hibernate が行うような重いクエリ言語マッピングの代わりに、クエリを scala に統合し、コンパイラによって完全にチェックされます。もちろん、これはリレーショナル DB にのみ当てはまります。no-sql の場合、利用可能な他のソリューションがあります。
=>スケーリング?
Java EE のクラスタリング? もっと言う必要がありますか?
akka では、サーバーをいくつか追加するだけで、システムが拡張されます。なんで?リモート アクターはローカル アクターと同じように扱われ、アクセスされるため、他のすべては分散アクター システムを構成するだけの問題です。Akka は Erlang モデルに基づいているため、フル システム負荷の下で、ファイブ ナインのアップタイムではなく、ナイン ナインのアップタイムを探します。同時に、akka は非常に簡単で軽量なので、Android でも使用できます。Android で Java EE を実行してみませんか?
https://github.com/gseitz/DiningAkkaDroids
はっきりさせておきますが、おそらく 10 年前、Java EE は大規模なエンタープライズ グレードのソフトウェアを構築する方法に関する質問に対する答えでした。Spring がそれを使用可能にすると、それはおそらく当時利用可能な最良のソリューションでした。
今日、世界は大きく変化し、古い答えのほとんどは今日の現実にはもはや適合しません。Scala は完璧ではありませんが、実際に 1 行に絞ると次のようになります。
scala では、Java EE とコンテナーのセットアップにかかる時間の何分の一かで、実際のプログラミングを完了できます。
Spring でさえ、Java EE のフレームワークとして選ばれているため、scala に移行しています。
http://blog.springsource.org/2012/12/10/introducing-spring-scala/
Akka の概念とベスト プラクティスの両方から始めるには、「Akka Essential」という便利な本があります。
http://www.akkaessentials.in/2012/12/adding-turbchargers-to-jee-apps.html