この記事を書く目的は、主に Java の基本的な知識ポイントに関連した、長年にわたる Java の使用経験の一部を要約することです。そのため、Java プログラマーを始めたばかりの人やこれから参入する予定の人にもそれを共有したいと考えています。 Java 開発: この業界に初めて携わる方に、Java をより良く学び使用できるよう、経験を積んでいただければ幸いです。
今回紹介する主な内容は、J2SE に関連する部分です。長年の Java 開発経験と、Java 開発者へのインタビューの経験を組み合わせると、J2SE についてマスターすべき主な内容は次のとおりだと思います。
1. JVM 関連 (各バージョンの機能を含む)
Java を初めて使用する人にとって、JVM 関連の知識は必ずしも深い理解を必要とするものではなく、内部の概念を簡単に理解するだけで十分です。ただし、Java の経験が 3 年以上ある上級開発者にとって、JVM を知らないことはほとんど受け入れられません。
JVM は Java を実行するための基盤です。JVM について何も知らない人が Java 言語を完全に理解できるとは信じがたいです。 Java の経験が 3 年以上ある開発者にインタビューすると、JVM についてはほぼ必ず聞かれる質問になります。もちろん、技術力の質を決定する面接の質問は JVM だけではありませんが、Java 開発能力のレベルを証明することもできます。
JVMのカテゴリーで習得すべき知識は、
JVMのメモリモデルと構造
GCの原理、パフォーマンスチューニング
チューニング:スレッドダンプ、メモリ構造の解析 などだと思います。
マスターする必要があるもの: if、switch、loop、for、while およびその他のプロセス制御構文
7 オブジェクト指向プログラミングの概念。
これは、Java 開発者が習得する必要がある Java の中心的な概念です。 Java の多くの機能や知識ポイントは、Java オブジェクト指向プログラミングの概念に関連しています。私の理解では、優れた開発者は、これらの機能 (知識ポイント) 自体を理解する必要があるだけでなく、これらのオブジェクトが Java のオブジェクト指向プログラミングの概念にどのように反映されているかを知る必要があり、これは開発者が Java 開発言語を習得するのにさらに役立ちます。 、他のオブジェクト指向プログラミング言語と同様に。以下は主な知識のポイントです:
オブジェクト指向の 3 つの主要な特徴: カプセル化、継承、ポリモーフィズム、それぞれの定義概念、およびそれぞれの使用シナリオ
静的マルチディスパッチと動的シングルディスパッチの概念
オーバーロードの概念と使用法
継承: インターフェースの複数実装、基本クラスの単一継承
抽象化、抽象クラス、インターフェース
詳細: メソッド カバレッジの概念と使用法
インターフェイス コールバック
8. 静的
静的プロパティは、日常の Java 開発でもよく使用されます。静的キーワードに関連する使用法を理解する必要があります。他のキーワードと同様に、abstract、final、および他のキーワードと組み合わせて使用できるかどうかなど、使用の組み合わせ。
マスターする必要がある主な内容は次のとおりです:
静的プロパティの定義と使用、およびクラスのロード時に初期化する方法
静的メソッドの定義と使用
定義と静的クラスの使用
static コードブロックの定義と初期化のタイミング
9. 基本的な知識のポイント
ここでは主に散在的で非体系的に分類された Java の知識のポイントをいくつか紹介します。日常の開発でもよく使われます。 このコンテンツには実際にはさらに多くの内容がありますが、ここではこれらを一時的に要約しました:
以下を含みます:equals、hashcode、string/stringbuffer、final、finalize、finalize
10. これはコレクション フレームワーク
です。マスタリーの部分に関しては、Java 開発を行う場合、コレクション フレームワークを使用する必要がないと言えますが、これは非常に重要です。ただし、ここでの知識ポイントは難しいものではありませんが、コレクションの内部実装を理解することが最善です。これは、さまざまなシナリオで問題を解決するための適切なフレームワークを選択するのに役立ちます。たとえば、10,000 個の要素を持つコレクションでは、多くの場合、判定操作が含まれており、コレクションの特性や内部実装を知っているため、正しい選択をするのは簡単です。
以下の内容がここに含まれます(同時実行関連は含まれません):
コレクションフレームワークのシステム: 基本コレクション、マップ
特定のコレクション実装の内容、リスト、セット、マップ固有の実装、内部構造、特別なメソッド、適用可能なシナリオなど
コレクション関連のツールクラスの使い方 コレクションなど
11. 例外フレームワーク
Java 開発では例外はそれほど重要視されていないかもしれません。一般に、例外が発生した場合は、直接スローすることも、何気なく処理することもでき、プログラムの全体的な動作に大きな影響を与えることはありません。ただし、エンタープライズ レベルの設計と開発では、例外の設計と処理の品質がシステム全体の堅牢性に関係することがよくあります。開発者にとって、優れたシステムの例外処理は、あちこちに散在する多くの例外処理ロジックを避けるために統合されるべきであり、システムにとっては、例外が制御可能であり、特定の例外が発生した後に対処する方法が存在する必要があります。したがって、例外フレームワークは非常に単純ですが、例外を適切に処理するには、Java の例外システムを理解する必要があります。
このパートで習得する必要のある知識ポイントはそれほど多くありません。主な知識ポイントは次のとおりです。
例外システム:
Throwable
Exception
RuntimeException
エラー
RuntimeException と一般的な例外、特定の処理メソッドなどの違い
12. Java IO
IO はファイルの読み取りと書き込みだけでなく、すべての入力と書き込みも含まれます。ソケットネットワークの読み取りおよび書き込みなどの出力操作。たとえば、標準の HTTP リクエストで Post のコンテンツを読み取ることも出力プロセスです。など...
IO の場合、Java は基本的な入力および出力関連の API を提供するだけでなく、いくつかの Reader、Writer、およびその他の API も提供します。操作の簡素化 は、特定の開発 (多数の IO 操作を伴うプロジェクト) では非常に重要であり、一般的な日常の開発 (ログ、一時ファイルの読み取りと書き込みなど) にも関与します。
ここでの主な知識ポイントは次のとおりです:
基本的なIOシステム:InputStream、OutputStream、Reader/Writer、ファイル読み取り、さまざまなストリーム読み取りなどを含む
NIOの概念、具体的な使用方法および使用シナリオ
13. マルチスレッドの同時実行性
マルチスレッドは一般に、Java では難しい領域であると考えられています。マルチスレッドは、特に多数の IO 操作がブロックされている場合に効果的に CPU 使用率を高め、システム全体の効率を向上させることができますが、適切に使用しないとシステムがあまり改善されないという諸刃の剣でもあります。改善されず、マルチスレッド間のデバッグなどの問題も発生します。
マルチスレッドには多くの内容がありますが、Java でマルチスレッドを初めて使用するために習得する必要がある知識ポイントを簡単に説明します。今後、使用シナリオを紹介する機会があります。いくつかの高度な機能について詳しく説明します。
マルチスレッドの実装と起動
呼び出し可能と実行可能の違い
同期ロック、リエントラントロックのそれぞれの特徴と比較
スレッドプール
将来の非同期実行結果を取得する通常の方法
同時実行パッケージ
lock
...
14 ネットワーク
Java は、TCP プロトコルと UDP を直接操作できる API も提供します。プロトコル。ネットワークのパフォーマンスを重視する必要がある場合は、TCP/UDP を直接通信に使用できます。 Tomcat などのソースコードを参照すると、これらの関連 API の使用方法がわかります。ただし、TCP が直接使用されることは一般的にはほとんどなく、処理には MINA や Netty などのフレームワークが使用されます。この領域についてはあまり開発されていないため、詳細は記載しません。
15. 時刻と日付の処理
ほとんどすべてのアプリケーションで、時刻と日付の処理をバイパスすることはできませんが、JDK8 より前の時刻関連 API の使用はフレンドリーではありません。当時はJodaなどのタイムフレームが利用可能でした。 JDK8 のリリース後、新しい時間 API は基本的に他のフレームワークの利点を統合し、直接使用できるようになります。
Java 開発者の場合、API を使用して時刻と日付を処理することに習熟する必要があります。
特定の知識ポイントは今後リストされなくなります。JDK8 の時刻と日付 API の使用法をまとめた特別な記事を今後書きます。
16.XML 解析/JSON 解析
実際、これら 2 つのコンテンツは J2SE にはありませんが、日常の開発、他のプログラムとの対話、および設定ファイルとの対話において、これらはますます切り離せないものになっています。
しかし、開発者にとって、XML/JSON 解析のいくつかの特定の原則と方法を理解できれば、特定のシナリオごとに適切な方法をより適切に選択して、プログラムをより効率的かつ堅牢にすることができます。
XML: DOM 解析と SAX 解析の基本原則と、それぞれに適用可能なシナリオを理解する必要があります。
JSON: Jackson、FastJson、Gson などのいくつかの一般的な JSON フレームワークの使用法を理解する必要があります。等
17. Maven の使用
Maven は Java の一部ではありませんが、Maven は革新的であり、Java 開発に大きな利便性をもたらします。依存関係の導入と管理から、開発プロセスの更新とリリース、さらにはバージョン更新に至るまで、Maven を使用すると複雑な開発プロセスが大幅に簡素化され、時間を大幅に節約できます。 Maven は Java 開発者の標準になっていると言えます。したがって、私は Maven を Java 開発者にとって必要な基礎知識であると考えています。将来的には、Maven の使用などの経験やスキルを追加する予定なので、ここでは詳細は説明しません。
18. ジェネリックス
これは、JDK5 で導入された新しい概念です。実際には、一般的なアプリケーションやビジネス開発の場合、これを使用するだけで便利です。ジェネリックの定義などの操作は間違いなく使用されますが、一般に、単純に使用できる限り、必要に応じてこの部分を詳しく見ることができます。
19. アノテーション
も jdk5 以降に導入されました。 Spring は最初から XML を標準設定ファイルとして使用する優れたフレームワークです。ただし、Spring 3 以降、特に spring-boot の登場以降、開発者にとって、XML 構成ファイルを簡素化するためのアノテーションの使用はますます一般的になり、XML 構成にかかる時間を大幅に節約できます。ただし、xml とは異なり、アノテーションがさまざまなクラスに分散しているため、すべての設定をグローバルに理解して管理できるため、すべての xml を完全に置き換える方法がないという欠点があります。一般の開発者の場合は、注釈を使用するだけで済みます。一部の公的組織の開発者は、注釈の定義と実装を理解する必要がある場合があります。必要に応じて詳しく調べることができます。
20.RMI
RemoteMethodInvocation は、Java 言語固有のリモート呼び出しインターフェイスで、比較的シンプルで使いやすいです。ただし、言語間のサポートが必要な場合は、Web サービスなどの他の方法を使用してサポートする必要があります。一般に、プログラムでは RMI を使用する必要はありませんが、特定の状況では RMI を使用してプログラムのリモート開始と停止を制御しました。
21.JNI
Java でローカル インターフェイス メソッドを呼び出すことができる Java ネイティブ インターフェイスは、通常、C/C++ コードの呼び出しに使用されます。注意する必要があるのは、Java で so/dll ファイルをロードするパスの問題です。インターフェイスの呼び出し自体は複雑ではありませんが、必要なローカル インターフェイス ライブラリがロードされているかどうかを確認するのに時間がかかることがよくあります。
上記は Java の 21 の技術ポイントと知識ポイントをまとめたものです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。