はじめに
こんにちは ◤●ㅅ●◥ノ
今回はJDKに標準で添付されているツールとそれに関連する機能について学びました!
第10章 基本的な開発ツール
1.Javaが備える基本的なツール
実務...「限られた制約の中で、最高のソフトウェアを作る」
→実践的な開発で求められるのは開発効率
効率を上げるには3つの方法
1.個人の知識と技能を上げる
2.道具を使う
3.複数人で手分けをする
2,3を10章以降の所で学んでいく
10章では道具を使い効率を上げる方法を学ぶ
2.JDK
リリースされたJava標準使用を元に、さまざまな企業がその仕様に沿って動作する
JVMやコンパイラ、APIクラスなどを開発する
→それらを詰め合わせた開発者向け提供パッケージのことをJDKと呼ぶ
開発用途のツールを除き、実行専用のツールのみを含んだものをJREという
※昔から存在するが、近年ではJDKのみの提供も増えている
3.javadoc-仕様書の自動生成
複数人が協力してプログラムを作る一般的なプロジェクトでは、
プログラムに関する設計情報などを記述した 仕様書 を必ず作る
特に手間がかかるのはプログラム仕様書
→プログラムに含まれるすべてのクラスの一覧やそれぞれのクラスの中で利用されている
フィールドやメソッドの一覧およびその解説をすべて記述するため、膨大な量になる
JDKに付属している Javadoc を使うと、作成済みのプログラムのソースコードから
簡単にプログラム仕様書を自動で生成することができる
Javadocの基本的な使い方
javadoc [各種オプション] ソースファイルなど
※[]で囲んである部分については省略が可能
各種オプションについて
Javadocは特に指定しない限りprotected以上の
アクセス修飾がなされたメンバしか仕様書に出力しない
privateを含むすべてのメンバを出力するには-privateオプションを指定する
javadoc -private *.java
現在のフォルダではなく指定されたフォルダの中にプログラム仕様書が出力される
javadoc -d c:¥work¥doc *.java
4.javac-コンパイル
javacコマンドとは
javaコマンドと並列して頻繁に利用するツール
Java言語で記述されたソースコードをバイトコードを含むクラスファイルに変換するコンパイラ
javacコマンドの基本的な利用方法
javac[各種オプション]ソースファイルなど
コンパイラをするメリット
ソースコードからバイトコードへの変換に先立ち、
ソースコードの文法をチェックして、異常な記述や懸念がある部分を開発者に伝える
アノテーション
ソースコードのある部分について、警告は不要など開発者の意図をコンパイラに伝える
”@”から始まる記述で、javadocタグとそっくりだが、
コメント内ではなく対象となるクラスやメンバの直前にそのまま記述をする
あるクラス、メソッド、フィールドなどに対して、一定の種類の警告を行わないよう指示する
→ @SuppressWarningsアノテーション
メソッドが親クラスの同名メソッドをオーバーライドすることを明示的に宣言する
→ @Overrideアノテーション
クラス、フィールド、メソッドなどの宣言が非推奨であることをコンパイラに伝える
→ @Deprecateedアノテーション
5.jar-アーカイブの操作
JAR コマンド
→別の開発者に渡すときにファイルの受け渡し漏れなどの事故が発生することがないよう
それらのファイル一式を1つにまとめるアーカイブ形式として定められている
jarコマンドを使うことで、複数のクラスファイルやプロパティファイルを1つのJARファイルへ
逆にJARファイルを元に戻すことができる
jarコマンドで行うのは大体3つのパターン
1.アーカイブの作成
jar -cvf JARファイル名 ファイルやフォルダ...
2.アーカイブの展開
jar -xvf JARファイル名
3.アーカイブ内容の閲覧
jar -tvf JARファイル名
JARファイルにはアーカイブ内に含まれるさまざまなファイルに関する追加情報を記述した
マニフェストファイル を含めることが一般的
マニフェストファイルには「~:~」という形式のエントリを記述することになっている
6.java-JVMの起動と実行
javaコマンドの心臓部にはJVMと呼ばれる機構が備わっている
クラスファイルに含まれるバイトコードをCPUが実行できるマシン語に逐次変換することでプログラムは実行される
javaコマンドの基本的な使い方は以下の通り
java [各種オプション] メインクラスのEQCN
JVMはOSから割り当ててもらったメモリ領域をやりくりしながらJavaプログラムを実行する
このメモリ領域は用途の違いにより、 ヒープ と スタック に分けてJVMが管理する
不要なインスタンスを解放し、残りの要領を回復させる
→ ガベージコレクション
7.ishell-Javaの対話的実行
Python,JavaScriptなどのプログラミング言語
→ インタプリタ言語
→基本的にソースコードの命令が1行ずつ変換・実行される特徴がある
特徴を活かした REPL ツールが付属している
java
→ コンパイル言語
→ソースファイル全体を翻訳してから動作する
特徴を活かしたJShellが同梱される
8.統合開発環境
実際の開発現場ではJDKのツールを直接コマンドプロンプトで呼び出すのではなく、
エディタと開発に関連するツールが統合された 統合開発環境 を使う
9.Ant
ソースコードに基づいて、実行可能プログラムなどの一連の最終成果物を生成する工程
→ビルド
Ant...ビルド工程を自動化するためのツール
10.Maven
Antを使っていくと処理も長く複雑になっていく
→高度な自動化を実現するツールとしてMavenを利用される
まとめ
本格的、実践的な開発では、開発効率を意識することも重要になってくる
JDKに標準添付されているさまざまなツールを使うことで最低限の開発効率を確保する
javadocは、javadocタグ、コメントを解釈してプログラム仕様書を自動的に生成する
javaコマンドはクラスファイルやプロパティファイルを1つのアーカイブファイルにまとめることができる
AntやMavenを利用することによって、効率的にビルド工程を自動化できる