JavaRush /Java Blog /Random-JA /将来の Java 開発者のためのガイド。エンタープライズ - パート 1
Diana
レベル 41

将来の Java 開発者のためのガイド。エンタープライズ - パート 1

Random-JA グループに公開済み
「あなたが築いてきた技術的成果を誇りにしすぎないでください。惑星を破壊する能力など、フォースの力に比べれば何でもありません。」 - デス・スターのダース・ベイダー。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 1

イントロ

おそらく、一連の記事の次の 2 つのパートが多くの人にとって最も期待されているものですが、それには十分な理由があります。地平線の向こう、純粋な Java の向こうには何があるのでしょうか? Java 開発者は各プロジェクトで何を息づいているのでしょうか? これは、主なプログラミング言語が Java である平均的なバックエンド エンジニアのための、真の完全な独習ガイドであると考えてください。可能な限り病院の平均をカバーし、最も一般的なフレームワークだけでなく、現時点で関連すると考えられるソリューションについても説明するつもりです。当然のことながら、ツールはたくさんありますが、どれが最も重要で最良のものであるかを理解することは、どこにも到達しない道です。皆さんはDOU の「求人」セクションを見て、空席から空席へと絶えず繰り返されるテクノロジーのスタックを発見しました。すべてを説明するのは不可能であることは理解していますが、大まかな枠組みを考えるのは問題ありませんので、この方向性に従ってみましょう。どういうわけか、過去に、あるプロジェクトで、かなり興味深い当惑が起こりました。私が思うに、それは、ある分野または別の分野の多くの人にとって、時折、常に繰り返されてきたと思います。このタスクは、単に個々のエンティティのステータスを表示するために、完成した機能に 1 つの HTML ページのレンダリングを添付するように設定されました。その結果、私の同僚は Spring thymeleaf をアタッチすることに決めました。Spring thymeleaf は、誰も Spring を使用していなかったときに Spring 自体のコア依存関係の一部を取り出しました。これは 1 つの通常のページにすべて含まれており、2 ~ 3 つのエンティティのステータスが単に表示されます。 「ライトセーバーを2本使うことにあまり意味を感じたことはありません...私の意見では、それは誇示です。」 - オビ=ワン・ケノービ。一方では、開発者はできるだけ早く問題を解決し、使用経験のあるフレームワークをインストールして、数時間でプロジェクトに統合しました。しかしその一方で、私たちのプログラムの規模が大きくなったため、単純な疑問が生じます。「彼のやったことは正しかったのか?」ということです。このようなアトミックなタスクの場合、thymeleaf/Spring MVC などの方が大きいことが確実にわかっている場合。どこにも使用されないため、まったく使用しないほうがよいでしょう。「おお!」というフレーズにいつも驚かされます。はい、ここでは Hibernate を使用しました。「見てください、すべてが素晴らしいです、ORM!」そして、ここで通常の JDBC を使用することが可能かどうかという論理的な質問をされると、彼らは肩をすくめました。普通の建築があって、ファッショナブルで超現代的なフレームワークで乱雑にされるのではなく、シンプルであるべきであり、恐れを持って扱われるべきです。上でオビ=ワンが言ったように、使い方を知る必要はあるものの、これは単なる見せびらかしにすぎません。私の意見では、この若い Javaist がすべての中で最も不幸です - 非常に多くの仕様、非常に多くのライブラリを研究する必要があります。Java EE だけでも、非常に充実したドキュメントを持っています。初心者は何を始めるべきか、次に何を学ぶべきか、ホルストマンの後に何をすべきか、という疑問が生じます。簡単な答えは、残念ながら、たくさんの人に会うことです。そして、ビジネスの枠組みではなく、もっと日常的に必要なことから始めていきます。

オペレーティングシステム

Linux

