「Phalanger」の版間の差分
imported>Administrator |
|||
2行目: | 2行目: | ||
また、PhalangerにはVisual Studio Shellをベースとした無償のPHP統合開発環境(IDE)も含まれる。 | また、PhalangerにはVisual Studio Shellをベースとした無償のPHP統合開発環境(IDE)も含まれる。 | ||
− | + | == CLR版とDLR版 == | |
− | + | Phalangerプロジェクトでは、[[PHP]]の[[ソースコード]]を事前に[[コンパイル]]を行う[[共通言語ランタイム]]([[CLR]])向けコンパイラと、実行時にコンパイルを行う[[動的言語ランタイム ]]([[DLR]])向けコンパイラの両方を提供している。 | |
− | [[CLR]] | ||
− | |||
− | |||
− | |||
− | + | CLR版は[[C Sharp|C#]]などと同様に事前にコンパイルし、実行ファイルなどを生成する方式となっている。 | |
+ | Phalangerは、[[PHP''で書かれたアプリケーションのセキュリティ向上とパフォーマンス向上、および完全な64bit対応を主目的として開発が進められており、CLR版はPHP向けソースコード品質検証ツールとしての意味合いも強い。また、[[CLR]]版を用いてPHPソースコードをCILバイトコードに変換しておけば、プロプライエタリなアプリケーション向けの簡易的なソースコード難読化ソフトとしても使える。 | ||
− | + | DLR版は純正[[PHP]]と同様の使い勝手を実現したものであり、使い勝手は[[インタプリタ]]に近く、クラスや関数の初回利用時に動的に逐次コンパイルが行われ実行される。なお、コンパイル結果物はキャッシュされ、クラスや関数を再度使用する際にはコンパイルは行われずにキャッシュを用いるため、多くの場面において非常に高速に動作する。 | |
− | + | なお、Phalangerプロジェクトでは、PHPアプリケーションのセキュリティ向上のためにも、Webアプリケーションの開発中はDLR版で手軽に、本番運用前にはCLR版で事前に完全にコンパイルが通り、警告なども完全に出ない状態にするのが望ましいとしている。 | |
− | |||
== 互換性 == | == 互換性 == | ||
− | + | Phalangerは多くの[[PHP]]アプリケーションを無改造で動かすことができる。 | |
− | |||
公式サイトでは動作例として、WordPressやMediaWiki、phpMyAdmin、phpBBなどが紹介されている。 | 公式サイトでは動作例として、WordPressやMediaWiki、phpMyAdmin、phpBBなどが紹介されている。 | ||
− | == | + | == パフォーマンス == |
− | + | Phalangerは純正の[[PHP]]よりも多くの場面で高速に動作する。 | |
− | + | Phalangerはパフォーマンスに重点をおいて開発されており、[[.NET Framework]](.NET仮想マシン)を用いる最大の理由も、コンパイル時にプラットフォーム非依存の最適化、実行時にプラットフォーム依存の最適化を行うなど、あらゆる時点でPHPプログラムを極限まで最適化するためである。汎用のコンパイラ・フレームワークとしての利用が第一目的であり、.NET Frameworkを用いる多くの言語で大きな特徴として取り上げられることの多い「異なるプログラミング言語間での連携」は二の次のような扱いとなっている。 | |
− | + | == 歴史 == | |
+ | Phalangerはチェコ共和国のプラハ・カレル大学で始まった[[オープンソース]]・プロジェクトである。 | ||
− | + | 2008年に開催された[[Google Summer of Code]]において、[[Mono]]開発チームが[[Silverlight]]互換を目指す[[Moonlight]]プロジェクトのデモンストレーションのひとつとして「Silverlightの中で動くPHP」を発表し、Phalangerは一躍注目されることとなった。 | |
− | + | 2009年にはPhalanger開発チームを中心に[[Devsense]]社が設立され商用サポート業務も行われている。また[[Facebook]]上に開設された公式グループ(掲示板のようなもの)では活発な議論が繰り広げられている<ref>https://www.facebook.com/groups/295568806304/</ref>。 | |
− | |||
− | + | * 2012年03月24日 - Phalanger 3.0 R3 公開 | |
+ | ** http://phalanger.codeplex.com/releases/view/84572#DownloadId=356231 | ||
== インストール == | == インストール == | ||
42行目: | 38行目: | ||
* [[IronPython]] | * [[IronPython]] | ||
* [[IronRuby]] | * [[IronRuby]] | ||
− | + | == 参考文献 == | |
+ | <references/> | ||
== 外部リンク == | == 外部リンク == | ||
* [http://www.php-compiler.net/ Phalanger公式サイト] | * [http://www.php-compiler.net/ Phalanger公式サイト] |
2012年3月30日 (金) 15:26時点における版
Phalangerとは、PHPのソースコードをMonoおよび.NET Framework向けのコンパイラである。 また、PhalangerにはVisual Studio Shellをベースとした無償のPHP統合開発環境(IDE)も含まれる。
CLR版とDLR版
Phalangerプロジェクトでは、PHPのソースコードを事前にコンパイルを行う共通言語ランタイム(CLR)向けコンパイラと、実行時にコンパイルを行う動的言語ランタイム (DLR)向けコンパイラの両方を提供している。
CLR版はC#などと同様に事前にコンパイルし、実行ファイルなどを生成する方式となっている。 Phalangerは、[[PHPで書かれたアプリケーションのセキュリティ向上とパフォーマンス向上、および完全な64bit対応を主目的として開発が進められており、CLR版はPHP向けソースコード品質検証ツールとしての意味合いも強い。また、CLR版を用いてPHPソースコードをCILバイトコードに変換しておけば、プロプライエタリなアプリケーション向けの簡易的なソースコード難読化ソフトとしても使える。
DLR版は純正PHPと同様の使い勝手を実現したものであり、使い勝手はインタプリタに近く、クラスや関数の初回利用時に動的に逐次コンパイルが行われ実行される。なお、コンパイル結果物はキャッシュされ、クラスや関数を再度使用する際にはコンパイルは行われずにキャッシュを用いるため、多くの場面において非常に高速に動作する。
なお、Phalangerプロジェクトでは、PHPアプリケーションのセキュリティ向上のためにも、Webアプリケーションの開発中はDLR版で手軽に、本番運用前にはCLR版で事前に完全にコンパイルが通り、警告なども完全に出ない状態にするのが望ましいとしている。
互換性
Phalangerは多くのPHPアプリケーションを無改造で動かすことができる。 公式サイトでは動作例として、WordPressやMediaWiki、phpMyAdmin、phpBBなどが紹介されている。
パフォーマンス
Phalangerは純正のPHPよりも多くの場面で高速に動作する。
Phalangerはパフォーマンスに重点をおいて開発されており、.NET Framework(.NET仮想マシン)を用いる最大の理由も、コンパイル時にプラットフォーム非依存の最適化、実行時にプラットフォーム依存の最適化を行うなど、あらゆる時点でPHPプログラムを極限まで最適化するためである。汎用のコンパイラ・フレームワークとしての利用が第一目的であり、.NET Frameworkを用いる多くの言語で大きな特徴として取り上げられることの多い「異なるプログラミング言語間での連携」は二の次のような扱いとなっている。
歴史
Phalangerはチェコ共和国のプラハ・カレル大学で始まったオープンソース・プロジェクトである。
2008年に開催されたGoogle Summer of Codeにおいて、Mono開発チームがSilverlight互換を目指すMoonlightプロジェクトのデモンストレーションのひとつとして「Silverlightの中で動くPHP」を発表し、Phalangerは一躍注目されることとなった。
2009年にはPhalanger開発チームを中心にDevsense社が設立され商用サポート業務も行われている。またFacebook上に開設された公式グループ(掲示板のようなもの)では活発な議論が繰り広げられている[1]。
- 2012年03月24日 - Phalanger 3.0 R3 公開
インストール
関連項目
- F# - F#の中の人が興味を示しPhalangerプロジェクトに参加している。
- IronPython
- IronRuby