Javaはもう死んだの?
■ このスレッドは過去ログ倉庫に格納されています
確かにOracleがJava推しだったのはJavaデスマーチ大量発生の背景にあるかもね
90年代後半〜2000年代前半にこれからはJavaだ!EJBだ!みたいな流れになって
Javaなんてよく知らんようなSIerもこぞって参戦して死屍累々 あれだけ世界的なJavaブームがありながらなぜサーバサイドしか残らなかったのか。
速度的に数キロバイトのhtmlテキスト吐く程度でやっとだったから。
PenII 200MHzで走らせてるのに体感的に1MHzの6502より遅い。AppleII以下の性能。 >>749
それは的外れだな。昔のWindows上で仮想マシンを動かして、プログラムは中間コードだから、仮想マシンの起動するのに時間がかかり、マシン語でもないコードを実行しているのだから仕方ない。
いまでもマイクロソフトがプログラムを実行形式ファイルにしたがるのは、Windowsの評価が下がらないように気を使っているから。
実行ファイルにするとそのPCに最適なマシン語を用意できないから、.NET Frameworkで作ったものは、マシン語にコンパイルされたJavaコードよりも遅いことがある。
JavaもリレーショナルデータベースもPCの性能、ネットワークの速度が足らない状況で、理想を求めて時代を先走ったせいでコンピュータに疎い人間から叩かれた。 今のPCならJVMは問題無く動く
まあ、昔は遅かったよ
ゆえにライセンスフリー以外でJava使う以外にはメリット無かったな
メインフレームデータベースをRDB(Oracle)に移行する作業でHI-UX(日立UNIX)でProCOBOLでプログラム作って盛大にバッチ処理してRDB更新してたな
当時はJavaなんか遅くて使えんかったわ
で、クライアントPCからはEXCELとAccessで画面作ってVBAで表示
COBOL→Javaってどういう理由で持て囃されたのか全く分からんかったな
JVMが早く動かせる様になってもProCOBOLにコンバートするのが効率良かったハズなのにね >>751
SQLの構文の元はIBMが考えたもので、オラクル社が発案したものではない。
オラクル社はビジネス優先なので、新しい言語をいちから作ったりしない。
SQLはIBM案から拝借、PL/SQLはAda言語から拝借した。
ちゃんと当時の時流にのっていて、オラクル社の選択眼は優秀。マイクロソフトはこの逆で選択眼がなく、独自に作り出して自ら首をしめる文化がある。マイクロソフトもビル・ゲイツを知っている世代がいなくなって、ようやくまともになってきた。 >>753
>マイクロソフトもビル・ゲイツを知っている世代がいなくなって、ようやくまと>もになってきた。
というか、ナデラになってから高度技術の会社から Apple みたいな一般向け
の会社になった感じがする。 ということは、Java で書いてネイティヴを吐ければ万時OKなんでしすね!これは商機? >>749
JITコンパイラ最適化でCより速いとか持て囃されてたの知らんのか C言語が速いというのはいまでも希に聞くが、C言語が速いのではなくて、マシン語だから速いんだけどなw
CやC++で作ってしまうとむしろ遅いコードを作ってしまいかねない。ハードウェア、特にCPUは常人では理解できない世界になっているから、コンパイラが優秀、そのコンパイラがそのアーキテクチャを知り尽くしているかがカギ。 JavaのVMはハードウェア、OSを作っている会社が作っている場合は最適化されるので、問題も起こりにくい。 配列のレンジチェックいちいちしないから早いんじゃないの? >>758
Javaブームの頃、JDKにまだJITコンパイラは入ってないぞw >>766
お前デタラメばっかり言って何がしたいんだよ
荒らしてるだけならNGすっぞ Ruby では、
JRuby(Java 実装系)のJIT は、百万回からコンパイルされる。
一千万回(実行時間で、1秒)では、なんと、MRI(C 実装系)よりも速くなる!
このように最適化では、Java は数十年も研究してるから、C よりも速くなる! >>767
wikipに書いてることはデタラメなのか。さすがJava信者。オカルトですw
しかもCより速いとか言ってる時点でIT音痴を露呈しているw >>768
jrubyってjava byte codeにJITコンパイルしてたりするんじゃね
c版もJITしないと不公平だろ >>769
お前、この前からデタラメ書いてる荒らしだろ
もう相手すんのやめるわ
勝手に勝利宣言してくれ JITコンパイラはJavaの思想に反している。
ネイティブ変換は既にVM上で走ってないし、Write once, run anywhere じゃなくなる。
つまり偽Java。 >>769
wikipediaになんて書いてあんの?
J2SE 1.3 (2000年5月8日)
HotSpot Java仮想マシンが導入 Sunが訴訟しまくったことにより、2000年には世界的に既にJavaブームは終わっており、
IT音痴の日本だけはなぜかこれからはJavaだ、Javaだと言ってる状況だった。
2000年頃にはPen4、2GHzにもなりCPUの速度は10倍以上速くなっている。
これでもまだJavaを走らすには遅すぎた。後のCoreアーキまで待たねばならなかった。 ハードの進化がJVMの欠点を隠した、と言う事
2005ぐらいまではJavaアプレットでお絵かきして遊んでたぐらいだった
ここ数年でJavaへ移行する大型プロジェクトが多かったが、一段落ついたらライセンス化された
無料で新規にプロジェクト組むのは色々有って増える事は無い
減るだけだろう みずほ銀行が合併3行の内紛でCOBOLからJavaへ移行がぐちゃぐちゃになって何とかシステム移行出来たのが、つい最近
と、同時にリストラ発表で人員削減
Javaになったシステムは稼働ライセンス契約が開始
そのみずほ銀行から天下りした社長の7Payはプログラムソース漏洩で個人情報漏洩発覚
安易に時流に乗って必要な分析怠ると色々事件発生するこの業界
おまけにみずほは韓国へ資金援助しており回収不能、今後も投資するとか言ってる
サグラダファミリアみたいなシステム作って無駄になる可能性出て来た >>765
C/C++コードが Java や C# より速いのは、配列のレンジチェックだけでなく、
GC を使ってないことがかなり大きい。 >>778
もう一つは、ヒープを使わなくて済む場合には、(native)スタックや
構造体に直にオブジェクトや配列などを埋め込むから。
Javaなどは、一般オブジェクトや配列は new Txxx などのように
必ずヒープから確保するのでここにかなりのオーバーヘッドが発生する。
また、N 個のデータがある場合、C++で1回 delete すると、O(1)で済むが、
Java/C# で、参照型変数 = null; などとした場合には、最悪、O(N)位かかってしまう
事があるらしい。それは、GC が N 個のデータを全て walk してしまうことが
あるから。
だから、データの量が増えた場合でも C++ は速度低下が余り起きずに安定して速いのに
対し、Java/C# ではどんどん遅くなる場合がある。それは GC があるから。
>>757
上記の事があるので、Java/C# は、native binary に直しても速くならない。
なぜなら、O(1)とO(N)の違いは「速度のオーダーの違い」で、いくらバックエンドの
コードやCPU自体を高速化しても埋まらないから。 >>779
O(x)という記号の意味を大体書いておくと、
O(1) = データ量Nが大きくなっても処理時間に変化が起きない。
O(N) = データ量Nが大きくなると、処理時間がNに比例して大きくなっていく。
もう少し厳密に書くと、delete pXxx や rXxx = null にかかる処理時間を f(N) と表した時、
O(1) : lim_{N->∞) ( f(N) ) < 一定値
O(N) : lim_{N->∞) ( f(N) / N ) < 一定値
ということです。これらは数学の解析学や微分積分学のランダウの記号といいます。 モダンC++対マネージコード:パフォーマンス対生産性
https://www.infoq.com/jp/news/2012/04/native_vs_jit/
まず、JITコンパイルは主要な問題ではありません。根本原因はずっと基本的なことです。マネージ言語は基本的にパフォーマンス効率がぎりぎりの時でさえも、それを犠牲にして、プログラマーの生産性を最適化するよう、意図的に設計上のトレードオフを行なっています。
マネージ言語の設計者は、設計のためにパフォーマンスよりも安全性の道を選びました。例えば、配列の境界外の要素にアクセスするのは、無効な操作であり、プログラムの実行を終了させます。クラッシュしたり、攻撃可能なセキュリティホールを作ることがないようにしています。
2つ目に、たとえJITが唯一の大きな問題であったとしても、JITは普通に最適化するコンパイラー程良くなることはありません。なぜならJITコンパイラーには、速いことが重要であり、最適化したコードの生成を気にしていないからです。
「予防」と「治療」にはいつも避けがたい、基本的な差があります。パフォーマンスの最適化となると、C++はいつも「予防」を選び、これまで述べた英雄的な努力とそれ以上によって、マネージ言語は「治療」を選びます。
しかし、古くから諺である予防はいかなる治療にも勝るは、絶対です。予防には勝てません(その理由の1つは、最初に予防した後に治療ができるからです。しかし逆はできません)。
もしパフォーマンスとコントロールを一番大事にするなら、それを一番優先するように設計されている言語を使うべきです。それだけです。 >>780
自己レス。厳密に言うと、記号に微妙な誤りがあって、N個のデータがあった時、
・C++ の delete pXxx の一回当たりの平均速度を f(N)
・Java/C# の rXxx = null; の一回当たりの平均速度を g(N)
とすると、O(1)、O(N)はなく、
f(N)〜1 // 常に
g(N)〜N // 最悪ケース
と書いたほうが良かった。
g(N)=O(N) と g(N)〜N は、意味が違っていて、前者は、N が十分大きい場合に、
実行時間が最悪でも N に比例。後者は、実行時間が N が十分大きい場合に N に比例。
言い方を帰れば、=O(N)という記号は、(Nが大きい場合の)上限値、
〜Nという記号は、Nが大きい場合の漸近値を表す。 >>782
誤:とすると、O(1)、O(N)はなく、
正:とすると、O(1)、O(N)ではなく、 >>780
したがって、こう書けます:
g(N)〜1 = データ量Nが大きくなっても処理時間に変化が起きない。
g(N)〜N = データ量Nが大きくなると、処理時間がNに比例して大きくなっていく。 swing使ってる人って少ないんでしょうかね。
ラベルとかボタンの日本語フォントが汚すぎて泣きたい。 Swingなんてまだ使ってる所有るんだなw
あのUIは個人的には凄い嫌だわw >>782
配列をソートするとき。中身がオブジェクトの場合、実際にメモリ交換が起きるのは、参照アドレスだけになるんですか?
C++の場合は、意識して、クラスの参照アドレスを配列にいれないと中身が移動するので遅くなるはず。
また、リスト、マップ、ベクター(C++では、STL)では、どうなんでしょうか? >>788
そういう場合普通indexだけソートしない? >>772
その現在では否定されているフレーズを使うのはJava信者の特徴 >>788
Javaの場合は、原則的には実態ではなく参照だけの入れ替え(交換)になる。
実体の入れ替えは、同じメンバ同士の値を交換することによって
行えなくは無い。しかし、その場合でも Object 系のメンバについては
参照だけの交換が基本。ただし、実は Shallow Copy と Deep Copy の
違いなるものがあって、深く交換することも可能は可能。
今言ったメンバ同士の交換を、Object系のメンバについても「再帰的に」
繰り返せば、Deep Copy(今の場合は交換だけど)といって深い複製や
交換も可能は可能。 >>791
C++の場合は、もともとの言語設計では参照カウンタ方式が使われないので、
自前で参照カウンタを設けたりスマートポインター系を使わない限りは、
「Copy」しないとプログミングしにくい場合がある。
その部分に関して(だけ)は、Javaの方がC++より効率が良い感じがある。
つまり、参照を何度でも複数の参照変数に入れても言語処理系が
参照カウンタが0になった時に勝手に解放してくれる手軽さがあるから。
C++だと参照カウンタを明示的に使わない限りは自動解放してくれないので
コピーして使うほうが楽になる傾向があったりする。必ずしもそうでも無いけど。 >>792
C++で、new は簡単だけど、deleteするタイミングは難しいですね。
結果、小さなクラスや、小さな配列は、何も考えずに、配列や、stl::list 等 にぶち込むのでコピーになっていますね。たぶん。 >>793
その部分に関して(だけ)はどうしてもC++の方が効率が下がりがちでは有る。
自動delete機能のあるか無いかの違いがプログラムの仕方そのものにも影響を与え
て、C++は本来必要の無いコピーをしがちになりがち。 >>795
但し、実際にやってみるとC++はコピーも速く出来がちなので、本来効率の悪い
はずのコピーであってもJavaのGC方式を使ってコピーを減らしたものようりも
結果的にはだいぶ速い事が多い。実際今こっちでやってるプログラムは、
C++で書いていてDeepCopyを結構使ってるけど、JavaでShallowCopy使った
ものよりもはるかに速く動作している。 >>794
なお、C++のstd::list はリンクリストなので、要素の実体のコピーは滅多に
伴わないため効率は高い。
1つのオブジェクトが色々な場所から不規則に参照されている場合、
静的に delete すべきタイミングを予想する事は難しいことが多い。 そんな必死にC++の優位性を説かなくても普通の人は分かってるから大丈夫ですよ Windows でさくさく動く入力画面を、Javaで作ろうと思ったら、何を使えばいいんですか? Swingはとても美しい構造をしているので時代遅れにはなりにくい。
GUIライブラリとしては歴史に残るような美しさ、センス、品質の良さを
持っていると思う。 部品くっつけて載せるだけで何回も登録しなきゃいけなくてめんどい
いまだにテキストエリアの文字数制限自作とかちょっとない
Serialize定数が見苦しい
すぐフォーマット崩れる Windowsと言われているのにSwingだと、見た目でこれは何か言われるぞ。 もうswing出てから20年以上経ってんだよな
20年前のGUIを今使えって言われてもなあ
そして誰も言わないJavaFX そんなのもありましたね
いつまでたってもEclipseがまともなポトペタエディタ提供してくれないから 20年以上,vc++ で mfc 使ってますけどね〜笑
意外と廃れないなーと思っています。うまく作れば、xpからwin10まで動くし。。。 >>809
何を当たり前のこと。Windows SDKでの開発はWindows APIもメッセージも変わりすぎて対応が難しい。
.NET Frameworkも手を入れすぎていて複雑化している。 Javaは遅くないなんて言ってる低スキル者がいて笑えるw
使って気づかないって相当なアホだろw >>808
NetBeansが最初から今の出来だったら少しは違ったかもな 金融系で案件で目にする、レガシーなCOBOLからJavaへの置き換えって、
オブジェクト指向の設計をしなおしてるのですか?
ひょっとして、クラスひとつだけで、作っちゃってるとか? swingに変わる奴無いの?
JavaFXは論外なので却下 VM捨ててネィティブ変換したり、ライブラリの多くをC/C++に置き換えてなんとか使える速度になったのに
なぜJavaが糞遅くないって思っているのか不思議。低スキルすぎてスタックとヒープの速度差とか全然理解してなさそう。 >>821
技術的な反論が一つも言えないおまえの頭は悪いと理解した。
しかも相当に。むしろ哀れである。笑える。 話の前提も論理展開も主観的評価もめちゃくちゃすぎて技術的な話が成立する気がしない
頭悪そうとしか言いようがない >>823
なんで技術ネタに逃げるようなような低脳馬鹿がこの板にいるのだろうか。
低スキルだと自覚があるならそういう恥ずかしい煽りなどせず黙ってろよ、低脳君。
なぜ多くのライブラリをC/C++で書き直した?
Javaで書いたら糞遅かったからだろ。他に理由があるのか。低スキルJava信者よ。
答えよ。おまえ指定だ。他のIDの奴は答えなくていい。 リアルで、話の前提も論理展開も主観的評価も全くできない低脳すぎて話が成立しなくてワロタwww
いや、馬鹿とか低スキルとかいうレベルではないな。
ID:CTtSmkOq ← これぞリアル池沼ww 多くのライブラリと言っておきながら、まさか一つも例を上げられずに逃走するとは
このときは想像することも出来なかったのです… プログラミング言語のどれが速いかなんて、条件の設定次第でどっちにでも傾く。 IDを指定して質問した本人はとっくに逃げ出したのに、また嘘八百の捏造を並べ始めたかJava信者。昔からほんと嘘つきだなw
wikipediaに書いてある。諦めろ。
> Javaプログラムの実行速度が遅かった
そんなに高速化したのならブラウザの一つでもオールJavaで書いてみろ。2chブウラザでもいい。 またデタラメ君か
このバカ全然話通じないから相手するだけ無駄だぞ 「C++ 遅い」で検索
About 282,000 results (0.28 seconds)
「Java 遅い」で検索
About 6,280,000 results (0.24 seconds)
Java厨哀れだなw >>835
javaが遅いと感じる10の 以下略
> 基本的にJavaは『遅い』と思われている。理由は二点あって、
> 一つは過去のバージョンのJavaの実行速度が遅かった歴史的な点であり、
> 一つは実際に依然として遅い面がある点だ。 >>837
> COBOLのコードを手動でJavaにおき直す仕事もした事あるけど
> 「COBOLより糞遅いな。Javaやっぱり駄目だね」とお客さんの一言で終わった
ほんとJavaって終わってんだな。こんなの真面目に大学で勉強して未だに高速だと信じてて笑えるw そんなに遅いのにGoogleもAmazonも使ってるのはなんでなのん JavaのライブラリをC++に書き直した話をしてて
なんでか俺に聞いてたはずだが
単に彼の思い込みで間違いだったのだろうか
あんなに強い口調で主張の根拠にしてたのに >>840
低スキル低学歴の馬鹿でも使えるからさ。wikipedieaに書いてるだろう。
> 1990年頃、サンのエンジニア、パトリック・ノートンは、自社のプログラミング言語C++とCの
> アプリケーションプログラミングインタフェース(API)と開発ツールに不満を募らせていた。
> 彼らはC++ではコンピュータ資源を食いすぎると判断した。
> またC++は複雑なプログラミング言語であり、C++を使うプログラマは注意していても間違いを犯しがちである。
彼らの脳みそではC++は難しすぎたのさ。だが今でも多くの速度のいるアプリやライブラリ、
DB、OS、ドライバなどはC/C++で書かれている。つまり馬鹿だったはのおまえと彼らだけだったという話だ。
しかもJavaは糞遅いなどと使えばすぐわかることすら理解できないのだから。 >>842
「C++ 遅い」で検索
About 282,000 results (0.28 seconds)
「Java 遅い」で検索
About 6,280,000 results (0.24 seconds)
妄想から覚めろ、Java信者w >>842
いいかげんに答えてくれないか。JavaはC/C++より速いのだろう。
なら、C/C++で書かれたブラウザや高速ライブラリがJavaで書き直された例がたくさんあるはずだ。 >>841
低スキルのおまえは録にコード書けないだろうからわざわざ見つけてきたぞ。Java製ブラウザ。
HotJava
https://ja.wikipedia.org/wiki/HotJava
> HotJavaはほとんど普及していない。
> ▽HotJava 1.1.5. 総Javaで作られたブラウザ。総Javaだけあって、かなり動きは遅いです。 時々原因不明に固まったりするので
> ▽HotJava 3.0. 総Javaなブラウザ。やはり重い。
頑張って使えや、コードも書けず煽りと捏造しか書けない低スキルJava信者。 いや
お前がJavaがくそ遅いからライブラリをC++に書き直したのがいっぱいあるからって俺に理由聞いて
俺がどれのことかって聞いてそのままなんだ
答えてくれないかって言われても >>847
まあなんだ、気持ちは分かるよ。訴訟しまくった結果、MSから捨てられ、Googleから捨てられ、
ユーザーから捨てられ、信者からも捨てられ、完全にオワコンになったJava。
キミはどこの大学でJavaを学んだんだい? Javaを教えてくれた教授に言ってやれ。おれの青春を返せってw ■ このスレッドは過去ログ倉庫に格納されています