PHPがJSPより優れている点って何ですか。
■ このスレッドは過去ログ倉庫に格納されています
0001たけ
03/12/04 00:49ID:7VVPvP8aちょっと見たところ、そんなにJSPより利点があるようにも
見えないんだけど、誰か指摘して頂戴。
まあ、Perlよりは楽だろうけど。
0651nobodyさん
05/02/10 23:58:18ID:???0652nobodyさん
05/02/11 00:06:04ID:???0653nobodyさん
05/02/11 01:15:40ID:???0655nobodyさん
05/02/11 17:21:51ID:???List list = new ArrayList();
for(;;) {
list.add(new Object());
}
というコードを実行してやれば、
全てのアプリケーションがOutOfMemotyError吐いて再起不能になるよ。
PHPの場合はこういうあほな事をするプロセスは時間がたてば
殺されるので、一時的に鯖の性能が低下しても再起不能になることはない。
JavaとPHPの問題というよりは、
マルチスレッドとマルチプロセスの特性の問題。
0656nobodyさん
05/02/11 17:35:38ID:???ちょっと複雑なサーブレットを作ると、ひどいことになる。
リクエストを処理する際の作業用のデータを、
クラス変数(PHPで言えばグローバル変数)に保持してたりする。
PHPではグローバル変数といっても意図しない限りはリクエストごとに隔てられてるから
害はないんだけど、Javaの場合は複数のリクエストがメモリ空間を共有するから
危険なことになる。
この手の問題は、高負荷をかけてテストしないと表ざたにならないので、
実際はかなりのJavaアプリケーションが危険なまま放置されてそうな気がする。
サーブレットコンテナベンダーは、そんな危険性があることなんて
口が裂けても言わないけどな。
でも、当のSunはいずれ問題になると気づいていたから、
J2SE5でマルチプロセス対応したわけだ。
0657nobodyさん
05/02/11 18:31:43ID:???マルチスレッドとマルチプロセスの特性なんか関係ないと思うが。
タイムアウトがあるかないかだろ。
ところで
<?
ignore_user_abort(true);
for(;;){
$a[] = "aaa";
}
?>
というコードも、時間がたてば殺されるわけ?
0658nobodyさん
05/02/11 18:53:26ID:???PHPの場合は確実に殺されるよ。
マルチスレッドとマルチプロセスの特性は大いに関係ある。
第一、Javaのスレッドはタイムアウトがあったとしても、
無限ループに陥ったコードを確実に停止させる手段がない。
嘘だと思うならSunのjava.lang.Thread辺りのドキュメントを読んでみればいい。
それにひきかえ、PHPのプロセスは無限ループに陥っても確実に停止できる。
メモリ空間、ストリームなど各種リソースを綺麗さっぱりクリアできるからね。
Javaのスレッドは他のスレッドとリソースを共有するので、そうはいかない。
だから素人にJavaを使いこなすのは難しいわけよ。
0660nobodyさん
05/02/11 19:10:27ID:???> だから素人にJavaを使いこなすのは難しいわけよ。
PHPだって素人が「使いこなす」のは難しいね。
うまく動いてないコードが他に影響を及ぼすというのは、Javaの守備範囲のアプリケーションの場合そもそも問題外だ。
うまく動きながら他に影響を及ぼす場合は、PHPでは動くコード書くのにコツが必要だったりするし。
0661nobodyさん
05/02/11 19:16:24ID:???ローカルでテストしてからアップするもんだ。
昔は独自CGIなんかでも、鯖屋が確認してからアップさせる所が多かった。
0662nobodyさん
05/02/11 19:45:17ID:???釣りだと思うけど、php.iniでタイムアウトの時間を長く設定するか、
タイムアウトしないようにすればよいだけの話。
>>660
PHPなら馬鹿がプログラムを書いても、
プログラムがまともに動かない程度の問題で済むけど、
Javaの場合はいとも簡単に鯖が吹っ飛ぶ。
ダメな奴は何をやってもダメなのは当たり前で、
これは共有鯖でのセキュリティの問題の話ね。
PHPは元々Web専用に開発された言語なので、
そういう点でJavaより優れているのは当たり前の話。
JavaはむしろWeb以外の面が強いよ。
データベースエンジンやメールサーバーも
100%Javaでカバーできる。
なおかつ、ユーザーがデータベースエンジンや
メールサーバーの機能を拡張することもできる。
全体を再コンパイルすることなしにね。
何か機能を追加する度に再コンパイルのPHPでは、
こういう芸当はできないでしょ。
Web専門のドカタプログラマには無縁かもしれないけど。
0663nobodyさん
05/02/11 19:53:32ID:???じゃあ落ちるだろ。
0664nobodyさん
05/02/11 19:58:30ID:???まず、ウェブアプリケーションでタイムアウトしないように
設定するわけがないよね?
永久にユーザーがレスポンスを待つことなんてあり得ないから。
タイムアウトしないように設定するとすれば
PHPのコマンドラインアプリケーションなので、
実行した人がおかしいと思えばkillコマンドで止めればよいだけの話。
Javaだってそうでしょ。
0665nobodyさん
05/02/11 20:03:52ID:???タイムアウトを設定しなければ、
JavaでもPHPでも止まらない。
PHPの場合はタイムアウトを設定すれば
タイムアウトする保証があるけど、
Javaの場合は確実にタイムアウトする保証がない。
分かった?
0666nobodyさん
05/02/11 20:06:48ID:???0668nobodyさん
05/02/11 20:18:16ID:???あとマルチタスクに対応しても、それぞれのプロセスが異なるユーザー権限で動かないと、
他のユーザーのファイルを自由に改ざんできたりする問題をクリアできないと思うんだけど、
この辺の問題は解決されるのだろうか。
0670nobodyさん
05/02/11 20:56:06ID:???うん、スレッド=タスクのつもりで話をしてた。
プロセスとかスレッドとかタスクという用語は
OSによって微妙に意味が変わるので、
ここではあくまでJavaVMでの話のことね。
BeOSなんかじゃスレッド=タスクだったりするけど、
そういうマイナーなOSの話は置いといて。
スレッドはjava.lang.Threadに対応する処理の流れのこと、
プロセスは、少なくともJ2SE1.4の時点ではJavaVM自体のこと。
多分J2SE1.6では1つのJavaVMの中に仮想的に複数のJavaVMを起動することで
マルチプロセスを実現するという話だった気がする。
0671nobodyさん
05/02/11 20:58:26ID:???0672nobodyさん
05/02/11 21:01:42ID:???> JavaはむしろWeb以外の面が強いよ。
共有で信頼できない素人と同じ環境で動かすんじゃなければ、WebでもJavaの方が強いよ。
0673nobodyさん
05/02/11 21:03:32ID:???> 釣りだと思うけど、php.iniでタイムアウトの時間を長く設定するか、
> タイムアウトしないようにすればよいだけの話。
ということは、長い処理を行うことができるサーバーで素人が一緒に動したら怖いってことね。
0676nobodyさん
05/02/11 21:15:34ID:???鯖缶にいちいちコンパイルを依頼しなくても、
ユーザーのlibディレクトリにjarを放り込めば
新しい機能が自由に使えるというのはあるな。
0677nobodyさん
05/02/11 21:16:43ID:???もともとPersonalHomepageProcesserだからな。
0678nobodyさん
05/02/11 21:19:16ID:???0679nobodyさん
05/02/11 21:22:08ID:???0680nobodyさん
05/02/11 23:15:45ID:???0681nobodyさん
05/02/11 23:16:29ID:???PHPと『JSP』のスレだろ?
0682nobodyさん
05/02/11 23:47:23ID:???コンパイラ方式なのに、JavaBeansだとかELだとか
リフレクションを使いまくるので、コンパイラの意味がない。
いっそのことPHPみたいにインタプリタ方式にしてしまえと思う。
JSPなんぞ使わずにVelocityやXSLTを使え。
JSPはそのうち死滅する。今度はきっとSunがインタプリタ方式のサーバページ言語を開発し始めるぞ。
Groovyはその布石のような予感がする。
0686nobodyさん
05/02/12 14:59:21ID:vfMKYaEZJavaのサーブレットコンテナを使ってPHPを実行。
これ最強。
0687nobodyさん
05/02/12 15:02:59ID:???朝日新聞が、NHKは政治家の圧力で番組を改編したと印象づけたいのと同じなのかな。
0691nobodyさん
05/02/12 17:22:18ID:???Javaに関する不利な事実がちょっとばかり挙げられてるからといって
「JAVAを危険な言語と印象づけたい」
と感じるのはどうかと思う。
0692nobodyさん
05/02/12 17:30:04ID:???ということは、JavaのBug ParadeにはJavaのバグがたくさん書いてあるから、あのページはJavaはバグが多い言語だと印象付けたいページということになるのか。
0693nobodyさん
05/02/12 18:12:49ID:un5gX8lb正直打つのがめんどくさい。
Javaの設計規約で、将来的に必要になるメソッドは最祖先のインターフェースで
予約しておかなければならない、また、完全に将来を予測可能になるまで設計を始めてはいけない
というのがあるが、正直無理。
0697nobodyさん
05/02/12 21:21:23ID:???どこかにはあるんだろうね。
プロダクト名にはアイドルの名前を付けることっていう規則もあるよ。
この前はayakaって名前になりそうになったけど、平原綾香はアイドルといえるかどうかでもめた。
0698nobodyさん
05/02/13 08:09:19ID:???実際問題として、共有サーバでやってる鯖屋が世界中に沢山あるんだから、
セキュリティ的に問題があると言うのは、批判しても仕方がない事だろう。
そこで意図的に落とされて困ったとか、そういうニュースも聞こえてこないわけだし。
0699nobodyさん
05/02/13 10:33:46ID:???Javaの仕様として分かりきっていることだから、
いちいちニュースにしないんじゃないの。
でも、雑誌の記事なんか見てると、
JSPがマルチスレッドだということを理解していないプログラマのせいで
危険なシステムが出来てしまったというような話はちょくちょく見かけるよ。
こういう記事とか。
http://www.atmarkit.co.jp/fjava/rensai2/webopt04/webopt04.html
それに、そういう批判をしても仕方ない、というのは間違い。
ユーザーからの批判が強ければ、もっと早くマルチプロセス対応してたんじゃないの?
個人的には言語の拡張なんかより、そっちを優先して欲しかった。
0700nobodyさん
05/02/13 11:02:36ID:???そういう事じゃないと思うが
だからよく解ってない厨と言われるんじゃないのか?
安全に動かせる方法もあるのに、危険な方法だけを取り上げてるのがいけないんだろ。
0702nobodyさん
05/02/13 11:21:19ID:???>>701
J2SE5でさえ>>699の記事のことは当てはまるけど。
本当に記事の内容を理解してる?
マルチスレッドで衝突の危険を考えないといけないのは
クラス変数とオブジェクト変数とローカル変数のうちどれだか答えられる?
パフォーマンスを犠牲にしてサーブレットのオブジェクト変数の衝突を回避
するには、どんな設定をすればいいか知ってる?
他人を厨呼ばわりして、よく分かってるつもりなら答えて見せてよ。
0703nobodyさん
05/02/13 11:24:52ID:???0704nobodyさん
05/02/13 11:27:03ID:???お前ら、こんな危険な事も知らないのか?
俺みたいなプロは、こんな危険な事も回避しててコーディングしてるのに、
と言い回りたい時期なんだな
もっと簡単に解決しろよ
0705nobodyさん
05/02/13 11:28:16ID:???知ってるのなら、書けばいいのに。
質問形式にして、自分は答えないという、朝日新聞みたいな手段をつかって
誤魔化そうとしても、そうはいかないって(w
0706nobodyさん
05/02/13 11:30:47ID:???このスレで必死にJavaは安全だと言っている奴のレベルが分かるな。
0707700
05/02/13 11:33:07ID:???>クラス変数とオブジェクト変数とローカル変数のうちどれだか答えられる?
>パフォーマンスを犠牲にしてサーブレットのオブジェクト変数の衝突を回避
>するには、どんな設定をすればいいか知ってる?
安全な共有サーバと関係ない質問ですが、答えないといけないでしょうか?
0708702
05/02/13 11:33:30ID:???マルチスレッドで衝突の危険を考えないといけないのは
クラス変数とオブジェクト変数
サーブレットのオブジェクト変数の衝突を回避するには、
デフォルトでスレッドセーフモードになっている設定をoffにして
毎回サーブレットのインスタンスを生成するようにする
0710702
05/02/13 11:36:58ID:???[パフォーマンスを犠牲にしてサーブレットのオブジェクト変数の衝突を回避
するには」
と書いてあるからパフォーマンスを犠牲にしてもいいよ。
してはいけないとは書いてないよ。
0711nobodyさん
05/02/13 11:37:35ID:???そういう話になってしまうな。
0712nobodyさん
05/02/13 11:39:17ID:???答えられなかったでしょ。
この程度のレベルなんだから、問題意識を持てないんでしょ。
0713nobodyさん
05/02/13 11:39:23ID:/Ff3uRQI私はPHPしか出来ないのであんまり詳しくないのですが、
具体的にその制限って、共有サーバでのセキュリティにはどう影響するのですか?
煽り合いばかりではさっぱりなので、具体的に説明してください。
0715nobodyさん
05/02/13 11:43:18ID:???Javaがマルチスレッドであるということを強調したかっただけで
変数の衝突が直接共有鯖で問題になることがない。
それより、リソースやロックが共有されることで起こる
切実な問題が>>658
0716nobodyさん
05/02/13 11:44:29ID:???だからアカヒのように問題をすり替えてると煽られるんだって…
荒れる原因だけバラ撒いて荒らしておいて、勝ち誇らないで貰えるか…
0718nobodyさん
05/02/13 11:50:43ID:???お前が自意識過剰だから理解されないのだとしか言えないわけだが。
0719nobodyさん
05/02/13 11:53:05ID:???理解できないし答えられないんでしょ。
701 :nobodyさん :05/02/13 11:03:49 ID:???
ちなみに>>699の記事って、2年半前のものですから。
CGIだって出始めの頃は、危険すぎて自作が禁止の鯖だって多かったのに。
こんな発言をするくらいだから。
0720nobodyさん
05/02/13 11:53:06ID:???JAVA厨>>658の言いたいことは結局こうだ
>だから素人にJavaを使いこなすのは難しいわけよ。
仲間のはずのJAVA使いからも余計な事言うなと諭されてりゃ世話無いよ(w
0721nobodyさん
05/02/13 11:55:22ID:???理論がどうでもいいじゃなくて、分かってないんでしょ。
早くマルチプロセスにしてしまえば
PHPみたいに素人でも扱いやすいものになるという
趣旨で言ってるのに。
0722nobodyさん
05/02/13 11:56:19ID:???反論してみろ。
お前らのような奴がJavaを使ってるからいけないんだよ。
理解してないのに気軽に書き込むな。
0723nobodyさん
05/02/13 11:58:11ID:???Javaの共有サーバが世の中にはあって、
商品として問題なく動いてるのかという事なのですが。
0724nobodyさん
05/02/13 12:00:01ID:???0725702
05/02/13 12:01:40ID:???セキュリティ問題出まくりのWindowsが世の中にはあって、
商品として問題なく動いているのと同じ理由。
意図的にサーバーを落とそうという悪い人ばかりじゃないからね。
世の中は。
0726nobodyさん
05/02/13 12:08:21ID:???なんて特にJavaだけ危険という話になるのかが解らん
0727nobodyさん
05/02/13 12:10:47ID:???ことにしないと、仕事にならない感じの人なんじゃないか?
危険なコードの書き方をすれば危険なのは、どの言語だって同じだし、
>>702の事なんて、CやDelphiでだって考慮しなきゃならん事だし。
0728702
05/02/13 12:11:25ID:???Javaの場合は無限ループという、
ありがちな状況でいとも簡単に落ちてくれるから
対処すればできるのに、Sunがなかなかやってくれないから
0729nobodyさん
05/02/13 12:13:11ID:???CGIならあんまり気にしなくていでしょ。
リクエストが終わればプロセスが死ぬから。
JavaだとCGIが実用にならないもんでね。
0730nobodyさん
05/02/13 12:14:05ID:???CGIなら原則としてメモリ空間を共有しないからな。
0731nobodyさん
05/02/13 17:22:59ID:???0732702
05/02/13 18:22:00ID:???ケケケ
0733nobodyさん
05/02/13 20:22:09ID:???4.3.9以前・5.0.2以前には深刻なセキュリティーホールがあるけど、そういうバージョンが使われている鯖は多い。
PHPの場合、セキュリティーパッチのつもりでも何かの挙動が変わって古いアプリが動かなくなる実績がたくさんあるから、おいそれとアップデートできないしね。
0734nobodyさん
05/02/13 20:23:14ID:???なんか悲しいな
0735nobodyさん
05/02/13 20:33:39ID:???商用共有サーバーにもかかわらずね。
RPMとかOSバンドルのものはまず間違いなくセキュリティーホールあるものだし。
バッファーオーバーランだから、任意のコードが実行できるしね。
0736nobodyさん
05/02/13 20:59:47ID:???むかし、そういう事で鯖屋に問い合わせた事があるけど、
不用意にバージョンあげると、客がインストールしてるアプリケーションの
動作確認をすべてやるのは不可能だから、上げられないと言われた事があったな…
確かmbstringの時。
0738nobodyさん
05/02/13 21:35:55ID:???少なくともセキュリティーアップデートの場合は、関係ない動作に変更はない。
PHPはこっそりいろいろごちゃごちゃ仕様が変わるからね。
セキュリティーアップデートができないことこそ、最大のセキュリティーホールだな。
0740nobodyさん
05/02/13 21:43:26ID:???気にするな。
0741nobodyさん
05/02/14 05:32:36ID:???0742nobodyさん
05/02/16 02:43:30ID:???カスタムタグ自由自在
0743nobodyさん
05/02/20 04:36:57ID:???Javaのが簡単で良いや
0744nobodyさん
05/02/20 07:26:20ID:???0745nobodyさん
05/02/21 05:41:36ID:???なんかJavaで開発してる時ってオナニーな気がしてならないんだよね…
0746nobodyさん
05/02/21 15:28:36ID:???0747nobodyさん
05/02/21 16:32:36ID:???0748nobodyさん
05/02/21 17:20:54ID:???0749nobodyさん
05/02/21 20:40:05ID:8BJBjbNJあるだろ。
0751nobodyさん
05/02/21 21:12:35ID:???物を造って世の中の役にたとうなんて発想じゃダメだよ(w
■ このスレッドは過去ログ倉庫に格納されています