他の Java プログラマーがこの言語の好きな部分を何と感じているのか、なぜそのように感じているのか、なぜ他のプログラマーがそれについての詳細な知識を必要とするのかを知りたいと思っています。シンプルさ、パフォーマンスなどの理由を探しています。ありがとうございます。
15 に答える
私のお気に入りの Java API はCollections Frameworkです。独自の実装を展開する代わりに、常に使用していることに気付きました。非常に楽しく、簡単に使用できます。これは、高性能データ構造とアルゴリズムのいくつかの便利で交換可能な実装と、それらの周りに追加機能をラップするためのいくつかの便利なメソッドで構成されています。
Josh Bloch によるチュートリアルは、http: //java.sun.com/docs/books/tutorial/collections/index.htmlにあります。
API の私のお気に入りの部分は、間違いなくjava.langです。と呼ばれるこのクラスがString
あり、文字の配列を簡単に操作できます。優れた Java コードの作成に真剣に取り組んでいるプログラマーは、ぜひチェックしてください。
java.util.concurrentは、私の人生にとって非常に重要です。私たちは非常に多くのマルチコアプログラミングを行っており、古いスタイルの生のスレッドを使用してすべてのタスクを実装しようとすると、気分が悪くなります。
並行性パッケージが本当に私たちの生活を楽にする良い例は、それが提供する特殊なデータ構造のプールです。私の個人的なお気に入りはCopyOnWriteArrayListです。表示タスクがデータのキャッシュから読み取って画面を更新し、別のタスクがネットワークから情報を取得してキャッシュを更新している状況では、非常に多く使用します。通常、これは衝突、ConcurrentModificationExceptionsおよび同様の恐怖への誘いです。CopyOnWriteArrayListを使用すると、書き込みタスクは、データを追加する必要がある場合にデータの新しいコピーを作成します。これにより、リーダーが常に有効な(ただし、古くなっている可能性があります)データセットを表示できるようになります。
javadocが言うように、
これは通常コストがかかりすぎますが、トラバーサル操作がミューテーションの数を大幅に上回っている場合は他の方法よりも効率的であり、トラバーサルを同期できない、または同期したくないが、並行スレッド間の干渉を排除する必要がある場合に役立ちます。
Javaは、この問題を解決するために通常導入するバグのクラス全体を排除し、解決する必要のある実際の問題に集中できるようにします。
間違いなくコレクションフレームワーク。サーバー側のJavaまたはクライアント側、グラフィカルかどうかに関係なく、常に使用されます。使い方は簡単です。ほとんどのデータ構造クラスには、非ジェネリック バージョンとジェネリック バージョンの両方があります (2 番目を使用するのが最適ですが、1 番目を多用するレガシー コードがあります) が、クラス パラメーター以外の API に関してはほとんど同じです。.NET では、2 つのバージョンの名前や API が異なる場合があり、非常に混乱する可能性があります。また、Java Collections Framework のアルゴリズムがインスタンス メソッドではなく静的メソッド (Collections.sort(collectionVar) など) になっている点も気に入っています。.NET ではインスタンス メソッドを使用しますが、何らかの理由で、すべてのデータ構造に並べ替えがあるわけではありません... コレクション フレームワークも非常に豊富で、単純なデータ構造と特殊なデータ構造の両方を見つけることができます (例:
私が聞いた欠点の 1 つは、フレームワークがうまく機能せず、独自のフレームワークを作成する人がいるということです。パフォーマンスが重要なものを扱っていないため、確認できません。
ストリーム。Java のストリームは、C++ の対応するストリームよりも把握および実装がはるかに簡単であり (意見)、通常、API に付属するストリームの名前に基づいて、ストリームが何をするかを簡単に確認できます。
反射。一部はjava.lang.reflectにあり、一部はjava.langにあります(主に Class と ClassLoader)。
javax.naming
http://java.sun.com/javase/6/docs/api/javax/naming/package-summary.html
Java は移植性があるため、優れたシステム統合テクノロジです。JNDI は、リモート システムとの最初の接続の複雑さをうまく抽象化します。
私はJava EE の JPAの大ファンです。これにより、(EJB を使用する) 大きなアプリと小さなアプリの両方で行う必要がある作業の量が減りました。
2 番目に近いのはセキュリティ API の JAAS です。Java SE JAAS のリンクは次のとおりです。http://java.sun.com/javase/technologies/security/
これまでのところ、java.util.regex API パッケージが私のお気に入りです。さまざまな目的で文字列の断片を検索して利用する際に、何度も車輪を再発明する必要がなくなったからです。
私のJavaの時代を振り返ると、使用するのに最も楽しいAPIはjava.util.concurrentでした。これは、並列処理のためのよく考えられた使いやすいビルディングブロックを提供するからです。
java.util.regex
なくてはならないパッケージは他にもありますが、正規表現パッケージは「Java への最大の追加機能」の最上位層にある必要があります。
リフレクションのコメントに同意します。Java API の最も有用で強力な部分
java.util は非常に便利です。なんで?
- コレクション。それらの多くは!
- 日時クラス
- テキストスキャナー
- 依存性注入ユーティリティ (Java 6 以降)
- タイマースレッド
- 乱数
- オブザーバーパターンはそこにあります
- Java プロパティ
java.util.jar - アプリケーション プラグインのクラス ローダーに .jar ファイルをロードするのに役立ちます! 大好きです。
InheritableThreadLocal
はるばる !!!難読化されたコードを書く機会が非常に多く、自分を吊るすためのロープのリールが尽きることはないようです。