Category Archives: Java SE 8 実践プログラミング

「Java SE 8実践プログラミング」第25回(1/23)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)

範囲 pp.230-233

第9章 Java7の機能を復習する

  • 9.5 その他の変更
    • 9.5.5 URLClassLoader
    • 9.5.6 BitSet
      • BitSetの使用事例もあるとよかったです。
  • 練習問題

「Java SE 8実践プログラミング」は今回で終了です。
お疲れ様でした。

「Java SE 8実践プログラミング」第24回(1/20)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)

範囲 pp.218-230

第9章 Java7の機能を復習する

  • 9.2 ファイル処理
    • 9.2.2 ファイルの読み書き
    • 9.2.3 ファイルとディレクトリを作成する
    • 9.2.4 ファイルをコピー、移動、削除する
  • 9.3 equals、hashcode、compareToのメソッドを実装する
    • 9.3.1 null安全な同値検査
    • 9.3.2 ハッシュコードを計算する
    • 9.3.3 整数型を比較する
  • 9.4 セキュリティ要件
    • p.227 中ほど
      インストーラにJVMを同梱した場合、そのJVMに脆弱性が見つかったときはどうするのだろう。
  • 9.5 その他の変更
    • 9.5.1 文字列を数値へ変換する
      • p.228 コード例下3行目 誤植
        BitInteger → BigInteger
    • 9.5.2 グローバルなロガー
    • 9.5.3 null検査
    • 9.5.4 ProcessBuilder

「Java SE 8実践プログラミング」第23回(1/16)

Posted on by 0 comment

参加者 今井(読み手)、青木(記)

範囲 pp.205-218

第8章 その他のJava8機能を理解する

  • 8.7 その他の細かな変更
    • 8.7.5 JDBC
      • ResultSet.getObject(String columnLabel, Class<T> type)のAPIはここ
      • p.206 l.1 「DATALINK」は「link列のデータ」の誤りではないかと思う。
  • 練習問題

第9章 Java7の機能を復習する

  • 9.1 例外処理の変更
    • 9.1.1 try-with-responses文
    • 9.1.2 抑制された例外
    • 9.1.3 複数の例外をキャッチする
    • 9.1.4 リフレクションによるメソッド呼び出しでの容易な例外処理
  • 9.2 ファイル処理
    • 9.2.1 パス

「Java SE 8実践プログラミング」第22回(1/13)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)

範囲 pp.194-205

第8章 その他のJava8機能を理解する

  • 8.5 ファイルを扱う
    • 8.5.2 ディレクトリのエントリのストリーム
    • 8.5.3 Base64エンコーディング
  • 8.6 アノテーション
    • 8.6.1 反復アノテーション
    • 8.6.2 型使用アノテーション
      • Checker Frameworkはここ
      • p.201 l.2 誤植 「extends @readOnly> Person」→ 「extends @readOnly Person>」
    • 8.6.3 メソッドのパラメータリフレクション
  • 8.7 その他の細かな変更
    • 8.7.1 null検査
    • 8.7.2 遅延メッセージ
    • 8.7.3 正規表現
    • 8.7.4 ロケール
      • p.205 ソースコード中のコメントの一致しているロケールの表記が間違い正しくは言語と国の区切り文字は’_’。

「Java SE 8実践プログラミング」第21回(1/9)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)

範囲 pp.184-194

第8章 その他のJava8機能を理解する

  • 8.1 文字列
  • 8.2 数値クラス
  • 8.3 新たな算術関数
  • 8.4 コレクション
    • 8.4.1 コレクションクラスに追加されたメソッド
    • 8.4.2 コンパレータ
    • 8.4.3 Collectionsクラス
  • 8.5 ファイルを扱う
    • 8.5.1 行のストリーム
      • p.193 上のコード例
        実用的には、passwordEntryをtryの前で宣言してtryの後で使用するのだろう。

「Java SE 8実践プログラミング」第20回(12/26)

参加者 今井(読み手)、沼田(記)
範囲 pp. 171 – 183

第7章 Nashorn JavaScriptエンジンの活用

  • 7.8 リストとマップ
  • 7.9 ラムダ式
  • 7.10 Javaクラスの拡張とJavaインタフェースの実装
  • 7.11 例外
  • 7.12 シェルスクリプト記述
    • 7.12.1 シェルコマンドを実行する
    • 7.12.2 文字列補間
    • 7.12.3 スクリプトへの入力
  • 7.13 NashornとJavaFX
  • 練習問題

