web-dev-qa-db-ja.com

Javaに「悪いラップ」があるのはなぜですか

多くの人々がJavaについて、特にC/C++から来ているJavaを下手に話すと聞きました。なぜ歴史的な理由があるのですか?以前はマシンでしたが、JVMを遅延なく実行するには遅すぎたためでしょうか?

7
user66282

すべての言語について、それをうまく話せない人々を見つけるでしょう。それは、それがそうである方法そのものです。

Javaも例外ではありません。

22
Morons

「本当のバイナリーのプログラマー・コード」クランからのプログラマーは、おそらくJava終わりまで憎んでいます。しかし、残りの私たちにとって、Javaは、仕事は速く、学習曲線は(少し)短くなります。

C/C++の時代は、優れたプログラマーに、メモリを思い通りに遊べる楽しさを与えました。 Javaガベージコレクションが自動化されたため、面白さが失われました。また、これらの言語はマシンコードにコンパイルされ、JVMプロセスが存在しないため統計的に高速でした。しかし、時代は変わり、今日のハードウェア(これはビデオまたは何かをエンコードしようとしている場合を除いて)はほとんど目立ちません。また、C/C++で何かを(自明ではない)プルオフすると、一定の追加の満足度が得られます。すべてのメモリ管理などを困難な方法で行う。

16
techfoobar

一般的に言えば、Javaは、推奨されている長所の両方で本質的に比較的弱いため、不適切なラップを取得します。

  • 「Javaは1回の書き込みでどこにでもデプロイできます」:大規模なプログラムは、通常、追加の作業なしでは複数のプラットフォーム間で問題なく機能しません。 [〜#〜] edit [〜#〜]-いくつかの調査の後、これは私が最後に真剣に取り組んだときからかなり改善されているようです中古Java(Javaで良い!)-90年代の記事( http://www.mactech.com/articles/mactech/Vol.14/14.05/WritingJavaCross- Platform/index.html )。誤ってJavaの欠陥と呼ばれる可能性がある非Java固有の問題は、プラットフォームが異なれば、UIパラダイムが完全に異なる場合が多く(たとえば、マウスとタッチ、キーボード、キーボードなし)、実に難しいことです。言語の障害なしに、可能なすべてのプラットフォームで実際に動作するwellアプリケーションを設計します。
  • 「Javaは、あなたが知る必要のない多くのことを隠します」:大規模なプログラムでは、実際の使用に十分な速さで動作させるために、言語とVMがどのように動作するかをさらに深く理解する必要があります(ここに専用のページ全体があります: http://www.javaperformancetuning.com/tips/ )。これは実際には理論的には他の方法でもカットできます-JITコンパイルされたJavaプログラムおよび/または更新されたVMは、元々利用できなかったハードウェア固有の最適化を持つことができますプログラムの記述方法(例 http://en.wikipedia.org/wiki/Java_performance#Program_speed を参照)。

Javaには、他の言語よりもはるかに優れているという点を除いて、本質的な致命的な欠陥はありません。

ただし、プラットフォーム間で利用可能な印象的なライブラリのコレクションがあり、ライブラリなしでのみ言語を検討するのは不誠実です。 「仕事を成し遂げる」ためのツールとして、実世界での使用に十分すぎるほど多くのベースをカバーすることは、「すぐに使える」非常に汎用的な目的です。もしそうなら、それは高度なスイスアーミーナイフです(自分を傷つけないように多くの安全機能を備えたもの)。

C++開発者は、他のいくつかの理由でJavaを特に嫌うことがあります。

  • Javaはオブジェクト指向を強制し、「すべてがオブジェクトです」-マルチパラダイムC++開発者は、そのように制限されていることにアレルギーを起こすことがよくあります(完全な開示:私はそのタイプのC++開発者の一人です:))。
  • 上で述べたように、ハードコアJava開発者は、あらゆるものを最大限に活用するために内部についても知る必要があります(どの言語でも常にそうです)、C++開発者は実際にそれらの内部へのアクセス権を持っているため、とにかくそれを知る必要がある場合は、金属の近くで作業することもできると(正しいか間違っているか)と感じます。
8

エンドユーザーの観点から見ると、多くの古いJavaプログラム(実際にはJVM))は、最も単純なプログラムに膨大な量のメモリを使用していました。単純なFTPクライアントなどでは、多くの場合100 MBをはるかに超えています。特に、ほとんどのシステムに256 MB〜512 MBのRAMが搭載されていた場合は、これは受け入れがたいことでした。また、Javaプログラムはデスクトップ領域で非常に一般的であったため、多くの人が同じ結論に達しました。メモリ使用量。

また、Javaランタイム環境には深刻なセキュリティ問題の長い歴史があります(現在でも))。そのため、Javaの使用が増えるにつれ、評判は急激に低下しました。 =一般公開。

Javaセキュリティアラート:

http://www.Oracle.com/technetwork/topics/security/alerts-086861.html#SecurityAlerts (2009-2012) http://www.Oracle.com/technetwork /topics/security/beaarchive-159946.html (2006-2009) http://www.Oracle.com/technetwork/topics/security/alertsarchive-101846.html (2006年より前)

セキュリティ警告

オラクルは、次の重要なパッチアップデートでの配布を待つには余りにも重要であると見なされた脆弱性修正に対してセキュリティ警告を発行します。

私には、これらのリストのサイズは恐ろしいだけです。

2
Juha Untinen