Windows や快適な Yosemite に加えて、Linux にも笑顔で手を伸ばす必要があります。一部のプロジェクトでは、ユーザーになってコマンド ラインの使用方法を知っていれば十分ですが、他のプロジェクトではそれ以上です。どの方法が最適ですか? インターネット上には膨大な量の書籍やチュートリアルがあります。まずはUbuntuまたはその他の好みのディストリビューションをインストールし、それを今後 1 ~ 2 か月間メインのオペレーティング システムとして使用してみてください。ターミナルを使用してファイルをコンパイルおよび操作することで、Linux 内で Java の学習を開始すると、はるかに効果的になります。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 2Linux コマンドライン (William Shotts 著)。この本を「50 Shades of Grey」小説としてではなく、本格的な対話型コースとして読んでください。端末を開いて著者の後に繰り返し読みます。Linux がどのように動作するのか、基本を知りたいですか? コンピューター サイエンスとオペレーティング システムのコースは受講しないでください。これについては次のパートで説明します。edx.orgにアクセスして、簡単なLinux 入門コースを試してください。上記シリーズの本として、Brian Ward 著の How Linux Works: What Every Superuser Should Knowもあります。ネットワーキング、デバイス、リソース管理に焦点を当てた、イラスト入りのわかりやすい出版物。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 3どうぞ?素晴らしい本があって、ところで、私はここのどこかに持っています... はい(粉塵を振りまきながら)... ここにあります! Unix および Linux: システム管理者ガイド。エヴィ・ネメス。将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 4かなり分厚いマニュアルで、よく翻訳されています。正直、私自身は使いこなせていませんでしたが、管理の基礎(前編)はとても気に入りました。当然のことながら、シェル スクリプトを無視することはできません。これらすべてを実際に試してみることをお勧めしますが、書籍では、Cameron Newham 著『Learning the bash Shell: Unix Shell programming』を参照してください 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 5Linux/Unix に関するこのような膨大な量の文献は、特に Linux が背景にあるこの記事では完全にはカバーできません。この件で犬を食べた私の職場の同僚は、かなり現実的なことをアドバイスしました 。ArchLinux をダウンロードして、起動して実行してみてください。その過程で、私が望んでいないことも学ぶことになります。

ウィンドウズ

プログラマーの履歴書には「Windows経験10年以上」という欄があります。もちろん、10 歳の頃から Windows でカウンターをプレイしてきたことはおめでとうございますが、面接では事前に穴を掘らないでください。なぜなら、あなたが密接に取り組んでいるプロジェクトだからです。 IIS、バッチ/パワーシェル、神は禁じています、レジストリ、面接はそれほど難しいものではありません、そして座っている人の向かい側でニヤニヤしているだけです。リダ、あなたも屈辱を受けるでしょう。これは必要ですか? 答えはおのずとわかります。トレントからの海賊版 Windows を脇に置いて、ある種の Windows Server 仮想マシンにインストールしてみてください。ユーザー側と JAVA_HOME のインストールだけでなく、それを研究してください。この点に関しては、 Mark minasi 著『Mastering Windows Server 2012 R2』という書籍の形でほぼ完全なガイドが存在します。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 6たとえば、PowerShell を使用している場合は、Bruce Payette 著の優れた書籍『Windows PowerShell in Action by Manning』を参照してください。1000 ページを読むのは不可能だと思いますが、少なくとも参考資料として手元に置いておくことはできます。他には何も必要ないと思います。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 7したがって、Windows の使用に関する知識のギャップに注意し、インターネットで興味のある情報を探してください。

ビルドツール

メイビン

Maven について理解しておくべき最も重要なことは何ですか? 最初の手順とタスクは次のとおりです。
  1. Maven が各フェーズで何を行うかを学び、暗記することもできます。これはほぼ 80% 成功しており、明確な全体像が得られます。
  2. 明示的な依存関係管理を使用して、マルチモジュール システムを使用してローカルに独自のサンドボックス プロジェクトを作成します。サードパーティのライブラリをアタッチしてみたり、それらを使用して何かを作成してみたりしてください。
  3. プロフィールをいじってみる
  4. プラグイン管理を理解し、公式 Web サイトで最も人気のあるプラグインのリストを調べてください。
  5. プロジェクトで Maven を最大限に活用する方法を検討してください。たとえば、並列ビルドによりビルド時間を大幅に短縮できます。
