Write once, run anywhere
Write once, run anywhere(WORA、「一度〔プログラムを〕書けば、どこでも実行できる」[要出典])または Write once, run everywhere (WORE) とは、Javaのプログラムがオペレーティングシステム (OS) などのプラットフォームに依存しないという意味の、サン・マイクロシステムズのJavaのスローガンである。
概要
[編集]Javaで記述されたソフトウェアは多くのシステムの上で開発・コンパイルでき、同一のバイトコードを得ることができる。そのバイトコードはJava仮想マシン(JVM)を持つ全てのシステムで動作する。Microsoft Windows、Mac OS、Linux、Solaris、FreeBSD、AIX、NetWare、HP-UX、OS/2などで動く。
JVMはチップやデバイスにも組み込まれている。これは、パーソナルコンピュータ (PC) で開発したコードが何らの調整なしに、Java実行環境を持つ携帯電話やルータやメインフレームで動くということである。そこで「一度書いてしまえば、どこでも走る」のである。プラットフォームやオペレーティングシステム (OS) 毎に違う版のプログラムを書く必要がなくなり、また、Javaが提供する抽象化されたレイヤの方が便利であるため、開発者の負担が減る。
批判
[編集]しかし、WORAは完全なレベルまで実現されたわけではなく、現実には、移植の手間が大きく減ったというレベルにとどまっていた。
Java開発者は次のようなジョークを飛ばすことがあった[誰?]: 「<一度書いてしまえば、どこでも実行できる>というのは、実際には<一度書いてしまっても、そこら中でデバッグしなければいけない (Write once, debug everywhere) >という意味なのさ」[要出典]
これは初期のJavaでは例えばファイルのパーミッション取得など不足している機能が多くネイティブライブラリの呼び出しが必要になることが多かったためである。また当初はデスクトップアプリケーションでの利用が多く、OSのGUIがもつ機能を十分に利用できていなかった。
しかし、Java 7でjava.nio.Filesによってファイルの細かな操作が可能になるなど機能が充実し、また利用が主にサーバサイドになってきたことから、問題になることは少なくなっている。