Javaを使用した経験

零下一度
零下一度オリジナル
2017-06-28 09:09:001658ブラウズ

この記事を書く目的は、主に Java の基本的な知識ポイントに関連した、長年にわたる Java の使用経験の一部を要約することです。そのため、Java プログラマーを始めたばかりの人やこれから参入する予定の人にもそれを共有したいと考えています。 Java 開発: この業界に初めて携わる方に、Java をより良く学び、使用できるよう、経験を積んでいただければ幸いです。
今回紹介した主な内容はJ2SEに関する部分ですが、今後はJ2EE関連の内容やJavaの各種フレームワークについても紹介していきます。
長年 Java 開発に携わり、Java 開発者にインタビューした経験も踏まえると、J2SE の主なことは次の内容を習得することだと思います。

1. JVM 関連 (各バージョンの機能を含む)

Java を初めて使用する人にとって、JVM 関連の知識は必ずしも深い理解は必要ありません。内部の概念を簡単に理解するだけで十分です。しかし、Java の経験が 3 年以上ある上級開発者にとって、JVM を知らないことはほとんど受け入れられません。
JVM は Java を実行するための基盤です。JVM について何も知らない人が Java 言語を完全に理解できるとは信じられません。 Java の経験が 3 年以上ある開発者にインタビューすると、JVM についてはほぼ必ず聞かれる質問になります。もちろん、技術力の質を決定する面接の質問は JVM だけではありませんが、Java 開発能力のレベルを証明することもできます。
JVMのカテゴリーで習得すべき知識は、
JVMのメモリモデルと構造
GCの原理、パフォーマンスチューニング
チューニング:スレッドダンプ、メモリ構造の解析
クラスバイナリバイトコード構造、クラスローダーシステム 、クラスロードプロセス、インスタンス作成プロセス
メソッド実行プロセス
Javaバージョンのメジャーアップデートによって提供される新機能(簡単に理解する必要があります)

2. Java操作(基本的な必須)

これは非常に簡単に思えるかもしれませんが、そうでない人はいませんJava プログラムの実行方法がわかりませんか?しかし、多くの場合、単純に IDE を通じて Java プログラムを実行するだけです。基盤となる IDE はどのようにして Java プログラムを実行するのでしょうか。多くの人は理解できません。
この知識ポイントは、Java 開発者が初めて Java を学習する場合、最初のステップは、Java プログラムをコマンドラインで実行する方法を教えることです。しかし、多くの人は Java の学習を終えます。 IDE を使用すれば、これらすべてを忘れることができます。なぜこれを知る必要があると強調するのですか? Java の最も純粋な起動方法を理解すると、その時点で起動されたディレクトリの数、実行の名前付け、パラメータの内容、欠落している項目があるかどうかを分析できます。起動に問題があったとき。 これは、実際の開発中の環境に関連する可能性のある奇妙な問題を解決するのに役立ちます。
ここでマスターする必要がある知識は次のとおりです:
javac は Java ファイルをクラス ファイルにコンパイルします
Java コマンドの使用法、コマンドラインでパッケージを使用して Java クラスを開始する方法
Java プログラムに含まれるさまざまなパス (クラスパス、 java.library.path 、Java が実行されているホーム ディレクトリなど)

3. データ型

これについてはあまり言うことはありません。これは、基本的な型とオブジェクト型を習得することに他なりません。ジャワ。ボックス化やボックス化解除など、JDK が自動的に変換する方法について詳しく学び、ボックス化後に型の同等性を判断しないように注意することができます
主な知識ポイント:
基本型: int、long、float、double、boolean、. 。 。
対応するオブジェクト型:Integerなどの基本型への変換、ボックス化、アンボックス化
オブジェクト型:equals、hashcode
String型の特徴

4.これに関しては開発者Java のオブジェクト指向機能の基礎となる、クラスとインスタンスの概念とそれらの違いを理解する必要があります。主な知識ポイントは次のとおりです: クラスとインスタンスの概念

インスタンスの作成プロセス:

