JavaでWebアプリ制作を学習してみよう。- Maven or Gradle –

2021年3月18日

「Hello World」試した後、改めてsts4の「新規Spring スターター・プロジェクト」を詳しく見ていくことにした。

 

「ファイル」->「新規」->「Spring スターター・プロジェクト」で表示される画面

 

を見ていて目についたのが「型(Type)」の「Maven」or「Gradle」で、「型」って何?って気になってしまった。
そこで早速調べることに。
-> googleさん検索で情報を読みまくる。
ビルドツールに何を使うかということのようだ。特に


上記のネット情報のビルドツールの理解メモの説明で make も書かれており、私はc/c++での開発でmakeやgmakeを使っていたので、「Maven」「Gradle」が何をしてくれるものなのかをなんとなく理解した。
時代とともに「make」->「Ant」->「Maven」->「Gradle」と進化しトレンドが変化してるんだと改めて納得した。
それでもって「Maven」と「Gradle」をより詳しくネットで調べることにした。
-> googleさん検索で情報を読みまくる。

時系列的には「Gradle」が「Maven」より後にリリースされたようだが機能的には大差はなさそうなのでどれを使うかは今のところ使う側の好みのようだ。
「Gradle」の方が使用ライブラリの記述が見やすいように感じた。
だが初心者の私は今はとりあえず最初に表示されている「Maven」を選択して先に進むことにした。

 

「次(N)へ」のボタンで表示される画面

 

これはこれから開発するアプリで使用するライブラリを選択する画面のようだ。
いっぱいあって一つ一つどんなライブラリなのかを調べるのには時間がかかってしまう。
初心者なので最低限必要なライブラリは何かを頭に置きながらネットで調べることにした。
-> googleさん検索で情報を読みまくる。

その結果、

  • 「Web」->「Spring Web」
  • 「開発ツール」->「Spring Boot DevTools」
  • 「開発ツール」->「Lombok」※データクラスへのget/setメソッドを自動生成してくれる。助かる!時短になる!
  • 「テンプレート・エンジン」->「Thymeleaf」※レスポンスでhtmテンプレートレタリングをしたい。LaravelのBradeにあたる!
  • 「SQL」->「MySQL Driver」※データベースにはMySQLが使い慣れていたため。Laravelでいつも使っていたので!
  • 「SQL」->「JDBC API」
  • 「SQL」->「Spring Data JPA」※LaravelのEloquentぽいかなぁ?ちょっと違うかなぁ???
  • 「SQL」->「Spring Data JDBC」

 

を選択することにした。
データアクセス用のドライバについてはどれを選べばよいか判断できなかったため、低レベルAPIの「JDBC API」、中レベルAPIの「Spring Data JDBC」そして高レベルAPIで使いやすいと思われる「Spring Data JPA」を選択した。

余談1:
「Maven」と「Gradle」で新規プロジェクトを生成した際のプロジェクトツリーを比較すると以下のようになりました。


「Maven」の設定は「pom.xml」ファイルに行っていくことになる。
使用ライブラリを増やす場合は

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

「Gradle」の設定は「build_gradle」ファイルに行っていくことになる。
使用ライブラリを増やす場合は

implementation ‘org.springframework.boot:spring-boot-starter-web’

で追加していく。
上記は「Spring Web」ライブラリを追加した場合に記述比較です。

余談2:
後日「JDBC API」「Spring Data JDBC」「Spring Data JPA」のサンプルを作成し動かして色々試してみました。
その結果、まずは「Spring Data JPA」をメインに使って行くことにした。「性能」「柔軟性」には劣るが「使いやすさ」「分かりやすさ」「低工数」を優先した。作成したアプリで「性能」「柔軟性」が必要になった場合に「Spring Data JPA」の置換えを考えることにしよう。と決めた。

 

続きは次回へ。。。。。