「プロになるJava」は、プログラミングの知識がゼロの状態からでも、実践的な知識が身につくように設計された、新しいJavaの入門書です。Javaの基本的な文法のみならず、アルゴリズムの考え方やGit/Maven/JUnit/IntelliJ IDEAといった開発必須ツール、Spring Bootを用いたWebアプリケーション開発までカバーしており、「プロになる」のに必要な知識が身につきます。

この本は新世代のJava指南書を生み出したいという強い熱意のもと、日本屈指のJavaデベロッパであるきしだなおき氏、杉山貴章氏、並びに弊社代表Javaチャンピオンの山本が共著いたしました。

従来の入門書には「文法は学んだが実開発で用いる開発ツールの扱い方を知らない」「基本的な補完機能は扱えるがライブラリの設定やWebアプリケーションの実行方法が分からない」といったように、実践的な知識がなかなか身につきにくいという側面がありました。この本は全編に渡ってIntelliJ IDEAを使ってプログラミングを行い、実際の開発で行うような補完やプロジェクト構成を用いて実践的に学ぶことができます。Java 17、並びに最新のツールを用いたモダンな開発を体系的に学びたい経験者にもお勧めの内容となっております。

弊社からお買い上げの場合、IntelliJ IDEAをはじめとするJetBrains社のIDEの本体価格が500円(税込価格で550円)割引きとなるクーポンコード(発行より3ヶ月間有効)が付属いたします。コマーシャルライセンス/パーソナルライセンス、新規/更新の区別なく利用でき、紹介プログラムも併用して頂けます。

電子版もお取り扱いいたしております。電子版は技術評論社様のサイトでダウンロードできるコードをお送りいたします。DRMフリーでEPUBとPDFの両フォーマットでダウンロードできますので、お好みの端末でご覧いただけます。
ご注文は以下のリンクよりお願いいたします。

プロになるJava(書籍/郵送、送料込) JetBrains IDE 500円クーポン付き
プロになるJavaの紙の書籍です。ポストへの投函となります。弊社からご注文頂きますとIntelliJ IDEAのショートカットシート、並びに著者描き下ろしDukeのステッカーシートが付属します。
2,980円(税込3,278円)
カートに入れて予約
プロになるJava(電子書籍ダウンロードコード/メール送付) JetBrains IDE 500円クーポン付き
プロになるJavaの電子書籍版です。DRMフリーでEPUB版、PDF版をダウンロードして任意の端末でご覧いただけます。
2,709円(税込2,979円)
カートに入れる

目次

第1部 Javaを始める準備

第1章 Java ってなんだろう

1.1 Javaとは
1.1.1 プログラミング言語とは
1.1.2 Javaはどんなプログラミング言語なの?
1.1.3 Javaで何ができるの?
1.1.4 Javaの仕様とJDKディストリビューション
1.2 Javaの情報源
コラム Java 公式キャラクター Duke

第2章 開発環境の準備と最初の一歩

2.1 Oracle JDKのインストール
2.1.1 Oracle JDKのダウンロード
2.1.2 Oracle JDKのインストール
2.2 IntelliJ IDEAのインストールと設定
2.2.1 初心者の段階からIDEを!
コラム Oracle 社はJavaを有償化した?
2.2.2 IntelliJ IDEAとは
2.2.3 IntelliJ IDEAのダウンロードとインストール
2.2.4 Toolbox Appの設定とIDEの起動
コラム IntelliJ IDEAのエディション
2.2.5 IntelliJ IDEAの初期設定
2.3 最初のプログラムを書いてみよう
2.3.1 プロジェクトの作成
2.3.2 IntelliJ IDEAの初期画面
2.3.3 クラスの作成
2.3.4 mainメソッドの実装
コラム 近年のJava IDE 事情

第2部 Javaの基本

第3章 値と計算

3.1 JShellの起動
3.1.1 ターミナルの起動
3.1.2 JShellの起動
3.1.3 JShellの終了
3.2 値と演算
3.2.1 整数
3.2.2 構文エラー
3.2.3 実数
3.2.4 文字列
3.2.5 例外
3.2.6 プログラムがうまく動かない3 段階
3.3 メソッドの呼び出し
3.3.1 メソッドの呼び出し
3.3.2 文字列の掛け算や引き算?
3.3.3 メソッドのシグネチャ
3.3.4 メソッドの使い方がわからないとき
3.3.5 文字列のフォーマット
3.3.6 formattedメソッドでの例外

第4章 変数と型