「Java SE 8実践プログラミング」第19回(12/19)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)

範囲 pp.161-171

第7章 Nashorn JavaScriptエンジンの活用

  • 7.1 コマンドラインからNashornを実行
    • p.163 「デリミタに$を設定することで、内容全体を読み込むことができるかについは、私は確信がありませんでした。」について、行の末尾($)をデリミタにすると最終行が確実に読み込める確信がないということか?
  • 7.2 JavaからNashornを実行する
  • 7.3 メソッドを呼び出す
  • 7.4 オブジェクトを生成する
    • p.167 Math.floorMod()のJavadocはここ
    • p.167 中ほど「効率性を問題としないのであれば」とありますが、実行時間にどの程度差があるのか実験してみました。(10回の平均で算出)
      次を5000万回実行するのに要した時間は22235.8ミリ秒で、これを1とすると、

      var URL=java.net.URL
      var url = new URL(‘http://horsetmann.com’)

      次を5000万回実行するのに要した時間は0.87でした。

      var url = new java.net.URL(‘http://horsetmann.com’)

      URLを定義しておいて次を5000万回実行するのに要した時間は0.84でした。

      var url = new URL(‘http://horsetmann.com’)
  • 7.5 文字列
  • 7.6 数値
  • 7.7 配列を扱う

 

「Java SE 8実践プログラミング」第18回(12/16)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)

範囲 pp.151-158

第6章 並行処理の機能強化

  • 6.4 完了可能フューチャー
    • 6.4.1 フューチャー
    • 6.4.2 フューチャーを合成する
    • 6.4.3 合成パイプライン
    • 6.4.4 非同期操作を合成する
      • p.156 中ほど, p.157 表6.2
        本文(p.156 中ほど~)には、「CompletableFuture<T>とCompletableFuture<U>の処理を並列に実行して…」とか、「2つのCompletableFuture<T>の処理を並列に実行します。」とかあるが、この表のパラメータにはCompletableFutureが一つしかない。パラメータが足りない?
        → この表はCompletableFuture<T>のメソッドとして書いてある。「CompletableFuture<T>とCompletableFuture<U>の..」とか「2つの…」の意味は、この呼び出し先CompletableFutureオブジェクトと引数で与えられるComletableFutureオブジェクトのこと。
      • p.156 メモ, 訳注
        メモには、「この節のメソッドは、… CompletionStage型を受け付けます」とあるが、訳注には、「allOfメソッドとanyOfメソッドを除いた…」とある。
        → 訳注が正しい。
  • 練習問題

「Java SE 8実践プログラミング」第17回(12/12)

参加者 今井(読み手)、青木、沼田(記)
範囲 pp. 141 – 151

第6章 並行処理の機能強化

  • 6.1 アトミック値(メモの次~)
    • LongAdderのincrement()は戻りの型がvoidでadd(1)と同じでした。
    • p141 コード例
      poolの型はなんだろう?
  • 6.2 ConcurrentHashMapの改善
    • p143 メモ
      APIを確認したところ、size()ではなくmappingCount()を使用するようにしてください、となっていました。
    • 6.2.1 値の更新
      • p.145の三つ目のコード例
        使用するか否かに関わらず毎回LongAdderをnewするとコストがかかるのでは、と思ったらそのすぐ下に、必要な時にだけコンストラクタを呼び出す書き方について記述されていました。
    • 6.2.2 大量操作
    • p.147 searchメソッドの各バージョン
      APIを確認したところ、searchメソッド以外の第二引数は BiFunction ではなく Function でした。
      searchKeys
      searchValues
      search
      searchEntries
  • 6.2.3 セットのビュー
  • 6.3 配列の並列操作
  • 「Java SE 8実践プログラミング」第16回(12/9)

    Posted on by 0 comment

    参加者 沼田(読み手)、今井、青木(記)

    範囲 pp.131-141

    第5章 日付と時刻の新たなAPI

    • 5.6 フォーマットと解析 (p.131 コード例の後から。p.132表5.6は前回で済)
    • 5.7 古いコードとの相互運用
      • p.135 表5.9の4行目 の「新しいクラス」へのメソッドが間違っている。cal.toZonedDateTime()ではなくtimestamp.toLocalDateTime()が正しい。
        6行目の「古いクラスへ」のTime..valueOf(localTime)の「.」が1つ余分。
    • 練習問題

    第6章 並行処理の機能強化

    • 6.1 アトミック値(p.141メモまで)