O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Java11へのマイグレーションガイド ~Apache Hadoopの事例~

2.536 visualizações

Publicada em

2019年5月18日開催された JJUG CCC 2019 Spring で発表した資料です。

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Java11へのマイグレーションガイド ~Apache Hadoopの事例~

  1. 1. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 2019年5月18日 鯵坂 明, 浅沼 孝信 Java11への マイグレーションガイド ~Apache Hadoopの事例~
  2. 2. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 自己紹介 鯵坂 明 (@ajis_ka) Apache Hadoop PMC 2018/9 中途入社 • Hadoop導入支援 • テクニカルサポート • Hadoopバージョンアッ プ + 新機能導入検証 • HadoopのJava11対応 2 浅沼 孝信 (@hayanige) Apache Hadoopコミッタ 2012/4 新卒入社 • Hadoop運用・開発 • NiFi導入・運用 • Hadoopバージョンアッ プ + 新機能導入検証 • HadoopのJava11対応
  3. 3. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. とは 3 OSSの分散処理基盤 • Hadoop Distributed FileSystem (HDFS) • 分散処理のスケジューリング、クラスタ のリソース管理 (YARN: Yet Another Resource Negotiator) • ほとんどがJavaで実装されている
  4. 4. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. HadoopとJava 11 4 Hadoopは現時点でJava 11に未対応 • Java 11対応のJIRA: HADOOP-15338 • 対応が終わると、Hadoopにまつわる重 大な問題を解決できると期待している • 今回は、重大な問題を2つ紹介
  5. 5. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. これ、見覚えありませんか? 5 accessors-smart-1.2.jar animal-sniffer-annotations-1.17.jar aopalliance-1.0.jar asm-5.0.4.jar asm-commons-6.0.jar asm-tree-6.0.jar audience-annotations-0.5.0.jar avro-1.7.7.jar bcpkix-jdk15on- 1.60.jar bcprov-jdk15on-1.60.jar commons-beanutils-1.9.3.jar commons-cli-1.2.jar commons-codec-1.11.jar commons-collections-3.2.2.jar commons-compress-1.18.jar commons-configuration2- 2.1.1.jar commons-csv-1.0.jar commons-daemon-1.0.13.jar commons-io-2.5.jar commons-lang-2.6.jar commons-lang3-3.7.jar commons-logging-1.1.3.jar commons-math3-3.1.1.jar commons-net- 3.6.jar commons-text-1.4.jar curator-client-2.13.0.jar curator-framework-2.13.0.jar curator-recipes-2.13.0.jar dnsjava-2.1.7.jar ehcache-3.3.1.jar error_prone_annotations-2.2.0.jar fst-2.50.jar geronimo-jcache_1.0_spec-1.0-alpha-1.jar grpc-context-1.15.1.jar grpc-core-1.15.1.jar grpc-netty-1.15.1.jar grpc-protobuf-1.15.1.jar grpc-protobuf-lite-1.15.1.jar grpc-stub-1.15.1.jar gson-2.2.4.jar guava-11.0.2.jar guava-20.0.jar guice-4.0.jar guice-servlet-4.0.jar hadoop-annotations-3.3.0-SNAPSHOT.jar hadoop-auth-3.3.0-SNAPSHOT.jar hadoop-client-api-3.3.0-SNAPSHOT.jar hadoop-client- minicluster-3.3.0-SNAPSHOT.jar hadoop-client-runtime-3.3.0-SNAPSHOT.jar hadoop-common-3.3.0-SNAPSHOT.jar hadoop-common-3.3.0-SNAPSHOT-sources.jar hadoop-common-3.3.0-SNAPSHOT- tests.jar hadoop-common-3.3.0-SNAPSHOT-test-sources.jar hadoop-kms-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-app-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-app-3.3.0-SNAPSHOT- sources.jar hadoop-mapreduce-client-app-3.3.0-SNAPSHOT-test-sources.jar hadoop-mapreduce-client-common-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-common-3.3.0-SNAPSHOT-sources.jar hadoop-mapreduce-client-common-3.3.0-SNAPSHOT-test-sources.jar hadoop-mapreduce-client-core-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-core-3.3.0-SNAPSHOT-sources.jar hadoop- mapreduce-client-core-3.3.0-SNAPSHOT-test-sources.jar hadoop-mapreduce-client-hs-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-hs-3.3.0-SNAPSHOT-sources.jar hadoop-mapreduce-client-hs- 3.3.0-SNAPSHOT-test-sources.jar hadoop-mapreduce-client-hs-plugins-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-hs-plugins-3.3.0-SNAPSHOT-sources.jar hadoop-mapreduce-client-hs-plugins- 3.3.0-SNAPSHOT-test-sources.jar hadoop-mapreduce-client-jobclient-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-jobclient-3.3.0-SNAPSHOT-sources.jar hadoop-mapreduce-client-jobclient-3.3.0- SNAPSHOT-tests.jar hadoop-mapreduce-client-jobclient-3.3.0-SNAPSHOT-test-sources.jar hadoop-mapreduce-client-nativetask-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-nativetask-3.3.0- SNAPSHOT-sources.jar hadoop-mapreduce-client-nativetask-3.3.0-SNAPSHOT-test-sources.jar hadoop-mapreduce-client-shuffle-3.3.0-SNAPSHOT.jar hadoop-mapreduce-client-shuffle-3.3.0- SNAPSHOT-sources.jar hadoop-mapreduce-client-shuffle-3.3.0-SNAPSHOT-test-sources.jar hadoop-mapreduce-client-uploader-3.3.0-SNAPSHOT.jar hadoop-mapreduce-examples-3.3.0-SNAPSHOT.jar hadoop-mapreduce-examples-3.3.0-SNAPSHOT-sources.jar hadoop-mapreduce-examples-3.3.0-SNAPSHOT-test-sources.jar hadoop-nfs-3.3.0-SNAPSHOT.jar hadoop-registry-3.3.0-SNAPSHOT.jar hadoop-yarn-api-3.3.0-SNAPSHOT.jar hadoop-yarn-api-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-api-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-applications-distributedshell-3.3.0-SNAPSHOT.jar hadoop-yarn-applications-distributedshell-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-applications-distributedshell-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-applications-unmanaged-am-launcher- 3.3.0-SNAPSHOT.jar hadoop-yarn-applications-unmanaged-am-launcher-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-applications-unmanaged-am-launcher-3.3.0-SNAPSHOT-test-sources.jar hadoop- yarn-client-3.3.0-SNAPSHOT.jar hadoop-yarn-client-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-client-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-common-3.3.0-SNAPSHOT.jar hadoop-yarn- common-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-common-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-csi-3.3.0-SNAPSHOT.jar hadoop-yarn-registry-3.3.0-SNAPSHOT.jar hadoop-yarn-server- applicationhistoryservice-3.3.0-SNAPSHOT.jar hadoop-yarn-server-applicationhistoryservice-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-server-applicationhistoryservice-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-server-common-3.3.0-SNAPSHOT.jar hadoop-yarn-server-common-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-server-common-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-server- nodemanager-3.3.0-SNAPSHOT.jar hadoop-yarn-server-nodemanager-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-server-nodemanager-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-server- resourcemanager-3.3.0-SNAPSHOT.jar hadoop-yarn-server-resourcemanager-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-server-resourcemanager-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-server- router-3.3.0-SNAPSHOT.jar hadoop-yarn-server-sharedcachemanager-3.3.0-SNAPSHOT.jar hadoop-yarn-server-tests-3.3.0-SNAPSHOT.jar hadoop-yarn-server-tests-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-server-tests-3.3.0-SNAPSHOT-tests.jar hadoop-yarn-server-tests-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-server-timeline-pluginstorage-3.3.0-SNAPSHOT.jar hadoop-yarn-server- timelineservice-3.3.0-SNAPSHOT.jar hadoop-yarn-server-timelineservice-hbase-client-3.3.0-SNAPSHOT.jar hadoop-yarn-server-timelineservice-hbase-common-3.3.0-SNAPSHOT.jar hadoop-yarn-server- timelineservice-hbase-coprocessor-3.3.0-SNAPSHOT.jar hadoop-yarn-server-timelineservice-hbase-tests-3.3.0-SNAPSHOT.jar hadoop-yarn-server-web-proxy-3.3.0-SNAPSHOT.jar hadoop-yarn-server- web-proxy-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-server-web-proxy-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-services-api-3.3.0-SNAPSHOT.jar hadoop-yarn-services-api-3.3.0-SNAPSHOT- sources.jar hadoop-yarn-services-api-3.3.0-SNAPSHOT-test-sources.jar hadoop-yarn-services-core-3.3.0-SNAPSHOT.jar hadoop-yarn-services-core-3.3.0-SNAPSHOT-sources.jar hadoop-yarn-services- core-3.3.0-SNAPSHOT-test-sources.jar hbase-annotations-1.4.8.jar hbase-client-1.4.8.jar hbase-common-1.4.8.jar hbase-protocol-1.4.8.jar HikariCP-java7-2.4.12.jar hsqldb-2.3.4.jar htrace-core- 3.1.0-incubating.jar htrace-core4-4.1.0-incubating.jar httpclient-4.5.6.jar httpcore-4.4.10.jar jackson-annotations-2.9.8.jar jackson-core-2.9.8.jar jackson-core-asl-1.9.13.jar jackson-databind-2.9.8.jar jackson-jaxrs-1.9.13.jar jackson-jaxrs-base-2.9.8.jar jackson-jaxrs-json-provider-2.9.8.jar jackson-mapper-asl-1.9.13.jar jackson-module-jaxb-annotations-2.9.8.jar jackson-xc-1.9.13.jar java-util- 1.9.0.jar javax.activation-api-1.2.0.jar javax.annotation-api-1.3.2.jar javax.inject-1.jar javax.servlet-api-3.1.0.jar javax.websocket-api-1.0.jar javax-websocket-client-impl-9.3.24.v20180605.jar javax- websocket-server-impl-9.3.24.v20180605.jar jaxb-api-2.2.11.jar jaxb-impl-2.2.3-1.jar jcip-annotations-1.0-1.jar jcodings-1.0.13.jar jersey-client-1.19.jar jersey-core-1.19.jar jersey-guice-1.19.jar jersey-json-1.19.jar jersey-server-1.19.jar jersey-servlet-1.19.jar jettison-1.1.jar jetty-annotations-9.3.24.v20180605.jar jetty-http-9.3.24.v20180605.jar jetty-io-9.3.24.v20180605.jar jetty-jndi- 9.3.24.v20180605.jar jetty-plus-9.3.24.v20180605.jar jetty-security-9.3.24.v20180605.jar jetty-server-9.3.24.v20180605.jar jetty-servlet-9.3.24.v20180605.jar jetty-util-9.3.24.v20180605.jar jetty- webapp-9.3.24.v20180605.jar jetty-xml-9.3.24.v20180605.jar jline-3.9.0.jar joni-2.1.2.jar jsch-0.1.54.jar json-io-2.5.1.jar json-smart-2.3.jar jsp-api-2.1.jar jsr305-3.0.0.jar jsr311-api-1.1.1.jar jul-to- slf4j-1.7.25.jar kerb-admin-1.0.1.jar kerb-client-1.0.1.jar kerb-common-1.0.1.jar kerb-core-1.0.1.jar kerb-crypto-1.0.1.jar kerb-identity-1.0.1.jar kerb-server-1.0.1.jar kerb-simplekdc-1.0.1.jar kerb- util-1.0.1.jar kerby-asn1-1.0.1.jar kerby-config-1.0.1.jar kerby-pkix-1.0.1.jar kerby-util-1.0.1.jar kerby-xdr-1.0.1.jar log4j-1.2.17.jar metrics-core-2.2.0.jar metrics-core-3.2.4.jar mssql-jdbc- 6.2.1.jre7.jar netty-3.10.6.Final.jar netty-all-4.1.27.Final.jar netty-buffer-4.1.27.Final.jar netty-codec-4.1.27.Final.jar netty-codec-http2-4.1.27.Final.jar netty-codec-http-4.1.27.Final.jar netty-codec-
  6. 6. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 問題1: classpathが長すぎる 6 Java One 2015のKeynoteで紹介された classpathが長すぎる、多数のユーザがいるこ とに起因する問題 1. ライブラリが1個紛失してもわからない 2. Conflictが発生したときの修正が困難 3. 内部APIが安全に変更できるかわからない ("Public is TOO public")
  7. 7. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Jigsaw導入に期待 7 Hadoopコミュニティでshaded jarを用意 • 2. の問題を部分的に解決 ただしメンテナンスが困難 • どのライブラリをshadeすべきか • shade漏れがないか "Jigsaw" を活用することで根本解決したい
  8. 8. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 問題2: GCの長期化 8 HDFSのマスタ(NameNode) • 名前空間とブロックの位置情報を全て ヒープに保持 • 大規模クラスタではヒープが数100GBに • STW(Stop-The-World)が長期化 • ヤフーのある環境では分単位の停止 • STWのたびにフェールオーバー
  9. 9. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 新しいGCアルゴリズムに期待 9 バージョンを上げると利用できるGCが増える • ZGC (Java 11) • Shenandoah GC (Java 12, RHEL同梱の OpenJDK 8にもbackport) いずれもSTWを最小限に抑えることを意図し て開発されている • ヤフーでも検証予定
  10. 10. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. バージョンを上げると いいことずくめ
  11. 11. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. なのに、なぜ Hadoopは Java 11対応 できていないのか?
  12. 12. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Hadoopの(メンテナにとって良くない)特徴 12 コードベースが巨大すぎる 全体的にレガシーなコード • 10年以上の歴史 • 非互換にことごとくハマる 後方互換性の維持 • Java 11とJava 8の両方で動くようにする • とんでもなく大変
  13. 13. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. ソースコードの規模 13 *.java ファイルの行数 • JUnit5: 9.8万行 • Apache Tomcat: 14万行 • Spring: 68万行 • Apache Hadoop: 158万行 • JDK 11: 368万行
  14. 14. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. レガシーコード実例 14 • こんなコードがいたるところにある • これはJava 11でもそのまま動くので、まだ まし
  15. 15. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Hadoopが影響を受けた問題 15 • '_' 1文字の命名の禁止 (JEP 213) • sun.misc.Cleaner が移動 (JEP 260) • Doclet (JEP 221) • HTML5 JavaDoc (JEP 224) • Java EEモジュールの削除 (JEP 320) • などなど
  16. 16. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. '_' 1文字の命名が禁止に 16 Milling Project Coins (JEP 213)で禁止 • Unnamed lambda parameterとして 利用するため (JEP 302) • HadoopのWeb UIの一部で利用してい るHamletという独自フレームワークに '_' が大量に含まれていた
  17. 17. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 互換性を意識しながら修正 17 '_' を '__' に変換するだけだと、互換性が崩れる '__' に変換したpackageを新規作成 古いpackageをJava 9以上でコンパイルさせない • Maven compiler plugin で設定 • リリースはJava 8で実施されるため、リリースに 影響しない パッチのサイズは1MBに... (HADOOP-11875)
  18. 18. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 18
  19. 19. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Hadoopとsun.misc.Cleaner 19 HadoopにおけるCleanerの利用目的 • munmap(2)の実装 • Linux前提なら、JNIから叩けばよい (mlockを使う場合はそうしている) • WindowsだとJNI経由で叩けないので Cleanerを利用
  20. 20. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. パッケージが移動したときに互換性を保つには? 20 Java 8でも動作させる必要があるため、直接 importせずにreflectionを使う (HADOOP- 12760) • sun.misc.Unsafe#invokeCleaner (移動 先のパッケージ) を呼び出す • Exceptionが出たらJava 8なので、 sun.misc.Cleanerを呼び出す • Apache Luceneの対応を参考にした
  21. 21. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 黒魔術 21 最後の手段であることに注意
  22. 22. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Doclet 22 Javadocの出力を整形してくれるツール • HadoopではDocletの機能を利用してJavadocの生成 を特定のアノテーションが付与されたクラス/メソッド のみに制限していた • Java 10からパッケージが変わった・・・ com.sun.tools.doclets -> jdk.javadoc.doclet • HadoopではJava10以降はDocletの機能を無効化
  23. 23. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Doclet 23 • 無効化したことで全てのクラス/メソッドで Javadocが生成されるようになった • 今まで隠れていたHTMLのフォーマット違反の 大量のJavadocが明るみに・・・ • みんなで頑張って修正(HADOOP-15785, HDFS-13939)
  24. 24. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. HTMLフォーマット違反の修正 24
  25. 25. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. HTMLフォーマット違反の修正 25
  26. 26. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. JDK11のJavadoc 26 • Java11からJavadocのデフォルト設定が HTML5に変わった(Java10まではHTML4が デフォルト) • そのままJavadocビルドするとまた大量のエ ラーが発生 • JavadocのオプションでHTML4でビルドする ように指定(HADOOP-15902)
  27. 27. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. EEモジュールがJDKから削除 27 Java EEモジュール • JDK9でdeprecatedになった • JDK11で削除された(JEP320) • Hadoopで使用していたライブラリを明示的に追加した • javax.activation-api(HADOOP-15775) • javax.annotation-api(HADOOP-15895)
  28. 28. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. EEモジュールがJDKから削除 28 基本的にはMavenのdependencyに追加するだけ
  29. 29. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. ライブラリの バージョンアップ
  30. 30. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. ライブラリのバージョンアップ 30 いくつかのライブラリではJDK11をサポートしてい るバージョンにアップグレードする必要がある • Log4J • JUnit • Mockito • Jersey などなど
  31. 31. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Log4J 31 Log4J1(1系) • 2015年8月 EOL • 当然Java11はサポート対象外(でも結構動く) Log4J2(2系) • Java8もJava11もサポート • 1系と比べてパフォーマンスが大幅に改善 • 1系からマイグレーションする方法にいくつかの選択肢がある • 1系の設定ファイルと非互換(ユーザーインパクト大)
  32. 32. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. SLF4Jを使ったマイグレーション 32 Log4J1 → Log4J1 with SLF4J • 実装(Log4J)とインターフェース(SLF4J)を分離 • 1系と2系で非互換なAPIをSLF4Jで吸収 • Jarと設定ファイルを差し替えれば簡単に2系への切り 替えができる • Hadoopでは最近ついに対応完了 追加削除で約1万6千行!
  33. 33. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. SLF4Jを使ったマイグレーション 33 Hadoop logging code SLF4J API slf4j-api.jar Bridge slf4j- log4j12.jar Log4J1 log4j.jar Bridge log4j-slf4j- impl.jar Log4J2 log4j-api.jar log4j-core.jar Hadoop logging code Log4J1 log4j.jar
  34. 34. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. SLF4Jを使ったマイグレーション 34 Log4J2 with SLF4J • SLF4Jを使っても設定ファイルは実装部分に依存する (1系なら1系の、2系なら2系の設定ファイルが必要) • HadoopのMavenビルド時のオプション(-Plog4j2) でLog4J2の設定ファイルが生成される方針にする予定 (HADOOP-16206)
  35. 35. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. JUnit 35 JUnit4 • サポートはJava8まで • 11はサポート対象外(でも結構動く) JUnit5 • Java8もJava11もサポート • JUnit4からのマイグレーション手順は整理されている ※それでもHadoopには大量のユニットテストがあるので大変 • junit-vintage-engineを使うとJunit4との共存が可能 徐々にJUnit5へのマイグレーションを進めることができる!
  36. 36. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. JUnit4からJUnit5への移行 36 移行前 • JUnit4のテストのみ存在 移行期(Hadoopはここ) • vintageを使ってJUnit4とJUnit5が共存 • 新しいテストは全てJUnit5で書く(メーリスで合意を得る) • 既存のJUnit4のテストは徐々にJUnit5に直す 移行完了時 • JUnit4へのdependencyを削除 • junit-vintage-engineのdependencyも削除
  37. 37. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Mockito 37 JUnitと組み合わせて使うモックライブラリ • Java11対応で2系へのアップグレードが必要 • (非公式ながら)移行ガイドが整ってる https://asolntsev.github.io/en/2016/10/11/ mockito-2.1 • アップグレード完了済み!(HADOOP-14178)
  38. 38. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Jersey 38 RESTfulなWebサービス開発のためのフレームワーク Update jersey from 1.19 to 2.x (HADOOP-15984) • 1系と2系でだいぶ互換性が崩れている • 移行ガイドが結構微妙 • Jersey1系 x JDK11で失敗するテストがある • やばい。
  39. 39. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. JDK11対応に向けて 39 残りの作業 • 依存ライブラリのアップグレードをがんばる • JDK11で通らないテストがまだたくさんあるので1つ ずつ潰していく(HADOOP-16264) • 今年中には対応できるかも Thanks to all the contributors!
  40. 40. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 最後に 40 Yahoo! JAPANでは多種多様なビッグデータを保 有・利活用するために、Hadoop, Spark, Kafka, NiFi, PrestoなどJVM上で動作する多数のミドル ウェアを取り扱っています。 一緒にJVMのチューニングや、Javaの最新機能を取 り込んでいくためにエンジニアを募集中です! https://about.yahoo.co.jp/hr/

×