いろいろと比較の仕方はあるのだろうが、なぜJSPでは駄目でPHPならOKなのか、その理由がよくわからない。WARファイルでデプロイするのではなく、ALL JSPでバリバリ組めば、JSPでもPHPと同じような感覚で開発ができるようなきがするのだが、大きな勘違いなのだろうか。実際PHPがよく使われていることを考えると勘違いなんだろうなぁ。
ちなみに、JavaとPHPではPHPの方が簡単なプログラミング言語だという話もあるが、どうやって難易度の判定をしているのか謎。基本的な予約語の数によるのか? コンパイラとインタプリタでは実行結果がすぐに確認できるインタプリタの方が楽、というのはまだ感覚的にわかるんですが。
とちょっと思った。
言語仕様とかオブジェクト指向の概念は些細な問題で、「風土」や「思想」が大きいと思うのです。風土や、風土からくるライブラリとか実行環境の設計が、言語の選択に影響を及ぼすのではないでしょうか。
Javaで今日の日付を表示するには、
out.print(new SimpleDateFormat(“yyyy/M/d”).format(new Date()));
ですが、PHPでは、
print(date(‘Y/n/j’));
です。
ここではJavaの方が記述量が多いということは関係なくて、「今日の日付を表示する」という目的を達成するためにかかるステップ数が違うというところを見てください。このように、直接、あるいは直接でなくとも短いステップで問題を解決できることをPHPは重要視しているのではないか、と思います。 そういうところで「楽」とか「簡単」とかいう評価に繋がるんじゃないでしょうかね。「お手軽」というのも近い意味だと思います。
FreeBSDで環境を構築する場合、PHPの方が明らかに「お手軽」ですけどね。;)
そうすると、キーワードは「お手軽」かな。PHPがお手軽なのか、というと、それ相当に環境が必要な気もするので疑問がでてきますが、Servlet/JSPに比べると「お手軽」な感じはありますね。言語仕様とお手軽さの相関関係があるなら、それを知りたいところ。
JavaScriptが流行ったのは、プラグインを入れなくてもWebブラウザだけでいろいろできる、というところが大きかったと思いますよ。言語仕様はあまり関係ないと思います。
Javaも十分直接解決するためのクラスはたくさん存在するような気がしますが、関数の方がわかりやすい、という話になると、結局のところオブジェクト指向の概念というのが敷居を高くしている、ということになります。でも、「オブジェクト指向の概念」が原因だとすると、JavaScriptとかが一時期はやったのが説明できないような気もします。
そっちではなくて、「直接解決するための関数がたくさん存在」するところがポイントです。
標準化されていなくて整理されていないことが、JSPよりPHPを採用する理由にはならないような気がします。このあたりが謎なんですね。新しいアイデアを受け入れやすい風土がPHP開発グループにはあるのがいいということなのかもしれませんが…
個人的にはJavaの文法がどうだ、というよりもJSPの実装にあたってはServletが裏で動いているということが周知されているのが問題なのかもしれないと思います。Java, Servlet, JSPを知らないとプログラムが組めないとなると覚えることが多そうだと思ってしまうかもしれません。たぶん、本当はそんなことはなくて、JSPだけでも結構なことができるはずなのですが、ServletやEJBを裏でがんがん動かした方が楽だから、そっちのノウハウの方がたまっていて、世の中に流通した結果、敷居を高くしているのかもしれません。
JavaとPHPを例えるなら、CとBASICのような感じです。開発スタイルがぜんぜん違います。もっと極端に例えれば、Linux/BSDとWindowsと言えるかもしれません。文法的な違いというよりは、風土や思想の違いといったほうが近いように思います。
Javaは、あるていど厳密に標準化された文法とライブラリを持ち、それを組み合わせて新たな機能を付け加えていきます。PHPは問題を直接解決するための関数がたくさん存在しますが、あまり整理されていませんし標準化なんて知りません。
Linux/BSDでGNOMEやKDEを使えば、Windowsとほぼ同じ操作環境が実現されそうな感じもしますが、それでも根底に流れる思想の違いというものは如何ともしがたく、慣れないと違和感を覚えるでしょう。そういうことじゃないですかね。