回答:
免責事項:私はAkkaのPOです
それらは私の頭の上からのものです。
一方、Akkaを使用すると、Scala、Java、Groovy、またはJRubyを使用してアプリケーションを作成できるようになります。
Erlangでは、プロセスは約1000削減ごとに切り替えられることが保証されています。Scala / Akkaエージェントのような単純なフレームワークでは、受信での作業が完了するまでスケジューラを所有します。チェックメイト。ゲームオーバー。ハスタ・ラ・ビスタ:)人々、疑似技術に時間を浪費しないでください。ここの人たちはScalaをErlangと比較しているのに驚いた。
また、他にも多くのいわゆる「キラー機能」がありますが、これは私のアドバイスです。機能の観点からは考えず、特定の言語を可能にするイディオムについて考えてください。Scalaは「最良の機能」を盗み、Erlangは正しいイディオムを使用可能/実装して、これらの正しいイディオムから駆動される高水準言語でシステムを確実に構築します。Erlangを学ぶとき、あなたは心を再構築し、分散された信頼性の高いシステムについてのあなたの考え方を学び、Erlangはあなたに教え、あなたをアップグレードします。Scalaは、他の言語から優れた機能を盗もうとするもう1つの必須の言語です(ああ、申し訳ありませんが、多パラダイムで面白い単語です)。
プロセスの分離についてはほとんど誰も言及していません。「あなたのスレッドが私のがらくたを混乱させることはできない」という保証がないと、分散システムは推論するのがはるかに困難になります。(それらはErlangのプロセスではすでに十分に困難です。)
AFAIK(これは、JVMでの直接の経験が限られていることを考えると、それほど遠くない)であり、JVMで実際にプロセスを分離できるのはErlangだけです。グーグル氏は、「マイクロ再起動」技術(「リカバリー指向コンピューティング」)を使用する研究システムに関するFoxおよびCandea(?)の研究をどこで見つけるかについてのヒントを与えることができます。Erlangの開発者はその研究を読み、いくつかのことを言います:
私にとって、ダウンタイムなしのErlangクラスタ全体でのホットコードスワップ(例make:all([netload]
:)は、Erlangキラー機能の1つです。
しかし、あなたの質問を逆転させましょう:alangにはErlangにはない何がありますか?もちろん、Javaに何十もの拡張機能とライブラリ(scala、akka、spring、osgiなど)を追加して、Erlangに近づけることができます。しかし、ポイントはどこですか?つまり、これらすべての拡張機能は、20年以上にわたってダウンタイムなしで最高のスケーラビリティを提供できることが証明されている単純なErlang言語を学ぶよりもはるかに複雑です。