高度なJava 8マテリアル

多くのJavaプログラマーが業界に進出し、「重い」テクノロジー(OpenJPA、Spring、JAX-RS、EJB、WS)に多大な注意を払っていることは周知の事実です。これにより、現代の企業プロジェクトに迅速に統合できる給与の伸び率を最大化します。



それらの多くは、最終的にこれらのフレームワークの基礎となるテクノロジー(JDBC、サーブレットAPI、NIO / NIO.2)に「下降」します。 ただし、多くの場合、言語自体とプラットフォームの機能を詳細に調査する時間がないことは残念です。



これは、繊細さや異国情緒ではなく、フレームワークの作業の重要な部分を構成するものです。サーブレットコンテナは複数のClassLoaderを使用し、JPA2プロバイダーはバイトコード操作を使用します。ライブラリの大半はReflection APIを使用し、Generics機能的インターフェース(java.lang.function。*)およびlambdの出現。



元のプラットフォーム(ClassLoader、Reflection API)の誤解は、Java 5(ジェネリック)の「革新」、そして現在ではJava 8(インターフェース、メソッドリンク、ラムダ、Stream API、JSR 308:Pluggable Type Systems) Generics + Java 8は単なる言語機能ではなく、部分的に関数型プログラミングスタイルへの移行であるという事実に注意する必要があります。



オンライン教育プラットフォームudemy.comでScala for Java Developersコースも教えています(Coursera / EdXに似ています)。



次のトピックに関する一定数の便利なリンク(私の意見では)を収集しました。

  1. インターフェイスのメソッド、メソッド参照、多重継承
  2. ラムダ(プロジェクトラムダ)
  3. ストリームAPI
  4. 機能的アルゴリズム
  5. 注釈
  6. ジェネリック
  7. Reflection API
  8. クラスローディング


誰かがそれらを役に立つと思うことを願っています



詳細情報



  1. インターフェイスのメソッド、メソッド参照、多重継承

    • インターフェイスの静的メソッド
    • インターフェイスのデフォルトメソッド
    • 多重継承で生きる方法:機会、紛争解決
    • メソッドリンク




  2. ラムダ(プロジェクトラムダ)

    • 背景、ラムダ構文
    • 詳細:レキシカルスコープ、実質的に最終、クロージャ、型推論、ターゲットタイピング、ラムダシリアル化




  3. ストリームAPI

    • 外部および内部の反復:マップ、フィルター、forEach
    • より複雑な操作:flatMap、reduce、collect
    • ストリームプロパティと操作プロパティ:即時/ターミナル、レイジー/イーガー、ステートレス/ステートフル、ショートサーキット、シリアル/パラレル、順序付け/順序付けなし、連想
    • 並列ストリームと暗黙的なフォーク/結合の統合




  4. 機能的アルゴリズム

    • 並列縮約は、モノイド(結合、中立要素)で機能します。 これはどういう意味ですか?
    • オプション、CompletableFuture、...およびその他のモナド。 これはどういう意味ですか?
    • カリー化、高次関数。 これはどういう意味ですか?
    • Java 8の組み合わせアルゴリズム




  5. 注釈

    • 注釈を定義する
    • メタ注釈:@ Target、@ Retention、@ Inherited、@ Repeatable、...
    • コンパイラー注釈:@ Override、@ SafeVarargs、@ SuppressWarnings、@ FunctionalInterface、...
    • Reflection APIを使用して注釈を引く
    • JSR 308:型注釈とプラグ可能な型システム
    • Checkerフレームワークによる型チェックの拡張:@ NotNull、@ GuardedBy、...




  6. ジェネリック

    • 制限された型パラメーター
    • 自己境界ジェネリック
    • ワイルドカード
    • Javaで実装されているように、制限(型の消去、ブリッジメソッド、非変更可能な型)




  7. Reflection API

    • java.lang.reflect
    • フレームワークがReflection API(JUnit、Mockito、Servlet API 3)を使用する方法




  8. クラスローディング

    • クラスファイル形式とクラスロード手順(ロード、リンク(検証、準備、解決)、init)
    • ClassLoader:ローダーを定義し、ローダーの階層を構築します
    • 動的なコード生成、オンザフライのコンパイル:コンパイラAPI、javaassist
    • 動的コード生成、バイトコードから収集:BCEL、cglib
    • 動的コード生成、クラスロード中の既存のバイトコードの変換








ウェビナー



8月5日に、上記のトピックに関する一連の8つのウェビナーが開始されます。 ウェビナーは2.5〜3時間続き、その間に問題と詳細を深く掘り下げます。 クラスは、火曜日と金曜日の18時00分から21時(モスクワ時間)に4週間、週2回開催されます。

費用

7月12日より前に支払った場合:225ドル。

7月19日より前に支払われた場合:250ドル。

7月26日より前に支払った場合:275ドル。

7月26日以降に支払う場合:300ドル。



連絡先



メール:GolovachCourses

スカイプ:GolovachCourses



All Articles