コンテンツ:
- セクション 0 - Java コア
- ツール
- JDK API
- Java 8 の新機能
- SQL、データベース、JDBC
- フレームワーク
- テスト用のライブラリとフレームワーク
- サービスライブラリ
- APIクライアント
- デザインパターン
- 追加の知識
0. セクション 0 - Java コア
Java を学ぼうとしているだけでどこから始めればよいかわからない人がここに来た場合に備えて、記事にセクション 0 を挿入しました。Java Core は初心者でもよく知っておくべきものです。つまり、基本的なことを知り、特定の問題を解決するためにその言語が何を提供するのかを理解し、簡単な場合にはその知識を適用できるようになります。JavaRush で Java Core を練習できます。まだ行っていない場合は、ぜひコースを受講してください。さて、他の皆さんのために、Java Core の主なマイルストーンを思い出してください。- 基本的な Java 構造体、演算子、およびデータ型
- OOP と Java でのその実装
- 例外
- Java コレクション
- ジェネリック
- マルチスレッド化
1. ツール
IDE または統合開発環境
現代の開発者の主なツールは IDE です。現在、市場には多数のプラグインが存在しますが、プロの Java 開発では通常、名前は 2 つだけです。これは、長年にわたって手のひらを握ってきたプラグインと、近年積極的に Eclipse に取って代わるIntelliJ IDEAに基づいて構築された無料のEclipseです。また、Ultimate バージョンへのサブスクリプションが必要であるという事実にもかかわらず、これは、専門家にはお金がかかります。JavaRush コースでは Community IntelliJ IDEA の無料版を使用しますが、これには Ultimate と比較して特定の機能制限があることに注意してください。「IDE を知っている」というフレーズは、開発環境の基本的な機能に精通しており、ファイルのコンパイル、実行、デバッグとテスト、およびコードのリファクタリングの方法を知っていることを意味します。ホットキーを使いこなすことは、作業をスピードアップするのに役立ちます。怠けずに、数時間かけて知らなかった IDE の機能について学び、実際に使い始めてください。デバッグは非常に便利なスキルなので、無視しないでください。これらすべてのアクションは、作業の速度と品質を大幅に向上させるのに役立ちます。自動組立用ツール
現在、Java プロジェクトでは、Maven や Gradle などのツールが使用されることがほとんどです。それらを徹底的に研究する必要はありませんが、それらが互いにどう違うのか、何に基づいているのか、(Gradle の) タスクとは何か、Maven の目標を伴うフェーズは何かを理解することは役に立ちます。システムについて読んで、そこにいくつかの小さなプロジェクトをデプロイするだけで十分です。これは非常に簡単に実行でき、実際の作業条件で詳細を理解できるようになります。バージョン管理システムとオンライン ホスティング サービス
バージョン管理システムは、プログラマーが共通のプロジェクトを「壊す」ことなくチームで作業し、さまざまな人が作成した異なるコード部分を同期し、失敗した更新をロールバックして新しい更新を追加するのに役立ちます。最も一般的なのは 2 つのバージョン管理システムです。そのうちの 1 つは分散型で Git と呼ばれ、もう 1 つは集中型で SVN (別名 Subversion) と呼ばれます。現在、Git は事実上の標準です。このシステムの操作はより便利かつ簡単で、すべての IDE (SVN も同様) でサポートされています。Git の操作はすぐに簡単に試すことができます。幸いなことに、このトピックに関する情報はインターネット上にたくさんあります。たとえば、インタラクティブな教科書GitHowTo はロシア語で利用できます(非常にすぐに読み終わります)。初心者の開発者にとって、バージョン管理システムのオンライン ホスティング サービスを習得することは非常に重要です。ほとんどの場合、それらは Git に基づいており、Git プラットフォームと呼ばれます (ただし、一部のプラットフォームは異なるバージョン管理システムで動作します)。その中で最も人気があるのは GitHub です。BitBucket や GitLab も非常に一般的です。これらのシステムは、コードの保存と取得に役立ち、Git で実行できることをコマンド ライン経由ではなくインターフェイス経由で実行することもできます。GitHub を使用すると、コードをチェックして問題の解決策をサイト上で直接提供することもできます。そこでは、他の人のオープンソース プロジェクトを見つけて、それを改善するための独自のソリューションを提供してみることもできます。本質的に、GitHub は開発者向けの一種のソーシャル ネットワークです。まだ作成していない場合は、必ず GitHub でアカウントを作成し、そこでプロジェクトをホストしてください。GitLab と BitBucket についてもお読みください。時間があれば、無料バージョンがあるので試してみてください。ちなみに、これらのプラットフォームはすべて最新の IDE と完全に統合されています。2.JDK API
このセクションでは、最新の Java 開発者が自信を持って知っておく必要がある JDK API に焦点を当てます。プログラマーにとって、これらのライブラリのソース コードを時々調べてナビゲートし、いつ、そしてなぜ使用する必要があるのかを理解することは害にはなりません。副作用: これらの API に精通していれば、面接に合格するのがはるかに簡単になる可能性があります。 Java Collection Framework は Java 言語の最も重要な API の 1 つであり、すべての開発者はそれを知っておく必要があります。これは、インターフェイスの階層と、リスト、リンク リスト、セット、スタック、キュー、ハッシュ テーブルなどの Java の標準データ構造の実装を表します。開発者は、ArrayList、HashMap、HashSet、LinkedHashSet、TreeSet などのクラスをよく理解し、それらのプロパティについて知っている必要があります。特に、特定のコレクションの標準操作 (インデックス、検索、挿入、削除) にかかる時間とメモリのコストを理解し、これに基づいてプロジェクトに正しく適用する必要があります。Java のコレクションは非常に適切に実装されていますが、必要に応じて、開発者は独自の実装を提供できます。コレクションに精通したプログラマは、すでに作成されたクラスのロジックを拡張または再定義したり、すべてを最初から実装したりできます。Java 同時実行 API
Java はもともと並列プログラミングをサポートするように設計されており、バージョン 5.0 以降、この言語には並列スレッド用の高レベル API が含まれています。したがって、有能な Java 開発者は、マルチスレッドをよく理解し、 java.util.concurrent.*パッケージの主要な API を理解している必要があります。少なくとも、スレッド、実行可能、オブジェクトのロック、同期とは何かを理解し、明確に理解する必要があります。デッドロック、ライブロック、競合状態の概念とその対処法を必ず理解してください。自信を持って使用するには、java.util.concurrent.* から Semaphore、CyclicBarrier、CountDownLatch、Phaser、Exchanger<V>、CompleteableFuture などのシンクロナイザーを学習してください。Callable インターフェイスと Future インターフェイスも同様です。Java I/O API
初心者の開発者は、Java I/OおよびJava ノンブロッキング I/Oの詳細な学習を無視することがよくあります。しかし無駄でした。これらの Java API はスレッドの操作を容易にし、実際のアプリケーションで定期的に使用されています。特に、Java IO API のコアである java.io パッケージの File、InputStream、OutputStream、Reader、Writer などのクラスです。Java ノンブロッキング I/O (java.nio) は、高性能 I/O 操作を実装するために設計されたアプリケーション プログラミング インターフェイスのコレクションです。これらには、特に ByteBuffer、FileChannel、Selector などが含まれます。苦労してこれらの API を理解すれば、後悔することはありません。デバイスクラスオブジェクト
Object スーパークラスを理解すると、ある意味「ネイティブ Java スピーカー」になり、OOP 構造と多くのプロセスをよりよく理解できるようになります。java.lang.Object クラスは、クラス階層の最上位にあります。何が起こっているのかをよりよく理解するだけでなく、クラスのメソッドを知ることで面接がはるかに簡単になります。面接官は、Object クラスとそのオブジェクトを使って候補者をテストするのが大好きです。3. Java 8 の新機能
Java 8 のリリースから時間が経過し、他の番号付きアップデートがすでに登場しているにもかかわらず、象徴的なものとなったのは 8 番目のバージョンでした。これは、Java でのプログラミングのアプローチを簡素化し、ある意味では変化させる重要なイノベーションを導入しました。ラムダ式の使用方法、Java 8 の Stream API および新しい日付と時刻 API を理解する必要があります。4. SQL、データベース、JDBC
仕事で SQL クエリやデータベースに遭遇しない Java 開発者はほとんどいません。したがって、SQL データベースとリレーショナル データベースとは何か、それらがどのように機能するかを理解し、2 つのテーブルを結合する簡単なクエリを作成できることが重要です。トレーニングのために、 PostgreSQLやMySQLなどの DBMS の 1 つを操作してみることができます。また、非リレーショナル データベース、noSQL アプローチに関する基本的な知識、およびドキュメント指向 DBMS MongoDBについての表面的な知識を得るのもよいでしょう。Pure Java でデータベースを操作するには、 JDBC標準と同じ名前の APIを使用できます。これは、JDK に含まれる java.sql パッケージとして実装されます。現在、純粋な形式で使用されることはほとんどありませんが、古いサポート アプリケーションでよく使用されており、より現代的で一般に受け入れられているツールは、この標準に基づいていることがよくあります。5. フレームワーク
今日のジュニア Java 開発者の要件の中には、「Spring、Hibernate、Spring Boot の知識」が増えています。これらのテクノロジーを独学で学ぶのは非常に困難な作業ですが、それでも、特に表面的なレベルでは可能です。やっていくうちに理解が深まります。それで。 最近では、Java で構築されたほぼすべてのアプリケーションが Spring Framework を使用しています。この強力なフレームワークは、アプリケーションを構築するためのバックボーンである特定の座標系を提供します。Spring アプリケーションはテストと保守がはるかに簡単です。これもすべて依存性注入のおかげです。 Java 開発者にとってもう 1 つの最も重要なフレームワークは Hibernate です。JPA (Java Persistence API) 仕様を実装しており、オブジェクト リレーショナル マッピング (ORM) の問題を解決します。ほとんどの Java アプリケーションはデータベースと対話しますが、リレーショナル データベースについて話している場合、Hibernate なしでデータベースを操作するのは不便です。このフレームワークは、開発者に多くの重要な機能、特にすぐに使用できるキャッシュとトランザクションを提供します。これにより開発者はアプリケーション ロジックの開発に集中できるようになり、プログラマーはリレーショナル データベースを操作する際の多くの低レベルのタスクから解放されます。 。これにより、開発者の生産性が大幅に向上します。 このフレームワークにより、疎結合された既製コンポーネントを使用して、モデル - ビュー - コントローラー パターンに従ってアプリケーション開発が保証されます。このパターン (設計パターンについては後述します) と Spring MVC のロジックを学習してください。実際にはかなり頻繁に使用されます。 適切なスキルがあれば、Spring を使用して Java アプリケーションを簡単に作成できます。さらに、Spring Boot を使用すると、Spring に基づいた Java アプリケーションを簡単に作成できます。Spring Boot を使用すると、最小限の労力で起動できる本格的な Enterprise Spring アプリケーションを簡単に作成できます。自動構成により、Spring アプリケーションの構成に伴う面倒な作業のほとんどが排除されます。6. テスト用のライブラリとフレームワーク
将来の開発者の中には、コードのテストは自分たちの関心事ではなく、テスターと呼ばれる特別な人々の関心事であると確信している人もいます。実際には、これは必ずしも当てはまりません。テスト、特に単体テスト (最も一般的には単体テストと呼ばれます) は、すべてのプログラマーにとって非常に重要なスキルです。さらに、職務を開始したばかりの新人は、誰かのコードを単体テストでカバーする任務を負うことがよくあります。したがって、JUnit ライブラリを学習し、コードの単体テストを作成する習慣を身に付けることを強くお勧めします。また、Mockito フレームワークもチェックしてください。JUnit と併用して疑似依存関係クラスを作成できます。7. サービスライブラリ
Java には、開発者が直面するほぼすべての問題の解決に役立つ膨大な数のサービス ライブラリがあります。それらすべてを学ぶことは不可能ですし、そうすることに特に意味はありません。しかし、それらをナビゲートすることは素晴らしいアイデアです。ここでは、実際によく使用されるもののいくつかを取り上げます。ロギング用のライブラリ
まず第一に、log4jとSlf4jについて言及できます。これらのライブラリは、Java アプリケーションの実行中に発生する日常的なロギング操作の実装を非表示にするように設計されています。JSON用のライブラリ
JSON は、クライアントからサーバーに情報を転送するための形式であり、現在最も一般的に使用されている形式です。JSON で動作する優れたライブラリがいくつかありますが、最も人気のあるライブラリはJacksonとgoogle-gsonです。グーグルグアバ
Guavaは、Google によって開発されたコア Java ライブラリを含むプロジェクトです。ここでは、新しいタイプのコレクション (マルチマップ、マルチセットなど)、不変コレクション、グラフ、関数型コレクション、並列処理、I/O、ハッシュ、文字列処理などのユーティリティを見つけることができます。Apache Commons
Commons は、さまざまな目的に役立つ多くの Java ユーティリティを含む巨大なプロジェクトです。したがって、Apache Commons ライブラリは、Tomcat、Hibernate、およびその他の多くの大規模プロジェクトの基礎となっています。Apache Commons には多数のライブラリがあります。I/O 操作を簡素化する Commons IO、csv ファイルを操作する Commons CSV、複雑な数学的および統計的な操作と計算を操作する Commons Math、コマンド ライン引数を分析する Commons CLI について触れてみましょう。8. APIクライアント
REST は、人間が判読できる形式でネットワーク経由でリソースにアクセスするためのエンドポイントの命名スタイルです。最新の Java 開発者は、REST のイデオロギーを理解し、 REST クライアントを作成するための非常に便利なライブラリである Spring RestTemplateについても知っておくとよいでしょう。9. デザインパターン
初心者の開発者がデザイン パターン、つまり Java プログラミングのマナーのルールに精通していて、それを実際に適用する方法さえ知っていれば、労働市場での自分の価値は即座に高まります。初心者は学習中に複雑なアプリケーションをほとんど作成しないため、パターンを過小評価することがよくあります。ただし、パターンが本格的なプロジェクトに適用されていない場合、コードの保守と適応は非常に困難な作業になります。怠けずにパターンを研究し、それを個人的なプロジェクトに適用してください。あなたの将来の雇用主はこれに非常に感謝するでしょう。- Java のデザインパターン
- デザインパターン、パート 2
- デザインパターン: シングルトン
- デザインパターン: FactoryMethod
- デザインパターン: AbstractFactory
- デザインパターン「戦略」
10. 追加の知識
アルゴリズムとデータ構造
「アルゴリズムとデータ構造」は、工科大学で教えられるコース全体の名前です。さまざまなデータ構造を構築するための理論的基盤が明らかになります。そして実践的なクラスでは、データの入力と取得、検索と並べ替えなど、データの操作方法を学びます。実はこの言葉の「アルゴリズム」とは、まさに並べ替えや検索のことを指します。長年にわたり、コンピューター科学者は多くのアルゴリズムを開発してきました。それらの中には、実装が比較的簡単であるにもかかわらず、運用上あまり効果的ではないため、本質的に教育的なものもあります。たとえば、動作が遅くなり、大規模なデータ プールでは顕著になる可能性があります。または、大量のメモリを消費します。他のアルゴリズムも非常に効果的であることが証明されています。ほとんどのプログラミング言語の公式ライブラリに組み込まれているほどです。したがって、今日ではそのようなアルゴリズムを独自に開発する必要はありません。彼らがどこにいるのかを知るだけで十分です。サーブレット
サーブレットは、ユーザーのリクエストを処理する方法です。現在、これらはどこでも使用されているわけではありませんし、常に使用されているわけでもありませんが、それらについてのアイデアを得るには役立ちます。HTMLとCSS
誰もがレイアウトの基本を知っておく必要があります。この知識は非常に簡単に得られるので、まだ得ていない場合は、数日かけてこの作業に取り組んでください。同時に、より複雑なトピックからは離れます。XML
Extensible Markup Language は、以前は Java 開発で広く普及していました。徐々に JSON に置き換えられつつありますが、XML は現在でも使用されています。学習するのは難しくないので、この言語に少し注目してみてください。JavaScript
開発者を対象とした調査によると、フロントエンド開発にまったく関係のない人でも、JavaScript でスクリプトを作成することがあります。この言語の基本を理解することは良いマナーのルールと考えられるので、怠けずにこの言語について読んで、12 ~ 2 個のスクリプトを作成してください。冗長にはなりません。
GO TO FULL VERSION