ちょっと詳しく知りたい場合は、ロシア語版のApache Maven Web サイトにアクセスし、Google でいくつかのチュートリアルを検索してください。それでも、Maven に関する主要本の 1 冊の第 3 版はリリースされません。これまでのところ、これは Sonatype のMaven: The Definitive Guideの第 2 版です。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 8上級レベルの場合は、独自のプラグインを作成するのが適しています。プラグインの多くはすでに存在しているため、どのような種類のプラグインを作成する必要があるかについて心配する必要はありません。ある種のアナログを作成して、フェーズを 2 つと 2 つとして研究してみてください。

このツールははるかに簡単に見えるので、ここで学ぶべきことはあまりありません。ANT が唯一のビルド ツールであるプロジェクトがまだ存在します。これはまったく正常なことです。ANT は、小さなアトミック タスク (Ant タスク) を管理するというコンテキストにおいて、シンプルで簡単なビルド ツールであることが証明されています。もちろん、Maven と同様に、ここには多くのプラグインがあります。ANT の使用を開始するには、次の手順を実行します。
  • ファイルやフォルダーを操作してみる
  • タスクを実行するためのさまざまな順序を実装します。これに基づいて、ANT におけるタスクの依存関係と優先順位を学習します。
  • アーカイブを解凍および/または圧縮します。タスクではアーカイブの内容などをいじってみてください。
ANT を学習するために大量のリソースを提供する必要はありません。多かれ少なかれ詳しく知るには、Apache Ant の公式ページで十分です。( ant.apache.org ) およびSteve Loughran 著の書籍『Ant in Action 』。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 9

グラドル

私にとって、Gradle は Maven よりも ANT に近いですが、完全にこの 2 人の異母兄弟と呼ぶことができます。Maven に似たライフサイクルと、ANT と同じタスクの柔軟性を備えています。そうですね、最も重要なことは、Gradle は XML を使用しないということです。さらに、Groovy に多少なりとも慣れていれば、XML を使って何でもできるということです。一般的に、かなりおいしいものです。IDE のコンテキストで Ant/Maven/Gradle を使用することを恐れないでください。これらのツールは Eclipse/IDEA に緊密に統合されており、IDE のコンテキストでこれらのツールを使用するのは非常に快適です。

継続的インテグレーション

理論

これらはあなたを解雇から守るエンジェルプログラムです。簡単に言うと、これはコードの変更を監視し、作成されたテストを構築して実行するソフトウェアです。各コミット/マージ後にすべてが正常であれば、ビルドは快適な緑/青のライトで輝きます。何かが壊れると、CI システムはすぐにそれを報告します。ただし、ちょっとした理論があります。これは古典的なものです。継続的インテグレーション: ソフトウェア品質の向上とリスクの軽減 Paul Duvall 著。(ロシア語で「継続的インテグレーション」とも呼ばれます) 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 10この本では、独自の CI システムの作成についても説明しています。この分野で最も一般的な 2 つのソリューションを見てみましょう。

ジェンキンス

ジェンキンス、別名ハドソン。オープンでフレンドリーで使いやすいアプリケーション。Jenkins についてさらに詳しく知るには、次のことを試してください。
  1. それをコンピュータにダウンロードします。JDK、Maven、ANT、およびプロジェクトに必要なものすべてをインストールして構成します。
  2. 最初のジョブを作成し、プロジェクトの場所 (メインの pom.xml など) を指定します。それを実行し、それが明確に見えるように何らかのテストがあることを確認してください。
  3. さまざまな設定とオプションを使用してプロジェクトを実行する方法を学びます。
  4. さまざまなプラグインをアタッチして、それらがプロジェクトとどのように連携して動作するかを確認してください。
  5. さまざまなジョブのトリガーを構築します。小さなパイプラインを作成します。
  6. DSL を調べて、Jenkins と統合してみてください。
  7. 別のコンピューターからスレーブをセットアップするか、ビルドを実行するための通常のマシンにします。
  8. 夜間ビルドを作成します。