1. 継承なし: メモリ空間の割り当て、変数の初期化、コンストラクターの呼び出し
2. 継承あり:静的アクションの処理、メモリ空間の確保、基底クラス→サブクラスからの変数の初期値定義、定義時の初期化処理、コンストラクタメソッドの実行
注意点:
静的プロパティ等は派生します基本クラスから-> ; サブクラスの初期化
デフォルトの引数なしコンストラクターに関連する機能


これは、Java カプセル化機能の基礎でもあります。クラス、メソッド、フィールドのプライベート 変更効果

6. プロセス制御

Javaプロセス制御の基礎 一部の構文は必ずしも一般的に使用されるわけではありませんが、それらを理解し、適切な場所で使用する必要があります。
マスターする必要があるのは:

if、switch、loop、for、while およびその他のプロセス制御構文

7 オブジェクト指向プログラミングの概念

これは、Java 開発者が習熟する必要がある Java の中心的な概念です。 Java の多くの機能や知識ポイントは、Java オブジェクト指向プログラミングの概念に関連しています。私の理解では、優れた開発者は、これらの機能 (知識ポイント) 自体を理解する必要があるだけでなく、これらのオブジェクトが Java のオブジェクト指向プログラミングの概念にどのように反映されているかを知る必要があります。これは、開発者が Java 開発を習得するのにさらに役立ちます。言語、および他のオブジェクト指向プログラミング言語。以下に主な知識のポイントを示します。
オブジェクト指向の 3 つの主要な特性: カプセル化、継承、ポリモーフィズム、それぞれの定義概念、どの特性が反映されるか、およびそれぞれの使用シナリオ
静的マルチディスパッチ、動的単一ディスパッチの概念
オーバーロードの概念と使用法
継承: インターフェイスの複数の実装、基本クラスの単一継承
抽象化、抽象クラス、インターフェイス
ポリモーフィズム: メソッド オーバーライドの概念と使用法
インターフェイス コールバック

8. Static

静的プロパティは日常のJava開発でもよく使われますが、キーワードと併用できるかどうかなど、staticキーワードに関連した使い方や他のキーワードとの併用方法を理解しておく必要があります。抽象や最終など。
マスターする必要がある主な内容は次のとおりです:
静的属性の定義と使用法、およびクラスのロード時の初期化方法
静的メソッドの定義と使用法
静的クラスの定義と使用法
定義と初期化のタイミング静的コード ブロックの説明

9. 基本的な知識のポイント

ここでは主に、分散していて体系的に分類されていない Java の知識のポイントをいくつか紹介します。日常の開発でもよく使われます。 実際、この作品には多くの内容が含まれており、ここではそれらを一時的に要約しました:
含まれるもの:
equals、hashcode、string/stringbuffer、final、finally、finalize

コレクションフレームワーク

これ。これは、Java 開発を行う際にコレクション フレームワークを使用する必要がないと言えます。ただし、ここでの知識ポイントは難しいものではありませんが、コレクションの内部実装を理解することが最善です。これは、さまざまなシナリオで問題を解決するための適切なフレームワークを選択するのに役立ちます。たとえば、10,000 個の要素を持つコレクションでは、多くの場合、contains の実行が必要になります。コレクションの特性や内部実装を知っていれば、正しい選択をするのは簡単です。
これには以下の内容が含まれます(並行性関連は含まれません):
コレクションフレームワークの体系:基本コレクション、マップ
特定のコレクション実装の内容、リスト、セット、マップ固有の実装、内部構造、特別なメソッド、適用可能なシナリオなど
コレクション関連のツールクラスの使い方 コレクションなど

11. 例外フレームワーク