4.1 変数
4.1.1 複合代入演算子
4.1.2 値に名前を付けるメリット
4.2 型
4.2.1 変数の型
4.2.2 基本型と参照型
4.2.3 変数の型を指定する
4.2.4 文字を扱う型
4.2.5 数値の型変換
4.2.6 型の役割

第5章 標準API

5.1 日付時刻
5.1.1 APIとライブラリ
5.1.2 現在日時を取得する
5.1.3 パッケージとimport
5.1.4 日付時刻の操作
5.1.5 指定した日付時刻を扱う
5.1.6 日付時刻の整形
5.1.7 staticメソッドとインスタンスメソッド
5.2 BigDecimal
5.2.1 実数計算の誤差
5.2.2 BigDecimalでの計算
5.2.3 newによるBigDecimalオブジェクトの生成
5.2.4 BigDecimalオブジェクト生成時の注意
5.2.5 オブジェクトの生成の仕方の違い

第6章 SwingによるGUI

6.1 Swingでのウィンドウ表示
6.1.1 Swing
6.1.2 ウィンドウを表示してみる
6.1.3 入力領域の配置
6.1.4 2つ目の入力領域
6.1.5 ボタンを配置
6.1.6 クラスとオブジェクト,インスタンス
6.1.7 参照を扱う
6.2 画面に絵を描いてみる
6.2.1 ウィンドウの準備
6.2.2 画像の準備
6.2.3 図形の描画
6.3 Javaの基本文法
6.3.1 Javaの文法
6.3.2 入力エラーの対処
6.3.3 IntelliJ IDEAを使わずに実行する

第3部 Javaの文法

第7章 条件分岐

7.1 論理型
7.1.1 値の比較
7.1.2 オブジェクトの大小比較
7.1.3 オブジェクトが等しいかどうかの比較
7.1.4 論理演算子
7.1.5 条件演算子
7.2 if 文による条件分岐
7.2.1 if 文
7.2.2 else 句
7.2.3 else if
7.3 switchによる条件分岐
7.3.1 switch 文
7.3.2 default 句
7.3.3 switch 式
7.3.4 古い形式のswitch

第8章 データ構造

8.1 Listで値をまとめる
8.1.1 List
8.1.2 変更のできるList
8.1.3 ジェネリクスによる型検査
8.1.4 ジェネリクスの型推論
8.1.5 ラッパークラス
8.2 配列
8.2.1 配列の初期化
8.2.2 要素を設定した配列の初期化…
8.2.3 配列の要素の利用
8.2.4 多次元配列
8.3 レコードで違う種類の値を組み合わせる…
8.3.1 違う種類の値をListでまとめて扱う
8.3.2 違う種類の値をまとめて扱うレコードを定義する
8.3.3 レコードのオブジェクトを生成する
8.4 Mapで辞書を作る
8.4.1 Map
8.4.2 変更可能なMap
8.4.3 イミュータブル(不変)なオブジェクト

第9章 繰り返し

9.1 ループ構文
9.1.1 for 文の基本
9.1.2 for 文の応用
9.1.3 while 文
9.1.4 do while 文
9.1.5 ループのcontinueとbreak
9.2 ループに慣れる
9.2.1 デバッガーでループを覗く
9.2.2 二重ループ
コラム i,jの次は?
9.2.3 もう少しループの練習
9.2.4 迷路ゲームを作る

第10章 データ構造の処理

10.1 データ構造を拡張for 文で扱う
10.1.1 基本for 文でのListの要素の処理
10.1.2 拡張for 文によるListの要素の処理
10.1.3 拡張for 文による配列の要素の処理
10.1.4 値の集合の処理のパターン
10.2 Stream
10.2.1 IntelliJ IDEAによるStreamへの変換
10.2.2 Streamの構成
10.2.3 ラムダ式
10.2.4 Streamソース
10.2.5 終端処理
10.2.6 中間処理
10.2.7 Optional
10.3 基本型のStream 処理
10.3.1 IntStreamで整数の処理
10.3.2 StreamとIntStreamの行き来

第11章 メソッド

11.1 メソッドの宣言
11.1.1 JShellでのメソッド宣言
11.1.2 staticメソッドの宣言
11.1.3 インスタンスメソッドの宣言
11.1.4 IntelliJ IDEAにメソッドを宣言してもらう
11.2 ラムダ式とメソッド参照
11.2.1 ラムダ式
11.2.2 メソッド参照
11.2.3 IntelliJ IDEAでラムダ式とメソッド参照の変換
11.3 メソッドの使いこなし
11.3.1 メソッドのオーバーロード
11.3.2 メソッド呼び出しの組み合わせ
11.3.3 再帰とスタック
コラム うまく名前を付けるのも実力のうち