本の場合は、ジョン ファーガソン スマート著の『ジェンキンス: 明確なガイド』を読んでください。スクリーンショットを多数掲載した分かりやすいガイド。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 11

チームシティ

はい、TeamCity は無料ではありませんが、JetBrains の製品エコシステムにどのように統合されているかを見てください。Intellij Idea と TeamCity は素晴らしい結合です。概して、すでに Jenkins に精通している場合、TeamCity はあなたにとって暗い森ではありませんし、その逆も同様です。スレーブの代わりにエージェント、同じトリガーなどを使用します。ただし、Jenkins とは異なり、TeamCity は、たとえば、事前テスト済みコミットとも呼ばれるリモート実行、より多くの視覚的な統計などの驚くべき機能を誇っています。JetBrains 自体が作成した YouTube のユーザー ガイドがとても気に入っています ( TeamCity ユーザー ガイド (パート 1/9) - はじめに)。TeamCity は直感的であり、ドキュメントは高水準であると思います。ただし、チェックする価値のある本があると思われる場合は、コメントに残してください。もちろん、私がリストしたのはこれらの CI システムのほんの一部ですが、範囲はすべて限られています。おそらく学習への最良のガイドは実践です。コンピューターにインストールして起動し、ビルドをクラッシュ/復元して就寝しました。それから、記録簿を安全に私に持ってきていただいても構いません(ご希望であれば :)。

バージョン管理システム

VCS について多くを語るのは意味がありません。それはまさにそうあるべきものであり、それがなければプロジェクト管理は中生代のようなものになってしまうでしょう。CI システムと同様に、最も人気のある 2 つのソリューション、Git と SVN を見てみましょう。

ギット

私たちの Git は、安定した分散バージョン管理システムであることが証明されています。ここから学習を開始し、Git がすでに構成されている状態ですべての章を読んでください。さらに、Code School の素晴らしいインタラクティブなチュートリアル シリーズもあります。Try Git: Code School という短いガイドも提供されています。私がお勧めできる本からは、Jon Loeliger 著 Git によるバージョン管理 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 12タートル (TortoiseSVN、著者注) に慣れていて、コンソールが怖い場合は、もちろん、そのアナログである TortoiseGit をダウンロードすることもできますが、私の意見では、はるかに快適で見た目にも美しい このソリューションは、Atlassian の製品である SourceTreeApp です。インターネット上には十分なホスト サービスがあるため、リモート リポジトリを使用して練習することができます。ご希望であれば、現地でトレーニングしてください。いいえ?次に、GitHub でアカウントを作成し、フル モードで作業します。コミットをいくつか作成し、オープンソース プロジェクトをフォークし、ブランチ間でマージをいくつか実行します。

SVN

同様に人気のあるもう 1 つの VCS は SVN です。このシステムは配布を誇ることはできません。それぞれに独自のアプローチがあり、長所と短所があります。初心者と SVN ユーザーの間の興味深い会話をぜひお読みください。read-bean.com からはロシア語訳付きの無料書籍が入手できます。TutorialsPoint のミニコースも非常に役立ちます。Apache の公式 Web サイトsubversion.apache.orgをお見逃しなく。私にとって最も興味深いクライアントは、前述の TortoiseSVN です。書籍の中では、Michael Pilato 著の「Subversion によるバージョン管理」を取り上げます。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 13SVN サーバー自体の管理に注意を払っているので、気に入りました。主要なポイントを見逃していないことを願っています。

テストツール

