Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

Java The Good Parts

Javaの基礎を復習しようということでO'rerillyの
Java The Good Parts』を購入。

Javaの言語の特性・利点を簡潔にまとめた書籍。
以下、要約。

  • 型システム

    3つの型
      クラス
        すべてのクラスはオブジェクトを継承
        レイアウトの定義
          フィールド
          メソッド
        継承
          単一継承
          オーバーライド
        オブジェクト
          クラスのインスタンス
      インターフェース
        複数実装可能
        インスタンス化不可能
        厳密な型チェック
      抽象クラス
        インスタンス化不可能
        抽象メソッド
        実メソッド
        

  • 例外

    Exception
      Throwableを継承
    分離
      メインロジック
      エラーロジック
    誤用に注意
      冗長な例外
      既存のRuntimeException
      RuntimeExceptionの継承
      空のcatch
      

  • パッケージ

    名前空間
    規約
      法人
        組織のドメイン
      個人
        ドメイン
        メールアドレス
    アクセス制御
      private
        自クラスのみ
      デフォルト
        パッケージ内
      protected
        継承範囲
      public
        すべて
        

    自動GC
    Javaはリファレンスのみ
      リファレンスがなくなったらGC対象
    自動管理外
      ファイル
      ソケット
      

    Javacコンパイル
      バイトコード
        JIT
          Just In Time Compiler
          最適化
    対応言語
      Python
      Scala
      Ruby
      PHP
      等々
    セキュリティ
      コードをロード前にチェック
        ベリファイア
    ポータビリティ
      Wite Once, Run AnyWhere
        マルチOS
        

    ドキュメンテーションコメント
      /** */
    位置
      クラスの前
      メソッドの前
      フィールドの前
    パッケージ
      Package.html
      packageinfo.java
        アノテーションが利用できることなどから後者の利用が推奨される
    オンラインドキュメント
      HTML
      

  • コレクション

    Java.util
    ジェネリック
      JDK1.5-
    各種コレクション
      List
        要素の重複可能
        ArrayList
      Set
        重複は認めない
        HashSet
          順序を保証しない
        TreeSet
          順序をサポート
        EnumSet
          列挙型のSet
      Map
        ランダムアクセス
        HashMap
        

    SerialversionUID
      バージョン判別
    transient
      シリアライズ対象外
    Remote Method Invocation
      Remote IF
      Serializable IF
        −>マーカーインターフェース
      

  • 並行処理

    CPUのマルチコア化
      CPUは単体の性能よりもマルチコア化による進化の傾向にある。
      CPUの性能を活かす意味で、マルチスレッド対応は重要となる。
    Thread
      実行スレッド
    Runnable
      スレッドとして実行可能であることを表すインターフェース
    ライブロック
      路上で同時に避けようとしていつまでもよけれないようなイメージ
      デッドロックに比べて問題の発見が困難
    デッドロック
      ユーザーAがa,bの順にロック。
      ユーザーBがb,aの順にロック。
      このような際に、相互にロックの解除待ちになる現象
      

    Javaの利点の一つでもある言語利用者の人口の多さがもたらす利点。
    ツール類が非常に充実しているため、自分で位置から用意する必要がない。
    また、技術情報も非常に多い。
    
    TOOL
      IDE
        Eclipse
          定番。私も業務ではEclipse一本です。
        NetBeans
          使ったことないですね。
      JUnit
        自動テスト
      FindBugs
        静的解析ツール
      その他
        ビルドツール
          Ant
          Maven
        VCS
          SVN
          Git
        継続ビルド
          Jenkins

Java: The Good Parts

Java: The Good Parts