第4部 高度なプログラミング

第12章 入出力と例外

12.1 ファイルアクセスと例外
12.1.1 ファイル書き込み
12.1.2 ファイル読み込み
12.1.3 例外
12.1.4 throwsで例外を押しつける
12.1.5 try 句で例外に対処する
12.1.6 検査例外と非検査例外
12.1.7 例外を投げる
12.2 ネットワークでコンピュータの外の世界と関わる
12.2.1 サーバーとクライアント
12.2.2 ソケット通信とTCP/IP
12.2.3 OutputStreamでのデータ送信
12.2.4 InputStreamでのデータ受信
12.2.5 try-with-resources
12.3 Webの裏側を見てみる
12.3.1 HTTP
12.3.2 HTTPクライアント
12.3.3 HTTPSで安全なWebアクセス
12.3.4 Webクライアントライブラリ
12.3.5 Webサーバーを作る

第13章 処理の難しさの段階

13.1 ループの難しさの段階
13.1.1 他のデータを参照するループ
13.1.2 隠れた状態を扱うループ
13.2 状態遷移と正規表現
13.2.1 状態遷移の管理とenum
13.2.2 正規表現
13.3 スタックとキュー
13.3.1 スタックとキュー
13.3.2 ツリーの探索
13.3.3 メソッドの再帰呼び出しをスタックを使った処理に置き換える
13.3.4 幅優先探索とキュー
13.3.5 計算の複雑さの階層

第14章 クラスとインタフェース

14.1 クラス
14.1.1 クラスのメンバー
14.1.2 アクセス制御(可視性)
14.1.3 コンストラクタ
14.1.4 this
14.1.5 フィールド
14.1.6 ネステッドクラスとインナークラス
14.2 インタフェース
14.2.1 インタフェースが欲しい状況
14.2.2 インタフェースを使ってメソッドを統一的に扱う
14.2.3 必要なメソッドを実装していないときのエラー
14.2.4 実装を持ったメソッドをインタフェースに定義する
14.2.5 インタフェースにおけるアクセス制御
14.2.6 公称型と構造的部分型
14.3 ラムダ式と関数型インタフェース
14.3.1 関数型インタフェース
14.3.2 標準APIで用意されている関数型インタフェース
14.4 クラスとファイル
14.4.1 ソースファイル
14.4.2 classファイル
14.4.3 コメント
14.4.4 コマンドラインパラメータ

第15章 継承

15.1 継承
15.1.1 クラスの継承
15.1.2 継承でのコンストラクタ
15.1.3 Objectクラス
15.1.4 メソッドのオーバーライド
15.1.5 匿名クラス
15.2 継承の活用
15.2.1 差分プログラミング
15.2.2 継承でデータを分類する
15.2.3 継承とオブジェクト指向

第5部 ツールと開発技法

第16章 ビルドツールとMaven

16.1 ビルドツールの必要性
16.2 Mavenの基本
コラム Maven 以外のJavaビルドツール
16.3 Mavenのモジュールとディレクトリ構成
16.3.1 groupIdとartifactId
16.3.2 Mavenプロジェクトのディレクトリ構成
16.4 ライブラリとMaven Repository
16.4.1 ライブラリへの依存
16.4.2 Maven Central Repository
16.4.3 Mavenプロジェクトへライブラリを追加する
16.4.4 依存のscope
16.4.5 pom.xmlへの依存の記述
16.4.6 pom.xml 記述内容のプロジェクトへの反映
16.4.7 Maven Central Repository のインデックス作成
16.4.8 ライブラリの確認
16.4.9 businessCalendar4Jの動作確認
16.4.10 目的に合ったライブラリを見つける
16.5 MavenのGoal

第17章 Javadocとドキュメンテーション

17.1 Javadocとは
17.2 ブラウザでJavadocを見る
17.2.1 標準APIのJavadoc
17.2.2 Javadocの読み方
17.2.3 英語版のJavadoc
17.3 IDEからJavadocを見る
17.4 Javadocを書く
17.5 JavadocのHTMLを生成する

第18章 JUnitとテストの自動化

18.1 テストの自動化とは
18.1.1 JUnitのセットアップと実行
18.1.2 テストケースの実装,実装コードの修正
18.1.3 その他のアサーションメソッド
18.2 テスト自動化のヒント
18.2.1 効果的にテストケースを書く
18.2.2 テスト駆動開発
18.2.3 GUIアプリケーションやWebアプリケーションのテスト
コラム 時間がないからテストは書かない?
18.3 オリンピック開催年を判別するコードをテスト

