すべての Java プログラマーは、ソフトウェア開発の基本を理解している必要があります。それでは、何が「基本」であるかを見てみましょう。
1. 基本的なアルゴリズム
Java に限らず、プログラミングを学び始めるときに最初に取り組むべきことは、基本を理解することです。たとえば、アルゴリズム。
それらのアルゴリズムは無限にあります。できるだけ多くのアルゴリズムを学ぼうとして人生の何年も費やすべきではありません。それらのほとんどは役に立ちません。必要最低限の知識は「Grokking Algorithms」という本から得ることができます。始めるにはこれで十分ですが、必要に応じて、Robert Sedgewick と Kevin Wayne の著書『Structures and Algorithms』または『Algorithms in Java』から学ぶこともできます。
2. Java 構文
アルゴリズムの基礎を学んだ後、Java 構文を学ぶ必要があります。結局のところ、あなたは Java プログラマーになるために勉強しているのですよね? CodeGym コースはこれに最適です。
数えきれないほどのタスクを実行するうちに、Java 構文を習得し、ためらうことなく、まるで母国語であるかのように Java コードを書いたり読んだりできるようになります。
実践だけでなく、自分が何をしているのかを理解するために理論も見る必要があります。これを行うには、本を読むことができます。たとえば、次のいずれかです。
- 「ヘッドファーストJava」、
- 「Java for Dummies」バリー・バード著。
- ハーバート・シルト著「Java: 初心者ガイド」。
これらの本を読んだ後は、より難しい本に取り組むことができます。
- 「Java で考える」ブルース・エッケル、
- 「Effective Java」Joshua Bloch著;
- Herbert Schildt著「Java: The Complete Reference」。
最後の 3 冊は初心者にとって読みやすいものではありませんが、Java 理論の強固な基礎を提供します。
3. デザインパターン
デザイン パターンは、頻繁に遭遇する状況で問題を解決する、特定の反復可能なパターンです。これらには、自尊心のあるすべてのプログラマーが知っておくべき基本的で単純なパターンが含まれています。このトピックを理解するには、「Head First Design Patterns」という本を読んでください。
基本的なデザインパターンをわかりやすく解説しています。ただし、この本では Java について多くのことが述べられているため、この本を読むときにはこのプログラミング言語に堪能であることも必要になります。
パターンについてさらに詳しく知りたい場合は、Gang of Four ( Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides ) の「Design Patterns: Elements of Reusable Object-Oriented Software」を読むこともできます。このトピックを学習すると、コード内のほぼあらゆる場所にパターンが見られるようになります。
これは面接で人気の質問であるため、特に Spring で使用されるパターンに注意してください。
4. プログラミングパラダイム。コードのクリーンさ
標準的なデザイン パターン以外にも、注意すべきさまざまな原則とパラダイム (SOLID、GRASP) があります。
コードをクリーンで読みやすい状態に保つ必要もあります。すべてについては、このトピックについて知っておく必要があります。Robert Martin の Clean Code を参照するか、Steve McConnell の「Code Complete」を参照してください。
5. SQL
次のステップは、リレーショナル データベース用の言語である SQL を学習することです。
データベースは、Web アプリケーションで使用される情報 (データ) が保存される場所です。データベースは複数のテーブルで構成されます (携帯電話のアドレス帳が簡単な例です)。
Java 開発者は、Java アプリケーションだけでなく、Java アプリケーションが対話するデータベースやそのデータの保存場所にも責任を負います。
リレーショナル データベース (最も一般的なタイプ) では、すべての対話は構造化照会言語 (SQL) と呼ばれる特別な言語を通じて行われます。
このトピックを理解するには、次の本のいずれかを読むだけで済みます。
- 「Learning SQL」アラン・ビューリュー著;
- クリス・フェヒリー著「SQL」。
- リン・ベイリー著「Head First SQL」。
でも、理論なしで実践しても効果はありませんよね?また、面接では SQL の知識をテストされることが予想されます。面接官は多くの場合 (ほぼ常に)、SQL クエリの作成を伴う 1 つまたは 2 つのタスクを与えます。
したがって、自分自身をよく見せるためには、実践的な SQL スキルを磨くことが非常に重要です。
6.MySQL/PostgreSQL
SQL 言語を学習した後は、特定のデータベース実装に慣れる必要があります。データベースによっては、一部のコマンドが大幅に異なる場合があります。そして、データベースの機能にはかなり顕著な違いがあります。
最も一般的なリレーショナル データベースは MySQL と PostgreSQL です。MySQL ははるかにシンプルですが、PostgreSQL はより幅広い機能を備えています。少なくとも 1 つを理解していれば、始めるのに十分です。
グーグルのスキルを活用すれば、データベースの実装を学ぶことができます。YouTube で関連する記事やチュートリアルを見つけてください。答えが必要な質問に対して適切な検索クエリを作成する能力を養う必要があります。結局のところ、プログラマーとは、グーグルの黒帯を持っている人のことです。
7.Maven/Gradle
Gradle または Maven フレームワークのいずれかを学習する必要があります。これらはプロジェクトを構築するためのものであり、あなたにとって Java は、いくつかのクラスを含むタスクのためだけでなく、本格的なアプリケーションを作成するための言語でもあります。
プロジェクトのビルド方法、ビルド ステージとは何か、必要な外部ライブラリとサードパーティ コードをロードする方法などを理解する必要があります。
Gradle の方が新しく、より簡潔であるにもかかわらず、ほとんどの場合、Maven が使用されます。したがって、Maven のビルド ライフサイクルには特に注意してください。
8.Git
Git は分散バージョン管理システムです。このテクノロジーにより、開発者は互いに干渉することなく単一のアプリケーションで共同作業することができます。
もちろん、他のバージョン管理システムもあります。たとえば、Subversion。ただし、Git は最も広く使用されており、Git を操作できる必要があります。オンラインで見つけることができる Git に関する多くの記事に加えて、YouTube には、このテクノロジーを段階的に習得するのに役立つ十分なビデオがあります。
最初は、何らかの GUI 実装ではなく、コマンド ラインから Git を使用することをお勧めします。これは、すべてをコマンドを使用して実行する必要があるためです。面接では、いくつかの Git コマンドについて質問されることが多いため、それらを書き留めて近くの場所に保管しておくことをお勧めします。
9.JDBC
このテクノロジーは、Java アプリケーションとリレーショナル データベースを接続します。基本については、JDBC チュートリアルを読んでください。
ネイキッド JDBC を直接使用する人はもう誰もいませんが、JDBC を説明し、基本的な例を提供する記事はたくさんあります。
10.JPA。休止状態
JPA は、JDBC と同様に、Java アプリケーションとデータベース間の接続を確立する方法です。しかし同時に、JPA はより高いレベルのテクノロジーであるため、より使いやすくなります。
ただし、JPA は単なる仕様であり、実装ではありません。具体的な実装が必要です。それらは数多く存在しますが、JPA の理想に最も近く、最も人気があり、最も開発されているのは Hibernate です。
ソフトウェア開発のキャリアの中で、このテクノロジーに何度も遭遇することになるでしょう。したがって、記事を読んでこのテクノロジーに慣れることに加えて、たとえば「Java Persistence API」などの書籍を読むことを検討する価値があるかもしれません。
11. 春
Java 開発者になると、Spring は単なる言葉ではなくなります。このフレームワークを知ることは、Java 構文を知ることと同じくらい重要になりました。Spring には兄弟、つまり Java EE があると言えます。しかし、Java EE は時代遅れであり、新しいプロジェクトでは使用されなくなりました。
現在、圧倒的多数の Java 開発者は Java-Spring 開発者であるため、いくつかの基本的な Spring テクノロジを知っていることが必須です。
Spring は単なるフレームワークではなく、フレームワークのフレームワーク全体です。
これは Spring が提供するフレームワークのサブセットにすぎません。初心者の場合は、そのうちのいくつかを知っていれば十分です。
スプリングコア
Spring とは何か、つまり Spring コンテナー、Bean、DI、IoC などについてすべて理解できるように、これを最初に置く必要があります。いわば、Spring を使用する哲学そのものを理解するためです。Spring フレームワークのさらなる研究は、このベースの上に構築されます。おそらく、新しく学んだすべてのテクノロジを徐々に組み込むことができる独自の小さなアプリケーションを作成する必要があります。
春のJDBC
先ほど、データベース接続を作成するためのテクノロジとして JDBC について説明しました。一般に、プロジェクトではこのテクノロジを「裸で」使用することはもう見られないため、JDBC を学習する必要はないと結論付けることができます。これはまったく正しい態度ではありません。
JDBC を直接 (直接) 使用することを検討することで、テクノロジーをより低いレベルで確認し、その問題と欠点を理解することができます。Spring JDBC の学習を始めると、このフレームワークが正確に何を改善し、最適化し、隠しているのかがわかるでしょう。
春の休止状態
ネイキッド JDBC の状況と同様に、このフレームワークは既存のテクノロジー (この場合は Hibernate) を利用します。Spring なしで Hibernate の使用を検討すると、Spring Hibernate が提供する利点を確実に実感できるでしょう。
春JPA
先ほど JPA について説明し、さまざまな実装があるものの、それは単なる仕様であると述べました。これらの実装の中で、Hibernate が最も理想に近い実装です。
Spring には、内部で Hibernate を使用する独自の理想的な JPA 実装があります。これは JPA 仕様の理想に可能な限り近いものです。
Spring JPAと呼ばれます。一言で言えば、データベースへのアクセスが大幅に簡素化されます。
JDBC、Hibernate、Spring JDBC、または Spring Hibernate を学習せずに JPA のみを学習することはできます。ただし、このアプローチを採用した場合、データベースへの接続方法に関する知識は非常に表面的なものになります。
春のMVC
このテクノロジーにより、アプリケーションの Web インターフェイスをユーザーに表示し、インターフェイスとアプリケーションの残りの部分の間の通信を容易にすることができます。ディスプレイの処理を担当するアプリケーションがあり、RESTful テクノロジーを使用してアプリケーションと対話している場合、このテクノロジーはディスプレイなしで使用することもできます。
春に関する情報をよりよく吸収するには、記事や YouTube レクチャーに加えて、数冊の本を読むとよいでしょう。たとえば、クレイグ・ウォールズの「Spring in Action」。Spring に関するもう 1 つの優れた本は、「Spring 5 for the Professionals」です。より濃厚です。最初から最後まで読むよりも、手元に置いておく方が価値のある参考資料のようなものです。
スプリングブーツ
このテクノロジーにより、Spring の使用が大幅に簡素化されます。気まぐれでリストの最後に入れたのではありません。確かに、内部には多くのことが隠されており、バニラ スプリングに慣れていない人にとっては、多くの点が不明確または理解できないかもしれません。
まず、Spring フレームワークがどのように機能するかをより深く理解するには、通常の Spring を使用してから、Spring Boot を使用することによる優れた利点をすべて理解する必要があります。
Spring Security と Spring AOP についてもよく理解しておく必要があります。ただし、上記のテクノロジーとは異なり、これら 2 つに関する深い知識はまだ必要ありません。
このテクノロジーは初心者向けではありません。面接では、若手開発者はそれらについて質問されません (おそらく 1 つの表面的な質問を除いて)。これらのテクノロジーの概要と、その背後にある原則について説明します。
知識が多ければ多いほど、最初の仕事を早く見つけることができます。
GO TO FULL VERSION