書籍概要

15時間でわかる

15時間でわかるJava集中講座

著者
発売日
更新日

概要

短時間で業務レベルの基礎知識を習得することを目指した独習形式の解説書です。ベースとなる文法について扱う基礎編と,テスト,デバッグ,リファクタリングといった実際の業務に直結する技術や考え方を扱う実践編の2部構成で,最短で業務レベルの入口まで到達できる構成になっています。
あらかじめ用意されている仮想環境を付属のDVD-ROMからコピーすることで,細かい設定に時間をとられず,すぐに学習を開始することができます。

こんな方におすすめ

  • Javaを業務レベルで使えるようになりたい人
  • 細かい設定をせずすぐに学習をはじめたい人

目次

0時間目 仮想環境の準備

Part1 Javaプログラミング
1時間目 イントロダクション

  • 1-1 Hello, World!
  • 1-2 プログラムとは
  • 1-3 Eclipseを使った開発

2時間目 プログラミングの基礎

  • 2-1 変数とデータ型
  • 2-2 プログラムの制御構造
  • 2-3 コメント機能

3時間目 クラスとインスタンス ~前編

  • 3-1 機能の分割
  • 3-2 メソッド・クラスの活用

4時間目 クラスとインスタンス ~後編

  • 4-1 データを塊として取り扱う
  • 4-2 実践的な活用
  • 4-3 static修飾子とメソッド
  • 4-4 値型と参照型

5時間目 覚えておきたいJavaの文法

  • 5-1 列挙型と定数
  • 5-2 switch分による条件分岐
  • 5-3 文字列の取り扱い
  • 5-4 少数の取り扱い

6時間目 インターフェイス

  • 6-1 インターフェイス
  • 6-2 ポリモーフィズム

7時間目 コレクション

  • 7-1 コレクションとは
  • 7-2 リスト
  • 7-3 セット
  • 7-4 マップ

8時間目 リソースの取り扱い

  • 8-1 例外の取り扱い
  • 8-2 ファイルの出入力
  • 8-3 ログ

Part2 ソフトウェア開発とテスト
9時間目 ソフトウェアテスト

  • 9-1 ソフトウェアテストとは
  • 9-2 ホワイトボックステスト
  • 9-3 ブラックボックステスト
  • 9-4 バグレポート

10時間目 デバッグ

  • 10-1 デバッグとテスト
  • 10-2 JUnit
  • 10-3 基本的なJUnitテスト
  • 10-4 バグの場所を特定する
  • 10-5 ソースコードを静的に読むデバッグ
  • 10-6 プログラムの挙動を動的に見るデバッグ
  • 10-7 バグレポートと再現調査
  • 10-8 デバッグのサイクル

11時間目 リファクタリング

  • 11-1 よいコードと悪いコード
  • 11-2 アンチパターン
  • 11-3 リファクタリングの実践
  • 11-4 開発サイクルとリファクタリング

12時間目 Webアプリケーション

  • 12-1 Webアプリケーション
  • 12-2 Webアプリ開発の基本
  • 12-3 WebアプリとJava
  • 12-4 サーバ上でのWebアプリ

13時間目 動的ページ

  • 13-1 JSTLによる処理
  • 13-2 JSTLプログラミング
  • 13-3 formを使った入力画面

14時間目 データの保存

  • 14-1 ステートとセッション
  • 14-2 データベースの基礎
  • 14-3 データベース操作

15時間目 Webアプリケーションのセキュリティ

  • 15-1 Webとセキュリティ
  • 15-2 情報を守るための技術
  • 15-3 よくあるセキュリティホール

サポート

正誤表

「15時間でわかるJava集中講座」(2014年12月5日 初版 第1刷発行)におきまして,下記の誤りがございました。お買い上げ頂いた読者の皆様ならびに関係各位に謹んでお詫び申し上げますとともに,当該箇所につきましては訂正内容に読み換えてくださいますよう,お願い申し上げます。

(2015年6月9日更新)

P.025 プログラムの実行結果

Hello,world!
Hello,World!

P.029 1-3-2見出し

1-3-2 EclipseでHello,world!
1-3-2 EclipseでHello,World!

P.030 1行目

~確認し,[完了]を押すと,
~確認し,[終了]を押すと,

P.81 リスト3.15

for (int i = 3; i < testNumber; i = i + 2) {
if (testNumber % i == 0) {
return false;
}
return true;
}
}
for (int i = 3; i < testNumber; i = i + 2) {
if (testNumber % i == 0) {
return false;
}
}
return true;
}
}

P.110 ソースコードへの注釈

Integer c = new Integer(10);  true
System.out.println(a == b);    true
System.out.println(a == c);    false
System.out.println(b == c);
Integer c = new Integer(10);
System.out.println(a == b);   true
System.out.println(a == c);   true
System.out.println(b == c);   false

                                            数値同士を比較
System.out.println(a == b.intValue());      数値同士を比較
System.out.println(a == c.intValue());      インスタンスの同一性を比較
System.out.println(b == c);
System.out.println(a == b.intValue());       数値同士を比較
System.out.println(a == c.intValue());       数値同士を比較
System.out.println(b == c);                  インスタンスの同一性を比較

P.111

Integer a = null;
System.out.println(a.intValue(10));
Integer a = null;
System.out.println(a.intValue());

