セミナー備忘録

今日はOracleのセミナーに参加してきました。

OCJ-P Gold SE 8の試験対策セミナーです。

忘れないうちに内容をまとめておこうと思います。

 

出題範囲

  1. Javaクラスの設計
  2. 高度なJavaクラスの設計
  3. ジェネリックスとコレクション
  4. コレクション、ストリーム及びフィルタ
  5. ラムダ組み込み関数型インタフェース
  6. JavaストリームAPI
  7. 例外とアサーション
  8. Java SE 8の日付/時刻APIを使用する
  9. Java I/Oの基本
  10. JavaファイルI/O(NIO.2)
  11. Java の同時実効性
  12. JDBCによるデータベース・アプリケーションの作成
  13. ローカライズ

Javaのクラス設計

  • カプセル化を実装する
  • アクセス修飾子やコンポジションを含む継承を実装する
  • ポリモーフィズムを実装する
  • ObjectクラスのhashCode、equals、及びtoStringメソッドをオーバーライドする
  • シングルトン・クラスと普遍クラスを作成及び使用する
  • 初期化ブロック、変数、メソッド、及びクラスでキーワードstaticを使用する

特に難しい箇所はないと思うが、軽く復習する。


高度なJavaクラスの設計

  • 抽象クラス及びメソッドを使用するコードを作成する
  • キワードfinalを使用するコードを作成する
  • 静的な内部クラス、ローカル・クラス、ネストしたクラス、無名内部クラスなどの内部クラスを作成する
  • メソッドやコンストラクタが列挙型内にあるものを含めて、列挙型を使用する
  • インターフェースを宣言、実装、拡張するコードを作成する。@Override注釈を使用する
  • ラムダ式を作成及び使用する

内部クラスへのアクセスについて、どのようにアクセスするのか押さえる。(staticクラスの場合とか)

ラムダ式の使い方はしっかり身につける。

関数型インタフェースの要件を確認する。(java.lang.objectのpublicメソッドは要件を阻害しないなど)


ジェネリックスとコレクション

  • ジェネリックスクラスを作成及び使用する
  • ArrayList、TreeSet、TreeMap、及びArrayDequeueオブジェクトを作成及び使用する
  • java.util.Comparator及びjava.lang.Comparableインタフェースを使用する

ComparatorとComparableの使い分けをしっかりと押さえる。

Comparatorは関数型インタフェースのため、ラムダ式と絡む。


コレクション、ストリーム及びフィルタ

  • ストリームとリストのforEachメソッドを使用して反復処理を行う
  • streamインタフェースのパイプライン処理について説明する
  • ラムダ式を使用してコレクションをフィルタリングする
  • ストリームとともにメソッド参照を使用する

ストリームの処理が実行されるのは終端操作が実行される時であることを理解する。

メソッド参照の書き方を押さえる。


ラムダ組み込み関数型インタフェース

  • Predicate、Consumer、Function、Supplierなどjava.util.functionパッケージに含まれている組み込みインタフェースを使用する
  • プリミティブ型を扱う関数型インタフェースを使用する
  • 2つの引数を扱う関数型インタフェースを使用する
  • UnaryOperatorインタフェースを使用するコードを作成する

オブジェクト型の関数型インタフェースとプリミティブ型の関数型インタフェースの違いを理解する。(実装するときの引数が異なる)

引数を複数扱える関数型インタフェースがある。(2つの場合はbiがつく)


JavaストリームAPI

  • 基本バージョンのmapメソッドを含むpeek及びmapメソッドを使用してオブジェクトからデータを抽出する
  • findFirst、findAny、anyMatch、allMatch、noneMatchなどの探索メソッドを使用してデータを検索する
  • Optionalクラスを使用する
  • ストリームのデータ・メソッドと計算メソッドを使用するコードを作成する
  • ストリームAPIを使用してコレクションをソートする
  • collectメソッドを使用してコレクションに結果を保存する。Collectorsクラスを使用してデータをグループ化/パーティション化する
  • ストリームAPIのmerge及びfindMapメソッドを使用する

Optional型はストリームAPIとセットでなくても使えることに注意する。

flatMapの使い方を理解する。

