InfoQ

News

Erlangは並列処理時代の新たなJavaとなるのか?

作者 Niclas Nilsson , 翻訳者 編集部 投稿日 2007年8月24日 午前12時45分

コミュニティ
Java,
Architecture
トピック
プログラミング
タグ
Concurrency,
Parallel Programming

コンピューティングの未来は並列処理の時代となるだろう。 今日デスクトップCPUでさえもマルチコアであり、またユーザー達はサーバ用のCPUを次々と購入している時代でありまた彼らの新たな財産を最大限に利用するためアプリケーションが効率よくスケールアウトすることをが期待されているのだ。しかしそれは現在のソフトウェアシステムでは実現しないのだ。 

その問題自体が難しいことなのだが、同言語内の他の抽象性に比べると通常プログラミングに使用されている言語の並列性メカニズムが低いことに関してはなんの助けにもならない。

Ralph Johnson氏はErlang次世代のJavaに成りえることに関してブログを記載している。 Erlangは基本的にインタープロセスコミュニケーションにおいて異なる考え方をするものでありまたRalphはErlangスタイルの並列性は容易に他の言語に追加することができることができても競合の問題が発生する。

近い将来他の言語がErlangに追いつくことはないだろう。 Erlangのような言語機能を追加するのは簡単なことなのだ。 そのような高品質のVMや並列性、信頼性のための熟練したライブラリを構築するのには大変な時間を要するのだ。だからしてErlangには成功する道しか残されていないのだ。 この先数年間でマルチコアアプリケーションを作りたければErlangに目を向けるべきである。

そして他のフリーの機能がもっとあるかもしれない。 Erlangの開発者であるJoe Armstrongはスケーラビリティ、誤作動許容性、そしてランタイムアップグレーダブルシステムへの挑戦は同じ解決策を有していると述べている。  彼はこれらの問題が異なる種のものであっても :

”誤作動許容は簡単にスケーラブルにすることができるし簡単に作られているのでサービス内でアップグレードすることができるのだ。”と述べている。

Armstrong氏は誤作動発見とステーブルストレッジ用の機能をElrangが所有していることを認めている。Erlangはテレコムシステムによって作られたものであるのでこれらの見解は全て重要になってくるのだ。そしてEricssonは99.9999999%のアップタイムでErlangを開発したのだ。 それは1年で31msのダウンタイムという計算になる。

The Erlangはシェアードステートを所有していることによってではなく、主要な言語とはことなる並列性を引き受けている。  プロセスはとても軽量なものでもしも一つのプロセスが他のプロセスとコミュニケートするとすればメッセージングによってそれは行われる。 このアーキテクチャはプロセス、またはスレッド間でシェアードメモリを使用しているシステムと異なる方法でシステムをスケールアウト、また配布することを可能にしている。並列性に関するこの考え方に関してもっと深く掘り下げるにはSlava Akhmechet氏著の入門書を読むと良いだろう。(ただしErlangに関する知識は必要となる。)

もしかすると他の方法で並列性問題にとりかかる時期なのかもしれない。もしかすると新しい言語を学ぶ時期でさえあるのかもしれない。

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
slashdot+
Hatena

特集コンテンツ一覧

Flex 4の新機能トップ10

今週(2009年6月1日)AdobeはFlex 4の正式な初ベータ版をリリースしました。Flex 4はGumbo(オクラ)というコードネームで開発されています。今回のリリースには大きな変更が多数含まれています。このRIAフレームワークの最新バージョンにおいて変更された事柄についての概要を以下のリストで見ていきましょう。

Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

ビジネス領域の深い理解を反映したドメインモデルを設計するための、ヴィジョンとアプローチです。この本は、Eric Evans氏の「Domain Driven Design」の主要点を短く読みやすく要約しました。

JavaプログラマがFlexとBlazeDSを学んだ方がいい13の理由

この記事ではJavaプログラマがなぜFlexとBlazeDSを学ぶべきなのかについて13の理由を述べています。なぜ高度にインタラクティブなWeb サイトからJavaで開発されたバックエンドをもつエンタープライズ・アプリケーションまでを含む、リッチ・インターネット・アプリケーション(RIA)の開発にFlexとBlazeDSの組み合わせが最適な選択肢となるのかについて述べています。

仮想パネル: バックログは重要な成果物とプラクティスか、それとも無駄か?

Mary Poppendieck氏、Ron Jeffries氏、Jeff Patton氏、David West氏、Steve Freeman氏、Jason Yip氏が、バックログに関する彼らの意見とアジャイルチームを成功させるために必要な事を語った。

Perf4Jを使ったパフォーマンス解析とモニタリング

この記事ではAlex Devine氏が、Java開発者がPerf4Jをどのように利用できるかと、タイミングステートメントにコードを追加し、ロギング、結果の解析とモニタリングを行うオープンソースツールセットの説明をします。

複雑な外部DSLを開発する

本稿では、Vaughn Vernon氏が内部DSLと外部DSLの違いを説明し、複雑な外部DSLを開発する際のステップを示します。

J2EEアプリケーションにおけるAOPを使ったフェッチ戦略の実装

この記事では低レベルのサービス・レイヤやリポジトリ・レイヤを肥大化させることなく、フェッチング・ストラテジによってモジュール化された方法でバックエンドにあるシステムからデータを取得する処理を最適化する方法について説明します。

実証済みのアイデアの融合: S#arp Architectureの裏側

この記事では、Web開発における多数の成熟傾向と、クライアントに価値を提供することに対するそれらのメリット、およびS#arp Architecture(最善の手法と技術を活用しようとするASP.NET MVCをベースとしたフレームワーク)内でのそれらの使用について取り上げます。