小規模なサンドボックス プロジェクトにおいて、単体テスト、統合テスト、回帰テストが何であるかを理解しておくとよいでしょう。 JUnit 単体テストの理論については、前の記事の書籍で詳しく説明されています。特に、Clean Code では、junit がこの分野で人気のあるライブラリの 1 つであるとさえ説明されています。しかし、特に JUnit に関して言えば、Tomek Kaszanowski 著『Practical Unit Testing with JUnit and Mockito』という 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 14素晴らしい小さな本があります。もちろん、JUnit と Mockito だけではありません。ここで著者は Matcher を紹介し、パラメータ化されたテストの例を示し、TDD について簡単に説明します。つい最近出た本もあります。これはJeff Langr による Java 8 での Pragmatic Unit Testing です。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 15著者は Hamcrest を紹介し、ベスト プラクティス、そしてもちろん Java 8 について説明しています。Tomek の本の後に読んでも安全です。ところでTDDについて。私は、それらを使用する価値があるかどうか、それが良いか悪いか、顧客がそれらを必要としているかどうかについて、あまり議論したくありません。覚えておいてください。TDD で作業することは目新しいことではなく、多くのプロジェクトでこの方法論が使用されており、多くの人にとってそれが唯一かつ議論の余地のないルールです。理論的には、古典を読むことができます。Kent Beck - テスト駆動開発: 例による。私が最も気に入ったのは、TDD パターンに関する部分です。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 16驚くべきことに、Youtube には優れた一人称コース - Let's Play TDD (ビデオ 200!) があります。TDD を使用する価値があるかどうか、設計を損なうかどうかなどについてのファウラー自身の議論も同様に興味深いものです。これをきっぱりと覚えておいてください。TDD は悪い設計を生み出すのではなく、あなたがそれを作るのです。 BDD をより多く使用し (一方が他方に干渉しない)、たとえばプロジェクトで Cucumber を使用する場合、これは少し異なる面になります。これに関する良い本は、John Ferguson Smart 著『Manning BDD in Action: Behavior-driven Development for the 全体のソフトウェア ライフサイクル』です。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 17ちなみに、ジョン・ファーガソン・スマートはこの話題を大衆に積極的に宣伝しています。あなたがスクラム マスターまたは PM で、最終的には目を痛めることはないが、When-if-Then テストを見るのが好きな人は、必ずTwitter で Johnをフォローしてください。Cucumber については、公式 Web サイトで Java 実装を確認し、 Matt Wayne 著の The Cucumber Book: Behavior-Driven Developmentという本を読んでください。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 18

サードパーティのライブラリ

必要に応じて人気のあるライブラリを使用できることが重要です。これらのライブラリは、すべての Java 開発者の日常生活を簡素化します。一般的なソリューションには次のものがあります: Joda Time。不便なネイティブの日付と時刻を、より便利な JodaTime に完全に置き換えることを提案します。ここに良い参考資料が1 つあります。すでに Java 8 を使用している場合、JodaTime はあまり役に立たないことに注意してください。実際、新しい DateTime API はこのライブラリを完全に置き換えており、いくつかの場所では巧妙にコピー アンド ペーストされています。著者自身の記事によると、すべての Joda クラスは java.time の類似物に簡単に置き換えることができます。 グーグルグアバ。多くの点で、Java 8 は Guava を置き換えることさえあります。同じオブジェクト、ストリーム API、Java 述語、その他多くのものは、それを置き換えて、まったく使用しないことを提案しています。繰り返しますが、Java 8 をお持ちでない場合は、このガイドと直接手で行うことより良いものはありません。

Apache Commons

この怪物に対処するのはそれほど簡単ではありません。よく知られている commons.lang から XML 検証、 DBUtils からcommons.ioまで、あらゆる場面に対応する約 40 のライブラリがあります。もちろん、すべてに慣れる必要はありませんが、Cookbook の本やチュートリアルを持っておくと便利です。たとえば、Apache Commons が何であるかを理解するには、Timothy O'Brein による Jakarta Commons Cookbookに目を通すことができます。 将来の Java 開発者のためのガイド。 エンタープライズ - パート 1 - 19

結論

Enterprise は非常に広大なので、この Enterprise を取り巻くすべてのものを抜きにして JavaEE やその他のフレームワークについて議論し始めるのは愚かです。したがって、第 2 部では、多層アーキテクチャの各層に焦点を当て、サービスなどについて検討します。ご清聴ありがとうございました。最初の部分の終わり。シリーズの前の部分:
  1. 将来の Java 開発者のためのガイド。Javaの基本
  2. 将来の Java 開発者のためのガイド。エレガントなコード
DOUオリジナル
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION