by
Anonymous Coward
on 2015年12月30日 17時36分
(#2942541)
> Windows環境のPHPや、Linux環境でのC#が商用利用に問題ないかっていうと、問題ないとは言い難い。 Windows環境のPHPもLinux環境のC#も商用利用OKだしMSが公式にサポートしてるじゃん LinuxでのC#はまだ日が浅いからパフォーマンスはネイティブの8割ぐらいだけど普通に動くし、 PHPに至ってはMSがIIS設定までしてくれるインストーラ付きで速度もNginx on Linux + PHP(FastCGI)と同程度には出る。
ローカルJREまで手を出せるのか (スコア:1)
Javaは滅びてほしい (スコア:0)
いくつかのアプライアンスを使っていると、それぞれの管理ツールがJavaで作られていることが多い。
そして、それぞれが違う古いバージョンのJREでしか動かない。
その影響でアップデートできない専用の管理端末が増えていく。
元凶はJava。
なぜJavaで管理ソフトを作ろうと思うんだろう?
Javaで作るなら、Javaがアップデートされるたびに管理ソフトもアップデートしろよって思う。
互換性維持の難しさよ (スコア:1)
Javaほど言語仕様の定義の厳密さ・実装の準拠性に力を注いだ言語は他にないくらいなんだが、なんでこうなってしまったのか。
Javaの教訓を生かしたのか、.NET Frameworkはメジャーバージョンごとにライタイムが別々にインストールされていて、これは成功しているように見える。
Re:互換性維持の難しさよ (スコア:2, 興味深い)
Java の VM 作ってたので、実経験として言えますが、TCK やドキュメント化などの枠組みは用意してましたけど、Sun の時代から運用は現場の担当者任せで、実装や挙動の違いは、担当者が変わるだけでも、差がでるというレベルでした。
Java は厳密さに注力しているというポーズをとっただけで中身は伴っていませんので、他の一般的な言語より厳密性のレベルは低いくらいです。
Re: (スコア:0)
>運用は現場の担当者任せで、実装や挙動の違いは、
具体的には?
そりゃあVMのメモリ消費の違いとかパフォーマンス特製の違いはあるよ。
#「WinXPからWin●に上げたら激しく遅くなった」みたいなの。
で、「ロジックは変わったの?」って話。
#「1+1=2」だったものが「1+1=3」になったりしたのか?してないのか?
#IEやPHPでは、これが日常茶飯事。
#Javaでは「同じコードが同じ結果を生じる」が、PHPでは「同じ結果にならない」。
Re:互換性維持の難しさよ (スコア:1)
TCK の期待値として 1+1 は 2 を求めていたのに、担当者が変わると 3 になる。
今までベリファイエラーとしていたものが、ベリファイエラーにならなくなるとか、その逆とかもね。
仕様やドキュメントが変わったのではなく「担当者が変わる」がトリガー
なので、同じバイトコードのファイルが、JRE のバージョンによって異なる挙動をしたり、今まで動いてたものが、ベリファイに失敗して動かなくなるとかね。
Re: (スコア:0)
Javaのバージョンアップで一切問題に直面したことがないのは、それはそれで幸せだ。
Re: (スコア:0)
javaで互換性を維持できない人は、他の言語だともっとできないよ。
というか、他の言語の環境だと、互換性問題が発生するのがデフォなので、
話題にさえなってないだけじゃね.
筆頭はPHPとかIE6専用ブラウザアプリとか。
Re: (スコア:0)
Javaのサポート期間はIE6よりずっと短いんですが...
Re: (スコア:0)
IEのサポートポリシーが変わったからこういう問題は減るだろう。
ブラウザからアプリに回帰するかもしれない。
Re: (スコア:0)
IE6専用ブラウザアプリって何なのかしらないけど、PHPやperlみたいな他の言語の場合はバグ修正程度のアップデートごときで互換性が維持できないケースは稀なんだよね。
バグそのものの仕様をもとにコードを書いていたならともかく。
Javaの場合はバグ修正のアップデートで動かなくなったりすんだよね。
バグ修正個所が多すぎて影響が大きく出てしまうんだろうか。
だからアップデートできなくて、古いバージョンが無数に動いてる状況になるんだ。
Re:互換性維持の難しさよ (スコア:1)
>IE6専用ブラウザアプリって何なのかしらないけど
IE、特にIE6は仕様レベルで他ブラウザと挙動が異なるから。
分かりやすく言えば
if( IE6なら){
IE6用コード;
else if( IE7なら){
IE7用コード
}
...
else{
IE以外のブラウザ用コード;
}
みたいな書き方をしないと、そもそも動かない。だから「対応ブラウザはIE6です」みたいなのがまかり通る。(Googleみたいな巨大企業でさえも、IE6のサポート打ち切りを言い出すくらいだものな。)
PHPでも、PHP4用コードとPHP5用コードが別だったりするので、バージョンアップ時に苦労して書き直してたんだよ。PHPでは「動かない」ってことが公式アナウンスされてるし、上げた途端にエラーで落ちたりするから、書き直さずにアップデートする技術者がいなかっただけ。Javaとは状況が全く異なる。
「IE6のサポート期間が長かった」みたいなコメもあるけど、あれは下手に修正するとIE6依存アプリが軒並み動かなくなる恐れがあったから、下手に手を出せなかったというのも大きいと思う。本来なら修正すべきIE6の問題が修正されずに長期間遺されていたわけだ。銀行のCOBOLで書かれたレガシーシステムがごとし。
Re:互換性維持の難しさよ (スコア:1)
ちげぇよ
IE6が出た当時はIE6以外はすべて糞だったんだよ
だれもOSをバージョンアップしないもんだから、確定したり追加された仕様に追従した新バージョンのOSやブラウザに移らなかっただけ
Re: (スコア:0)
更新されないブラウザが糞になるのである(今ならAndroid 2.3とか)。
今はまだいいけど、今後更新されないことが確定してしまったIE11が足を引っ張り続けるのかと考えただけで憂鬱だ。
Re: (スコア:0)
それ、アプリ側で無駄にバージョンチェックしてるだけのことが多い。
そんな極端な非互換性が頻繁にあるなら例示してほしい。
Re: (スコア:0)
バージョンチェックで止めてるならともかく、訳もわからん様子で動かないからな。
Re: (スコア:0)
http://lucene.472066.n3.nabble.com/What-is-recommended-version-of-jdk-... [nabble.com]
幾らでもあるが
>PHPやperlみたいな (スコア:0)
それ全部サーバーサイドで使われる言語じゃん?
サーバーサイドで使われるJavaの互換性は、ほとんど問題になってないよ。
問題なのは、ユーザーの端末とかクライアントサイドで使われる奴。
サーバーサイドの方は、ちゃんとあったバージョンにすれば済むけど、クライアント側はそうもいかないから問題になる。
PHPやPerlだって、クライアントサイドで日常的に使われてたらもっと大問題になってるよ。
Re: (スコア:0)
そんなに互換性問題になったかな
うちの周りじゃ10年前のコードがそのまま動いてたりするんだが
Re: (スコア:0)
政治なんかでも理想主義は他人の足を引っ張るだけの脳内お花畑野郎だ
Javaは死んだ。
Javaはオワコン。
などと言われはじめて久しいが相応の理由があるってことさ
Re: (スコア:0)
Javaは腐ってるんだけど、それでも開発に使われ続ける理由はプログラマー教育でJavaに逃げてるからだろう。
専門学校や大学でJavaしか教えていないところもあるんじゃね?
ユーザ視点で「Javaで開発してくれ」ってパターンはほとんど聞かないね。
一番多いのが開発者の都合。
教育がJavaで行われる理由 (スコア:0)
プログラマー教育がJavaに逃げるのは、代替がないからっしょ。
市場に需要がたくさんあって、ベンダーやプラットフォームの縛りがきつくなく、仕様がはっきり管理されている、みたいな言語が他にないから、選択肢として選びようがない。
学校教育で、PHPやC#を教えても、仕様がころころ変わったり使えるプラットフォームが限られてたりで汎用性がない。
かといってPythonとか学術向けの言語を教えたら、実務で使えないとか言われる。
消去法でJavaになるのも致し方ない。
Re: (スコア:0)
PHPもC#も、WindowsでもLinuxでもMacでも動くやん
Re: (スコア:0)
動けばいいってもんじゃないんだぜ。
Windows環境のPHPや、Linux環境でのC#が商用利用に問題ないかっていうと、問題ないとは言い難い。
Re:教育がJavaで行われる理由 (スコア:1)
> Windows環境のPHPや、Linux環境でのC#が商用利用に問題ないかっていうと、問題ないとは言い難い。
Windows環境のPHPもLinux環境のC#も商用利用OKだしMSが公式にサポートしてるじゃん
LinuxでのC#はまだ日が浅いからパフォーマンスはネイティブの8割ぐらいだけど普通に動くし、
PHPに至ってはMSがIIS設定までしてくれるインストーラ付きで速度もNginx on Linux + PHP(FastCGI)と同程度には出る。
使ったこと無いのにイメージだけで言ってるでしょ。
そういうのやめてくれませんかね。