reduceメソッドは引数がオブジェクトの場合、optionalを返すのでその後にorElseメソッドを実行しないとエラーになるかもしれない。


例外とアサーション

  • try-catch及びthrow文を使用する
  • catch、multicatch及びfinally句を使用する
  • try-with-resources文とともにAutoCloseableリソースを使用する
  • カスタムな例外と自動クローズ可能なリソースを作成する
  • アサーションを使用して不変量をテストする

try-with-resourceの文法を押さえる。

AutoCloseableについて学習し、実装するためにはどうすれば良いのか理解する。


Java SE 8の日付/時刻APIを使用する

  • LocalDate、LocalTime、LocalDateTime、Instant、Period及びDurationを使用して日付と時刻を単一オブジェクトに結合するなど、日付に基づくイベントと時刻に基づくイベントを作成及び管理する
  • 複数のタイムゾーン間で日付と時刻を操作する。日付と時刻の間の書式設定など、夏時間による変更を管理する
  • Instant、Period、Duration及びTemporalUnitを使用して、日付に基づくイベントと時刻に基づくイベントを定義、作成及び管理する

日付オブジェクトは不変(Immutable)であることに注意する。

基本的なクラスについて押さえる。


Java I/Oの基本

  • コンソールに対してデータの読み取り/書き込みを行う
  • java.ioパッケージのBufferedReader、BufferedWriter、File、FileReader、FileWriter、FileInputStream、FileOutputStream、ObjectOutputStream、ObjectInputStream及びPrintWriterを使用する

基本のReder、Writerを押さえてからStreamについて学習する


JavaファイルI/O(NIO.2)

  • Pathインタフェースを使用してファイル及びディレクトリ・パスを操作する
  • Filesクラスを使用して、ファイルまたはディレクトリのメタデータのチェック、読み取り、削除、コピー、移動、管理を行う
  • NIO.2とともにストリームAPIを使用する

NIO.2はストリームAPIと連動するのでそこを中心的に学習する


Java の同時実効性

  • RunnableとCallableを使用してワーカー・スレッドを作成する。ExecuteServiceを使用してタスクを同時に実行する
  • スレッド化の潜在的な問題であるデッドロック、スタベーション、ライブロック及び競合状態を識別する
  • キーワードsynchronizedとjava.util.concurrent.atomicパッケージを使用してスレッドの実行順序を制御する
  • CyclicBarrierやCopyOnWriteArrayListなど、java.util.concurrentのコレクションとクラスを使用する
  • 並列Fork/Joinフレームワークを使用する
  • リダクション、分解、マージ・プロセス、パイプライン、パフォーマンスなど、並列ストリームを使用する

Threadについては全体的に学習し直す。

出題傾向的によく出る問題らしいので、内容を全体的に理解する。


JDBCによるデータベース・アプリケーションの作成

  • Doriver、Connection、Statement及びResultSetインタフェースと、プロバイダの実装に対するこれらの関係など、JDBC APIの中核を構成するインタフェースについて説明する
  • JDBC URLなど、DriverManagerクラスを使用してデータベースに接続するために必要なコンポーネントを識別する
  • ステートメントの作成、結果セットの取得、結果の反復、結果セット/ステートメント/接続の適切なクローズを含め、問い合わせを発行しデータベースから結果を読み込む

基本を押さえる。

DBへの接続方法、ResultSet、RowSetの使い方について学習する。


ローカライズ

  • アプリケーションをローカライズするメリットについて説明する
  • Localeオブジェクトを使用してロケールを読み取り説明する
  • Propertiesファイルの作成と読み取りを行う
  • ロケールについてリソース・ハンドルを作成し、アプリケーションでリソース・ハンドルをロードする

リソース・ハンドルの使い方、Propertiesファイルなどの置き場所?を学習する。

 

 

とりあえず全体的にはこんな感じかな。

また今度それぞれの範囲で詳細についてまとめていこうと思います。

 

ブログ始めました。

 

その日にあった出来事とか、気がついたこととか書いていきたいと思います。

 

今日は中野で牛こくラーメンというものを食べました。

和牛と野菜のスープで、とてもサラッとしていて食べやすかったですね。

チャーシューもすごく美味しい。

次は他の味のスープを食べてみたいですね。