Web Server Gateway Interface(WSGI,Rack,PSGI)

Java屋さんが、他言語でのWebアプリケーション開発する際に押さえておくと良い仕様をメモ。
多くのWebアプリケーションフレームワークが存在して、使用可能なWebサーバを制限したりその逆があるのは
よろしくないのでWebサーバとフレームワーク間で統一されたインターフェース仕様が必要となります。
まさに Web Server Gateway Interface です。


Python WSGI

WSGI(Web Server Gateway Interface)は、Python向けの統一されたインターフェース仕様

WSGI supported web frameworks

Django, Pylons, TurboGears, CherryPy, web.py, web2.py, Zope3, ...

Ruby Rack

Ruby版のWSGI

Rack supported web frameworks

Mack, Maveric, Merb, Ruby on Rails, Waves, ...

Rack supported web servers

Mongrel, WEBrick, FCGI, Thin, ...

PHP

前にPHPWSGIのような仕様は無いのかね?って話しをmopemopeとしたけど
PHPにはスーパーグローバル変数があるよねって話しで終わった。
WSGI = $_XXXX


Java Servlet

Javaの場合は、Servlet仕様があるのでアプリケーションサーバを変えても通常プログラムを変更するが無いので
Web Server Gateway Interfaceのようなものを意識することは、ほとんど無いですね。
Servlet2.4(JSR-154 Final), Servlet2.5(JSR-154 Maintenance), Servlet3.0(JSR-315)

Java OSGi

WSGIでは無いが、JavaOSGiについて。
OSGiOSGi Alliance 従来はOpen Services Gateway initiative)は、Webに限定された仕様では無く動的なcomponent modelを実装。
最初は、Service Gateway仕様だったものが、今は適用範囲が拡大している。

まとめ

Javaプログラマな人は、ざっくりな理解をするならWSGIServlet仕様のようなものという理解をしておけば良いです。
しっかり理解したい人は、実際に多言語で複数フレームワークやWebサーバでサンプルを作成すると良いと思います。