Java開発では例外はあまり重視されていないかもしれません。一般に、例外が発生した場合は、直接スローすることも、何気なく処理することもでき、プログラムの全体的な動作に大きな影響を与えることはありません。ただし、エンタープライズ レベルの設計と開発では、例外の設計と処理の品質がシステム全体の堅牢性に関係することがよくあります。開発者にとって、優れたシステムの例外処理は、あちこちに散在する多くの例外処理ロジックを避けるために統合されるべきであり、システムにとっては、例外が制御可能であり、特定の例外が発生した後に対処する方法が存在する必要があります。したがって、例外フレームワークは非常に単純ですが、例外を適切に処理するには、Java の例外システムを理解する必要があります。
この部分でマスターする必要のある知識ポイントはそれほど多くはありません。主に、
例外システム:
Throwable
Exception
RuntimeException
Error
RuntimeExceptionと、一般的なException、特定の処理メソッドなどの違いです

12。 Java IO

IO Javaでは、単にファイルの読み書きだけでなく、ソケットネットワークの読み書きなど、あらゆる入出力操作が含まれます。たとえば、標準の HTTP リクエストで Post のコンテンツを読み取ることも出力プロセスです。など...
IO の場合、Java は基本的な入力および出力関連の API を提供するだけでなく、いくつかの Reader、Writer およびその他の API を簡素化する API も提供します。これは、特定の開発 (多数の IO 操作を伴うプロジェクト) においても重要であり、一般的な日常の開発 (ログ、一時ファイルの読み取りと書き込みなど) にも関与します。
ここでの主な知識ポイントは以下のとおりです:
基本的なIOシステム:InputStream、OutputStream、Reader/Writer、ファイル読み取り、各種ストリーム読み取りなどを含む
NIOの概念、具体的な使用方法と使用シナリオ

13. マルチスレッドの同時実行性

マルチスレッドは Java では一般に難しい分野だと考えられています。マルチスレッドは、特に多数の IO 操作がブロックされている場合に効果的に CPU 使用率を高め、システム全体の効率を向上させることができますが、適切に使用しないとシステムがあまり改善されないという諸刃の剣でもあります。改善されず、マルチスレッド間のデバッグなどの問題も発生します。
マルチスレッドには多くの内容があります。Java でマルチスレッドを初めて使用するために習得する必要がある知識ポイントを簡単に説明します。今後、その使用シナリオを紹介する機会があります。いくつかの高度な機能について詳しく説明します。
マルチスレッドの実装と起動
呼び出し可能と実行可能の違い
同期化、再入可能ロックのそれぞれの特性と比較
スレッドプール
実行結果を取得する将来の非同期方法
同時実行パッケージ
ロック

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

Java言語特有のリモート呼び出しインターフェースであるRemoteMethodInvocationは、比較的シンプルで使いやすいです。ただし、言語間のサポートが必要な場合は、Web サービスなどの他の方法を使用してサポートする必要があります。一般に、プログラムでは RMI を使用する必要はありませんが、特定の状況では RMI を使用してプログラムのリモート開始と停止を制御しました。

21.JNI

Javaでローカルインターフェースメソッドを呼び出すことができるJava Native Interfaceは、一般にC/C++コードの呼び出しに使用されます。注意する必要があるのは、Java で so/dll ファイルをロードするパスの問題です。インターフェイスの呼び出し自体は複雑ではありませんが、必要なローカル インターフェイス ライブラリがロードされているかどうかを確認するのに時間がかかることがよくあります。

上記は、私の見解の一部と、これらの基本的な Java の知識ポイントおよび技術的なポイントの紹介にすぎません。これらの内容は、私が長年にわたって Java を使用してきたことを要約したものであり、以下のような人たちにアドバイスを提供できればと思っています。 Java に触れたばかり、または Java から開発を計画している ある程度の経験があり、回り道をして貴重な時間を無駄にすることを避け、Java をより効率的に学習して使用したいと考えています。内容にはまだ不完全な点がいくつかありますので、今後の記事で追加していきます。私の個人的な能力には限界があるので、もちろん間違いや省略があるかもしれませんが、修正を歓迎し、一緒に議論し、この記事が本当に助けを必要とする人々に役立つことを願っています。

Javaを学習中の学生の皆様、ご注意ください! ! !

以上がJavaを使用した経験の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。