Integer a = null;
if(a != null){
    System.out.println(a.intValue(10));
}
Integer a = null;
if(a != null){
    System.out.println(a.intValue());
}

P.213

package jp.co.example.java15;

import java.util.Date;

public class Main{
package jp.co.example.java15;

public class Main{

P.275

greeter.login(guest);
void login(Account guest);

P.365 リスト13.28

<div class="col-md-2">
<img src="<c:url value="${itemStock.item.picture}" />"
 id="itemImage-<c:out value="${itemStock.item.id}"/>"/>
</div>
<div class="col-md-2">
<img src="<c:url value="${itemStock.item.picture}" />"
 id="itemImage-<c:out value="${itemStock.item.id}"/>" class="img-rounded"/>
</div>

P.406 リスト15.7

</c:if>
</c:forEach>
<button class="btn" type="submit" id="itemAddCart-<c:out value=
"${itemStock.item.id}"/>">カートに追加</button>
</select>
</form>
</c:if>
</c:forEach>
</select>
<button class="btn" type="submit" id="itemAddCart-<c:out value=
"${itemStock.item.id}"/>">カートに追加</button>
</form>

P.407 リスト15.9

    @FormParam(item-id") int itemId, @FormParam("amount") int amount
    @FormParam("token") String token){
String usetId = request.getSession().getId();
String serverToken = makeToken(userId);

if (serverToken == null || !(serverToken.equals(token))) {
    messages.add("カートへは注文画面から注文してください。");
}
:
:
:
}
    @FormParam(item-id") int itemId, @FormParam("amount") int amount,
    @FormParam("token") String token){
String userId = request.getSession().getId();
CartService cartService = getCartService();

CartAddResult result = cartService.addCart(userId, itemId,amount);
Cart cart = cartService.getCart(userId);
List<String> messages = new ArrayList<>();

String serverToken = makeToken(userId);

if (serverToken == null || !(serverToken.equals(token))) {
messages.add("カートへは注文画面から注文してください。");
}
:
:
:
}

P.408 リスト15.10

private String makeToken(final String sessionId) throws
NoSuchAlgorithmException {
    String result = null;
    MessageDigest messageDigest;

    try {
        messageDigest = MessageDigest.getInstance("SHA-256");
        messageDigest.update(sessionId.getBytes());
        result = toHexString(messageDigest.digest());
    } catch (NoSuchAlgorithmException e) {
        // TODO Webアプリのログ出力に合わせてログ出力をすること
        e.printStackTrace();
        throw e;
    }

    return result;
}
private String makeToken(final String sessionId) {
    String result = null;
    MessageDigest messageDigest;

    try {
        messageDigest = MessageDigest.getInstance("SHA-256");
        messageDigest.update(sessionId.getBytes());
        result = toHexString(messageDigest.digest());
    } catch (NoSuchAlgorithmException e) {
        // TODO Webアプリのログ出力に合わせてログ出力をすること
        e.printStackTrace();
        throw new RuntimeException(e);
    }

    return result;
}

Kaitou.pdf
P.27 11時間目Q4解説

public class PurchaseUtils {
    public File getItemInfoFile() {
        new File("resources/item.csv")
    }

}
public class PurchaseUtils {
    public File getItemInfoFile() {
        return new File("resources/item.csv");
    }

}

補足情報

(2015年6月9日更新)

P.224 リスト8.14:Main.java
リストを実行するとimport部分にエラーが出る件について

エラーの解消には,新しくライブラリをダウンロードして,適切にビルドパスを設定する必要があります。

設定は以下の手順で行います。

  1. デスクトップの[workspace]-[chapter08]を開き,[lib]ディレクトリを作成する。

    fig1.jpg

  2. Apache Commons Loggingのダウンロードサイトへアクセスする。(注1

  3. [Apache Commons Logging 1.2]‐[Binaries]の[commons-logging-1.2-bin.tar.gz]をクリックしてダウンロード(保存)する。

    fig2.jpg

  4. デスクトップの[guest のホーム]‐[Downloads]‐[commons-logging-1.2-bin.tar.gz]を順に開くと,デスクトップに[commons-logging-1.2-bin.tar.gz]のアイコンが表示される。

    fig3.jpg

  5. デスクトップの[commons-logging-1.2-bin.tar.gz]‐[commons-logging-1.2] を1.で作成した[lib]ディレクトリにコピー(ドラッグ&ドロップ)する。

    fig4.jpg

  6. Eclipse を起動し,[chapter08]‐[lib]を開き,[commons-logging-1.2.jar]を右クリックする。続いて,メニューの[ビルド・パス]‐[ビルド・パスに追加]を選択する。

    fig5.jpg

以上の操作を行うと,プロジェクトに[参照ライブラリー]が追加され,エラーが解消されます(注2)。

fig6.jpg

注1)
仮想環境の時刻が著しくずれている場合,ブラウザでの検索時にSSL証明書エラーが発生する可能性があります。
注2)

[chapter08]‐[lib]が表示されない場合は,[chapter08]を右クリックして,メニューより[更新]を選択します。

このエラーを修正した学習環境は以下よりダウンロードいただけます。

ダウンロード
Kasou.zip

ダウンロード

電子版用ダウンロード

電子版用に,付録DVD-ROM収録コンテンツを以下から入手できます。ダウンロードには電子版本紙に掲載されているIDとパスワードが必要です。

商品一覧