やり直しJava

やり直しJava

はじめに

このサイトは J2SE5.0ぐらいまでの開発経験のある管理人が、ラムダ式やストリームが追加されたのを契機に Javaを学び直した際の 学習内容をまとめたサイトになります。ラムダ式やストリームといった比較的新しく追加された機能や マルチスレッドのようにJavaの登場初期から進化している機能を重点的に取りまとめています。

長年Javaに携わっているけれども、Javaの仕様変更や 追加された機能をフォローできていない人にとって 役に立つ内容ではないかと思います。また、私自身 文字コードやマルチスレッドなど、学び直すことによって理解が曖昧だった部分が多かったことに気付きましたので、中級者以上の人にとっても 知識の再確認をする上で 役に立つのではないかと思います。尚、初歩的な部分も網羅的に取り上げてはいますが 内容は充実していないので、初学者の方は 別途入門書や入門サイトを利用されることをお勧めします。

このサイトは主に 書籍「Effective Java 第3版」を参考にしています。Effective Javaは Javaの開発に携わった著者による書籍だけあって 示唆に富んだ内容で溢れています。しかし、内容を理解するためにはそれなりの知識が求められます。Effective Javaを一読して理解できなかった部分について、調べたりサンプルコードを書いたりして 自分なりに解釈した内容などをまとめています。その他に JPCERTの「Javaコーディングスタンダード CERT/Oracle版)」の各ルールを盛り込んでいます。

このサイトで重点的に取りまとめた項目は次の通りです。

  • ラムダ式ストリーム
    Javaに限らず他の言語でも 関数型言語の特徴を取り入れる動きが盛んです。Java SE 8で追加された 関数型言語の特徴である ラムダ式やストリームについて学んだ内容をまとめています。
  • 総称型
    J2SE 5.0で取り入れられた総称型は 主にコレクションの要素の型を指定して型安全を保証する場面で使われることが多かったのですが、ラムダ式の導入により 関数型インタフェースで見かけることが多くなりました。<? extends T>とか<? super T>といった境界ワイルドカードやヒープ汚染などについて 学んだ内容をまとめています。
  • null安全
    ScalaやKotlinなど 比較的新しい言語では null安全を取り入れています。Javaでは Optionalクラスによって 部分的にnull安全を実現しています。null安全の概念やOptionalなどについて 学んだ内容をまとめています。
  • マルチスレッド
    Java登場当初のセールスポイントの一つに マルチスレッドの実装が容易ということがありましたが、Javaのバージョンアップに伴い マルチスレッドの機能も進化してきました。スレッドプール・Futuer/Promise・ロックフリーな同期化支援機能など 進化してきた機能について学んだ内容をまとめています。
  • ファイルとディレクトリ操作日付と時刻
    Javaの登場当初から ファイルとディレクトリ操作・日付と時刻に関するクラスは用意されていたのですが、Java SE 7と8でそれらを一新するパッケージが追加されました。新しいパッケージについて学んだ内容をまとめています。
  • 文字コード
    Javaの内部文字コードはUTF-16ですが、Unicode自体 Javaの登場当初に比べてバージョンアップしているため、Javaもそれに対応して 文字コードを扱うクラスが変更されてきました。日本語の大部分は2バイト長領域に収まるため この変更を意識する必要性が薄かったのですが、絵文字が4バイト長領域に割り当てられるようになってきたため UTF-16のエンコーディングを意識しないといけない場面が増えてきました。Unicodeの歴史と併せてJavaがどのように対応してきたのかについて学んだ内容をまとめています。

尚、章(投稿)によっては ものすごく長いページになっていますので、右サイドバーの目次をご活用ください。

参考サイト

このサイトでは Effective Javaの他にも沢山のJava関連サイトを参考にさせて頂きました。参考にさせて頂いたサイトは次のように参考サイトとして記載しています。

参考サイト

また、本文中で他のサイトを参照するような場合は 次のように記載しています。

参照先

目次

  1. イントロダクション
    1. 特徴
    2. 環境
    3. Hello World
  2. 基本1(基本的な文法)
    1. 用語
    2. 変数とデータ型
    3. 演算子
    4. 制御構文
    5. 配列
    6. 例外
  3. 基本2(クラスとインタフェース)
    1. オブジェクト指向プログラミング
    2. クラス
    3. インタフェース
    4. 列挙型
    5. アノテーション
    6. Object
  4. 基本3(比較的新しい機能・進化している機能)
    1. 総称型
    2. ラムダ式
    3. ストリーム
    4. null安全
    5. マルチスレッド
  5. ライブラリ
    1. コレクションフレームワーク
    2. ファイルとディレクトリ操作
    3. 日付と時刻
    4. 正規表現