質問

私は、他の Java プログラマーがこの言語のどの部分が気に入っていると感じているのか、なぜそう感じているのか、そしてなぜ他のプログラマーも Java についての詳しい知識を求めるのかを知りたいと思っています。シンプルさ、パフォーマンスなどの理由を探しています。ありがとう。

役に立ちましたか?

解決

私のお気に入りの Java API は コレクションフレームワーク. 。私は自分で実装する代わりにいつもこれを使っていますが、とても楽しくて使いやすいです。これは、高性能データ構造とアルゴリズムのいくつかの有用で交換可能な実装と、それらの周りに追加の機能を包むためのいくつかの利便性方法で構成されています。

Josh Bloch によるチュートリアルは次の場所にあります。 http://java.sun.com/docs/books/tutorial/collections/index.html

他のヒント

API で私が最も気に入っている部分は、間違いなく次のとおりです。 java.lang. 。というクラスがあります String, を使用すると、文字の配列を簡単に操作できます。優れた Java コードを真剣に作成しようとしているプログラマーは、ぜひチェックしてください。

java.util.concurrent 私の人生にとって重要です。私たちはかなり多くのマルチコア プログラミングを行っており、古いスタイルの生のスレッドを使用してすべてのタスクを実装しようとすると考えると、気分が悪くなるだけです。

同時実行パッケージが実際に私たちの作業を楽にしてくれる好例は、同時実行パッケージが提供する特殊なデータ構造のプールです。私の個人的なお気に入りは、 CopyOnWriteArrayList. 。表示タスクが画面を更新するためにデータのキャッシュから読み取っている間に、別のタスクがキャッシュを更新するためにネットワークから情報を取得している状況では、これをよく使用します。通常、これは衝突を招くものですが、 ConcurrentModificationException そして同様の恐怖。CopyOnWriteArrayList を使用すると、書き込みタスクはデータを追加する必要がある場合にデータの新しいコピーを作成するため、リーダーは常に有効な (ただし、古い可能性がある) 表示用のデータ セットを確保できます。

javadoc にあるように、

これは通常費用がかかりすぎますが、移動操作が突然変異を大幅に上回る場合、代替よりも効率的である可能性があり、トラバーサルを同期できないか、同期したくない場合、または同時のスレッド間の干渉を排除する必要がある場合に役立ちます。

Java は、この問題を解決するために通常発生するようなバグのクラス全体を排除し、解決する必要がある実際の問題に集中できるようにします。

間違いなくコレクションフレームワークです。これは、サーバー側 Java を実行しているか、クライアント側で実行しているか、グラフィカルであるかどうかに関係なく、常に使用されます。使い方は簡単です。ほとんどのデータ構造クラスには、非ジェネリック バージョンとジェネリック バージョンの両方があります (2 番目を使用するのが最適ですが、1 番目のバージョンを多用するレガシー コードが存在します)。ただし、クラス パラメーター以外の API の点では、これらはほとんど同一です。.NET では、2 つのバージョンに異なる名前/API が付けられるため、非常に混乱する可能性があります。また、Java Collections Framework がアルゴリズムを静的メソッドとして持つ方法も気に入っています (例:Collections.sort(collectionVar)) としてではなく、インスタンス メソッドとして。.NET ではインスタンス メソッドが使用されますが、何らかの理由で、すべてのデータ構造に並べ替えがあるわけではありません。コレクション フレームワークも非常に豊富で、単純なデータ構造と特殊なデータ構造の両方を見つけることができます (例:挿入順序を保持する LinkedHashMap)。

私が聞いた欠点の 1 つは、フレームワークのパフォーマンスが悪く、独自のフレームワークを作成する人もいるということです。私はパフォーマンスクリティカルなものを扱っていないため、検証できません。

javax.ネーミング

http://java.sun.com/javase/6/docs/api/javax/naming/package-summary.html

Java は移植性の点で優れたシステム統合技術であり、JNDI はリモート システムとの最初の接続の複雑さをうまく抽象化します。

反射。一部は入っています java.lang.reflect そしていくつかは java.lang (主にクラスとクラスローダー)。

ストリーム。Java のストリームは、C++ のストリームよりも把握および実装がはるかに簡単です (意見)。通常、API に付属するストリームの名前に基づいて、ストリームが何をするのかを簡単に確認できます。

私は大ファンです Java EEのJPA. 。これにより、大規模なアプリ (EJB を使用する) と小規模なアプリの両方で行う必要がある作業量が削減されました。

2番目には、セキュリティAPIであるJaasです。これはJava se Jaasのリンクです。 http://java.sun.com/javase/technologies/security/

これまでのところ、java.util.regex API パッケージが私のお気に入りです。これにより、さまざまな目的で文字列の一部を検索して利用する際に、何度も車輪の再発明をする必要がなくなりました。

java.util は非常に便利です。なぜ?

  • コレクション。それらの多くは!
  • 日時クラス
  • テキストスキャナー
  • 依存関係注入ユーティリティ (Java 6 以降)
  • タイマースレッド
  • 乱数
  • オブザーバーパターンが存在する
  • Java プロパティ

java.util.jar - アプリケーション プラグインのクラス ローダーに .jar ファイルをロードするのに役立ちます。大好きです。

java.util.regex

これなしでは生きていけないパッケージは他にもありますが、正規表現パッケージは「Java への最も優れた追加機能」の最上位にある必要があります。間違いなくコレクションと同じレベルです。

私はReflectionのコメントに同意します。Java API の中で最も便利で強力な部分

Java 時代を振り返ると、使用して最も楽しかった API は次のとおりです。 java.util.concurrent, 理由は、単純に、並列処理のためのよく考えられた使いやすい構成要素が提供されているからです。

InheritableThreadLocal はるばる !!!難読化されたコードを書く機会や、首を吊るすためのロープのリールは、決して尽きることがないようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top