「あなたが築いてきた技術的成果を誇りにしすぎないでください。惑星を破壊する能力など、フォースの力に比べれば何でもありません。」 - デス・スターのダース・ベイダー。
イントロ
おそらく、一連の記事の次の 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 の学習を開始すると、はるかに効果的になります。 Linux コマンドライン (William Shotts 著)。この本を「50 Shades of Grey」小説としてではなく、本格的な対話型コースとして読んでください。端末を開いて著者の後に繰り返し読みます。Linux がどのように動作するのか、基本を知りたいですか? コンピューター サイエンスとオペレーティング システムのコースは受講しないでください。これについては次のパートで説明します。edx.orgにアクセスして、簡単なLinux 入門コースを試してください。上記シリーズの本として、Brian Ward 著の How Linux Works: What Every Superuser Should Knowもあります。ネットワーキング、デバイス、リソース管理に焦点を当てた、イラスト入りのわかりやすい出版物。 どうぞ?素晴らしい本があって、ところで、私はここのどこかに持っています... はい(粉塵を振りまきながら)... ここにあります! Unix および Linux: システム管理者ガイド。エヴィ・ネメス。かなり分厚いマニュアルで、よく翻訳されています。正直、私自身は使いこなせていませんでしたが、管理の基礎(前編)はとても気に入りました。当然のことながら、シェル スクリプトを無視することはできません。これらすべてを実際に試してみることをお勧めしますが、書籍では、Cameron Newham 著『Learning the bash Shell: Unix Shell programming』を参照してください。 Linux/Unix に関するこのような膨大な量の文献は、特に Linux が背景にあるこの記事では完全にはカバーできません。この件で犬を食べた私の職場の同僚は、かなり現実的なことをアドバイスしました 。ArchLinux をダウンロードして、起動して実行してみてください。その過程で、私が望んでいないことも学ぶことになります。ウィンドウズ
プログラマーの履歴書には「Windows経験10年以上」という欄があります。もちろん、10 歳の頃から Windows でカウンターをプレイしてきたことはおめでとうございますが、面接では事前に穴を掘らないでください。なぜなら、あなたが密接に取り組んでいるプロジェクトだからです。 IIS、バッチ/パワーシェル、神は禁じています、レジストリ、面接はそれほど難しいものではありません、そして座っている人の向かい側でニヤニヤしているだけです。リダ、あなたも屈辱を受けるでしょう。これは必要ですか? 答えはおのずとわかります。トレントからの海賊版 Windows を脇に置いて、ある種の Windows Server 仮想マシンにインストールしてみてください。ユーザー側と JAVA_HOME のインストールだけでなく、それを研究してください。この点に関しては、 Mark minasi 著『Mastering Windows Server 2012 R2』という書籍の形でほぼ完全なガイドが存在します。 たとえば、PowerShell を使用している場合は、Bruce Payette 著の優れた書籍『Windows PowerShell in Action by Manning』を参照してください。1000 ページを読むのは不可能だと思いますが、少なくとも参考資料として手元に置いておくことはできます。他には何も必要ないと思います。 したがって、Windows の使用に関する知識のギャップに注意し、インターネットで興味のある情報を探してください。ビルドツール
メイビン
Maven について理解しておくべき最も重要なことは何ですか? 最初の手順とタスクは次のとおりです。- Maven が各フェーズで何を行うかを学び、暗記することもできます。これはほぼ 80% 成功しており、明確な全体像が得られます。
- 明示的な依存関係管理を使用して、マルチモジュール システムを使用してローカルに独自のサンドボックス プロジェクトを作成します。サードパーティのライブラリをアタッチしてみたり、それらを使用して何かを作成してみたりしてください。
- プロフィールをいじってみる
- プラグイン管理を理解し、公式 Web サイトで最も人気のあるプラグインのリストを調べてください。
- プロジェクトで Maven を最大限に活用する方法を検討してください。たとえば、並列ビルドによりビルド時間を大幅に短縮できます。
蟻
このツールははるかに簡単に見えるので、ここで学ぶべきことはあまりありません。ANT が唯一のビルド ツールであるプロジェクトがまだ存在します。これはまったく正常なことです。ANT は、小さなアトミック タスク (Ant タスク) を管理するというコンテキストにおいて、シンプルで簡単なビルド ツールであることが証明されています。もちろん、Maven と同様に、ここには多くのプラグインがあります。ANT の使用を開始するには、次の手順を実行します。- ファイルやフォルダーを操作してみる
- タスクを実行するためのさまざまな順序を実装します。これに基づいて、ANT におけるタスクの依存関係と優先順位を学習します。
- アーカイブを解凍および/または圧縮します。タスクではアーカイブの内容などをいじってみてください。
グラドル
私にとって、Gradle は Maven よりも ANT に近いですが、完全にこの 2 人の異母兄弟と呼ぶことができます。Maven に似たライフサイクルと、ANT と同じタスクの柔軟性を備えています。そうですね、最も重要なことは、Gradle は XML を使用しないということです。さらに、Groovy に多少なりとも慣れていれば、XML を使って何でもできるということです。一般的に、かなりおいしいものです。IDE のコンテキストで Ant/Maven/Gradle を使用することを恐れないでください。これらのツールは Eclipse/IDEA に緊密に統合されており、IDE のコンテキストでこれらのツールを使用するのは非常に快適です。継続的インテグレーション
理論
これらはあなたを解雇から守るエンジェルプログラムです。簡単に言うと、これはコードの変更を監視し、作成されたテストを構築して実行するソフトウェアです。各コミット/マージ後にすべてが正常であれば、ビルドは快適な緑/青のライトで輝きます。何かが壊れると、CI システムはすぐにそれを報告します。ただし、ちょっとした理論があります。これは古典的なものです。継続的インテグレーション: ソフトウェア品質の向上とリスクの軽減 Paul Duvall 著。(ロシア語で「継続的インテグレーション」とも呼ばれます) この本では、独自の CI システムの作成についても説明しています。この分野で最も一般的な 2 つのソリューションを見てみましょう。ジェンキンス
ジェンキンス、別名ハドソン。オープンでフレンドリーで使いやすいアプリケーション。Jenkins についてさらに詳しく知るには、次のことを試してください。- それをコンピュータにダウンロードします。JDK、Maven、ANT、およびプロジェクトに必要なものすべてをインストールして構成します。
- 最初のジョブを作成し、プロジェクトの場所 (メインの pom.xml など) を指定します。それを実行し、それが明確に見えるように何らかのテストがあることを確認してください。
- さまざまな設定とオプションを使用してプロジェクトを実行する方法を学びます。
- さまざまなプラグインをアタッチして、それらがプロジェクトとどのように連携して動作するかを確認してください。
- さまざまなジョブのトリガーを構築します。小さなパイプラインを作成します。
- DSL を調べて、Jenkins と統合してみてください。
- 別のコンピューターからスレーブをセットアップするか、ビルドを実行するための通常のマシンにします。
- 夜間ビルドを作成します。
GO TO FULL VERSION