第19章 IntelliJ IDEAを使いこなす

19.1 補完機能を使いこなす
19.1.1 補完の候補表示と補完確定
19.1.2 import 文の補完
19.2 Live Templateと後置補完

第20章 バージョン管理とGit

20.1 アンドゥやファイルコピーによる履歴管理
20.1.2 Local History
20.2 バージョン管理システム
20.2.1 Gitのインストール
20.3 Git 連携を有効にする
20.4 コミット
20.4.1 コミット対象ファイルの選択
20.4.2 コミットの実行
20.4.3 ファイル追加時の確認ダイアログ
20.4.4 変更したファイルの差分とコミット
20.4.5 Gitログの確認
20.4.6 .gitignoreファイルの作成
20.5 ブランチ
20.5.1 ブランチの作成と切り換え
20.5.2 ブランチのマージ
20.6 Git 誤操作後の復旧方法
20.6.1 Amend
20.6.2 Revert
20.6.3 コミットのReset

第6部 Webアプリケーション開発

第21章 Spring BootでWebアプリケーションを作ってみる

21.1 Webアプリケーションとフレームワーク
21.1.1 Webアプリケーションとは
21.1.2 Webアプリケーションの仕組み
21.1.3 アプリケーションフレームワークとは
21.1.4 フレームワークを利用するメリット
21.1.5 Webアプリケーション開発に使える代表的なフレームワーク
21.2 Spring Bootでタスク管理アプリケーションを作ってみる
21.2.1 タスク管理アプリケーションの概要
21.2.2 Webアプリケーション用のプロジェクトを作る
21.3 RestControllerでWebアプリケーションの仕組みを学ぶ
21.3.1 @RestControllerアノテーションでコントローラを作成する
21.3.2 クライアントからのリクエストに応えるためのエンドポイントを作る
21.3.3 helloエンドポイントにアクセスしてみる
21.3.4 タスク管理アプリケーションをコマンドラインから起動する
21.4 モデルを使ってアプリケーションの内部情報を保持する
21.4.1 タスクの情報を保持するためのモデルの作成
21.4.2 タスクを追加するエンドポイントの作成
21.4.3 タスクを一覧表示するエンドポイントの作成
21.5 ユーザーインタフェースの作成にテンプレートエンジンを活用する
21.5.1 @Controllerアノテーションでコントローラを作成する
21.5.2 テンプレートエンジン
21.5.3 Thymeleafが使えるようにpom.xmlを修正する
21.5.4 Thymeleaf 用のHTMLテンプレートを作る
21.5.5 HomeControllerのhelloメソッドを修正する
21.5.6 タスクの追加および一覧表示用のテンプレートを用意する
21.5.7 HomeControllerにタスクの一覧表示機能のエンドポイントを実装する
21.5.8 HomeControllerにタスクの追加機能のエンドポイントを実装する
21.5.9 CSSを使ってテンプレートを装飾する

第22章 Webアプリケーションにデータベースを組み込む

22.1 データベースとは
22.1.1 DBMSの種類
22.1.2 リレーショナルデータベースとは
22.1.3 リレーショナルデータベースにアクセスするための言語「SQL」
22.1.4 Javaによるデータベース接続とJDBC
22.2 SQLでH2データベースを操作する
22.2.1 H 2とは
22.2.2 pom.xmlへの依存関係の追加
22.2.3 application.propertiesへの設定の追加
22.2.4 H 2コンソールを使ったデータベース接続
22.2.5 テーブルを作成するCREATE 文
22.2.6 テーブルにレコードを追加するINSERT 文
22.2.7 テーブルに格納されたデータを取得するSELECT 文
22.2.8 すでに登録されているレコードを更新するUPDATE 文
22.2.9 テーブルに登録されているレコードを削除する
22.2.10 タスク管理アプリケーションで使用するSQL 文の例
22.3 Spring BootアプリケーションでSpring JDBCを使用する
22.3.1 Spring JDBCとは
22.3.2 pom.xmlへの依存関係の追加
22.3.3 テーブル初期化用のスクリプトを用意する
22.3.4 データベース操作用のクラスを作成する
コラム DI/DIコンテナとは
22.3.5 HomeControllerクラスを修正する
22.3.6 タスク情報の削除機能を追加する
22.3.7 タスク情報の更新機能を追加する

特定商取引に関する法律に基づく表示