Movatterモバイル変換


[0]ホーム

URL:


Yuji Kubota, profile picture
Uploaded byYuji Kubota
PDF, PPTX13,421 views

Migration Guide from Java 8 to Java 11 #jjug

JJUG CCC 2018 Fall - Migration Guide from Java 8 to Java 11.

Embed presentation

Download as PDF, PPTX
Migration Guide from Java 8 to Java 11KUBOTA Yuji (@sugarlife)LINE CorporationJJUG CCC 2018 Fall (2018/Dec/15)
KUBOTA Yuji (@sugarlife)JVM好き, IcedTea committer / OpenJDK AuthorWEB+DBで連載「Dive to Java」執筆中https://www.slideshare.net/YujiKubota/2
前置き本資料は jdk.java.net/11 からダウンロードできる JDK 11.0.1で極⼒動作確認していますが、全ては確認はできていませんのでお使いのコードを修正する前に動作確認してください実装は hg.openjdk.java.net/jdk-updates/jdk11u で確認しています3
本セッションで話すことJava 8からJava 11へのマイグレーション⽅法基本的なステップ特に影響が⼤きい⾮互換性の紹介本セッションで話さないこと新機能モジュール化 (Modularize)⾮互換性の網羅的な紹介Java 10: git.io/jdk10, Java 11: git.io/jdk114
マイグレーションの障壁互換性source: translating source file into class filebinary: preserving the link without errorbehavioral: code semantics executes at runtime{Deperecated | Removed | Changed}による⾮互換性が⽣じるAPIsOptions, JVM behavior/stdout/stderrTools, certificates, etc...5
Javaの⾮互換性ポリシーAPIは最短2バージョンで消えるDeprecated -> Removed@Deprecated(since=9, forRemoval=true) ]Deprecatedに関するドキュメントコンパイルは3バージョン前までサポートJEP 182: Policy for Retiring javac -source and -targetOptionsオプションもDeprecatedを経て削除されるのが「慣習」6バージョンごとのLTSのみ使っている場合はいきなり消える6
⾮互換性の追い⽅Issue tracker (primary source)Java Enhance Proposals(Java 9, Java 10, Java 11)Compatibility & Specification Review (Java 10, Java 11)Release Notes (Java 9, Java 10, Java 11)Source repository (Java 9 GA, Java 10 GA, Java 11 GA)Migration Guide (Java 9, Java 10, Java 11)原⽂(Java 9, Java 10, Java 11)7
Migration steps1. Run your existing application with Java 112. Compile your application with Java 113. Modularize your application8
Migration steps1. Run your existing application with Java 11 and Test2. Compile your application with Java 11 and Test3. Modularize your application9
Migration steps1. Run your existing application with Java 11 and Test2. Compile your application with Java 11 and Test3. Modularize your application10
Why not "Modularize" at this timeclasspath と modulepathコストとメリットProject PortlaJDK内部はモジュール化されたのでその対応は必要11
1. Run your existing application with Java 11Java 11で実⾏してテストが通るようにする新たにコンパイルはしない12
メリット・デメリットGoodFull support for Java 8Free Flight Recorder, AppCDSTLS 1.3 + Improved securityFull support for Linux containersParallel Full GC on G1New experimental GCs: Epsilon and ZGCImproved VM performanceBadFuture migration cost for source/binary incompatibilities(Support) license changes13
主な対処内容実⾏時例外Removed optionsRemoved APIsJDK Internal APIsReflection実⾏時の動作不整合・パフォーマンスBehavioral incompatibilitiesLinux ContainerDefault GC14
実⾏時例外⼤きく分けて以下の⼆種類Java オプションが古くて起動直後にエラーや警告が出るクラスやメンバが呼び出せなくてエラーが出る15
Removed optionsUnrecognized option: <option>完全に削除されて存在しないためエラー(JVM起動に失敗)Ignoring option <option>; support was removed in 11.0廃⽌されたため無視される (Obsolete) ⼀覧<option> was deprecated in version 11.0 and will likely beremoved in a future release.⾮推奨で将来的に削除予定 (Deprecated) ⼀覧Invalid -Xlog optionJEP 158: Unified JVM Logging (document)Unified JVM Logging以外は基本的に代替はなく削除するしかない16
完全に削除されたオプション例⼀部を除いて殆ど利⽤されていないオプションが削除されている-d32 / -d64-Xoss -Xsqnopause -Xoptimize -Xboundthreads -XusealtsigsAdjustConcurrency , PrintJVMWarnings-Xincgc , CMSIncrementalMode , ...UnlockCommercialFeatures , LogCommercialFeaturesロギング関連のオプション( TraceYoungGenTime 等)はよく利⽤されつつも削除されたが、 -Xlog に置き換わっただけで実害はない17
Unified JVM Logginghttps://www.slideshare.net/YujiKubota/unified-jvm-logging/5618
Removed APIs下記のようなクラスがない系のエラーが出た場合、再コンパイルせずに解決できる代表的なパターンが4つあるjava.lang.NoClassDefFoundError: <package>/<class>java.lang.ClassNotFoundException: <package>/<class>1. JEP 320よりJava EE及びCORBA関連モジュールが削除された2. Oracle JDKからJavaFXが削除された3. モジュール化に伴いJDK Internal APIアクセス厳格化4. モジュール化に伴いReflectionを⽤いたアクセス厳格化19
JEP 320: Remove the Java EE and CORBA Modules (1/2)CORBA以外はスタンドアロンで動作する代替ライブラリを⽤意すれば実⾏可能Java 8 パッケージ 代替ライブラリ(アーティファクト)JAF javax.activation com.sun.activation:javax.activationJTA javax.transaction javax.transaction:javax.transaction-api ※1JAXB javax.xml.bind.*javax.xml.bind:jaxb-api ,com.sun.xml.bind:jaxb-core ,com.sun.xml.bind:jaxb-impl ※2※1: `javax.transaction.xa`が含まれない 1.3 以降必須(JDK-8197533: Split java.sql to create module java.transaction.xaへの対応)※2: JAF (`java.activation`) に依存しているのでJAFも追加が必要20
JEP 320: Remove the Java EE and CORBA Modules (2/2)Java 8 パッケージ代替ライブラリ(アーティファクト)JAX-WS,SAAJjavax.xml.ws.* , javax.jws ,javax.jws.soap ,javax.xml.soapcom.sun.xml.ws:jaxws-riCommonAnnotationsjavax.annotationjavax.annotation:javax.annotation-apiCORBAjavax.activity , javax.rmi ,javax.rmi.CORBA , org.omg.*※3Java 9で --add-modules する解決策を提⽰している記事も多い(※4)が、Java 11以降はモジュール⾃体が削除されているため使えない※3: GlassFishプロジェクトが提供しているCORBAライブラリなどもある※4: Java 9の時点では正しい⽅法であり記事が誤りというわけではない21
Oracle JDKからJavaFXが削除されたjavafx/... から始まるクラスがないエラー等はJavaFXがOracleJDKから削除されたことが原因。なおOracle JDK以外は元々無いJavaFXのオープン実装 OpenJFX を利⽤することで解決できる。Maven Centralにも登録されている22
JDK Internal APIssun.* , com.sun.* , java.awt.peerjdeps ツールを使えば利⽤しているか調べられるjdeps --jdk-internals <class/jar...>java(c) --add-export <module>/<package>=ALL-UNNAMED<package> は jdeps の結果から解る<module> はJavaDocなどから確認ALL-UNNAMED はモジュール化されてないライブラリ根本的には「使わない」 or 「提供された移⾏先に移る」ようにコーディングし直して再コンパイルが必要sun.misc.Unsafe.defineClass → java.lang.invoke.MethodHandles.Lookup.defineClass , sun.misc.BASE64Encoder → java.util.Base64 等使い続ける場合も⼀部は jdk.internal* パッケージに移動してるので注意23
JDK Internal APIs (地獄の釜)Java 9以降は基本的に移⾏先が提供されている(はず)問題は Java 8 かつ Java 9 以降でも動くようにするケースリフレクションを利⽤して移⾏後APIを呼ぶ例外が起きたら移⾏前APIをリフレクション経由で呼ぶReflectiveOperationException, RuntimeException例︓LUCENE-6989, HADOOP-12760後者のIssueを修正した⽅の⽇本語解説資料24
Reflectionリフレクションを⽤いるとJDK Internal APIやPrivateなメンバにアクセス可能だが、JDKモジュール化に伴い原則禁⽌された--add-opens <module>/<package>=<module> 追加で解消可能左辺はアクセス先のmodule/package、右辺はアクセス元従来のモジュール化されてないライブラリからアクセスする場合は右辺に ALL-UNNAMED を指定するpublicなメンバにアクセスする場合は --add-export を追加根本解決はその様なリフレクションを⾏わないこと。つまりJava 8とJava 11以降を同時にサポートし続ける限り付きまとう問題25
JDKモジュール化に伴うモジュールが⾒つからないエラークラスパスに含めているパッケージなのに次のエラーが出る場合は、エラーに応じて対処が必要package <package> is declared in module <module>, which isnot in the module graph--add-modules <module>アプリをモジュール化しない限りは基本的に出ないはずpackage <package> is declared in module <module>, whichdoes not export it...--add-exports <module>/<package>=ALL-UNNAMEDmodule <module> does not "open <package>" to the unnamedmodule--add-opens <module>/<package>=ALL-UNNAMED下2つは主にJDK Internal APIやリフレクション関係で出る26
それでもクラスなどが⾒つからない系エラーが起きる例︓java.lang.ClassNotFoundException,java.lang.NoClassDefFoundError,java.lang.NoSuchMethodError, java.lang.NoSuchFieldError特に標準APIが⾒つからない場合は、削除されてる可能性が⾼いJava EEやJavaFXとは異なり代替ライブラリを⽤意すれば解決するものではないので、コードを修正してコンパイルからやり直す必要がある27
Bye Applet, Java Web StartAppletおよびJava Web Startは削除された(Oracleのwhite paper)Java Web Startの代替となり得るOSSとしてはicedtea-webGetDownupdate4jが、挙げられるが検証コストやサポートとのトレードオフとなる28
実⾏の動作不整合・パフォーマンスCIや性能試験等で確認すべき。性能⾯で特に注意すべきなのは以下Linux コンテナ対応が⾏われたコンテナに割り当てられているCPU・メモリに応じて適切に利⽤するようになった-XX:-ContainerSupport で戻せるデフォルトのGCが変わったParallel GCからG1 GCに変更された-XX:+UseParallelOldGC で戻せるCMS GCはひっそりと⾮推奨になりました29
しゃべくり GC戦国時代Serial / Parallel GCCMS GCG1 GCZGC (Java 11)Epsilon GC (Java 11)Shenandoah GC (Java 12)C4 GC (Azul Zing)30
動作の不整合例数字、⽇付、時間フォーマットが変わった-Djava.locale.providers=COMPAT,SPI,CLDR で戻せるPhantom参照がクリアされるようになった実害はないが監視での現れ⽅は変わる。もしPhantomReference を利⽤していた場合は要注意Reference::clone は廃⽌され CloneNotSupportedException を常に投げるようになったコンストラクタを呼んでインスタンスを作り直そうjava.net.URLClassLoader のコンストラクタに渡されたURLにnull要素が含まれていた場合、 NullPointerException を投げるようになったnull 要素がなければOK31
動作の不整合例Extension Mechanism と Endorsed Standards OverrideMechanism が廃⽌されたライブラリを置き換える仕組みがあったが廃⽌された今後は --classpath で全て指定しましょう-Xbootclasspath/a で空要素指定は拒否されるようになったCWD だと読み替えてくれたが今後は拒否されるjava.lang.invoke.MethodHandles.filterArguments は引数として渡されたフィルターを左から順に呼び出す仕様であったが、実際は右から順に呼び出していた修正されて左から呼ばれるようになった32
動作の不整合例Nashornとjjsツールが⾮推奨化-Dnashorn.args=--no-deprecation-warning で警告オフ将来的には削除されるので載せ替えるべきSwingがデフォルトでGTK 3を使うため⾒た⽬が変わった-Djdk.gtk.version=2.2 を設定すれば元と同じ⾒た⽬SNMP Agentが削除された回避策なし、JDK以外のSNMP Agentを利⽤するjava.home , user.home , user.dir , user.name が変更不可起動時にキャッシュされるようになった33
動作の不整合例java.nio.channels.{SocketChannel,ServerSocketChannel,DatagramChannel,Pipe.SourceChannel,Pipe.SinkChannel} はリファクタリングされてブロッキング・ノンブロッキング処理を分離したSelectorで登録されていたSocketChannelを閉じた際、このChannelが登録されている全てのSelectorからflushされるまで接続を閉じる処理が⼀貫して遅くなるノンブロッキングなChannelでI/O操作を呼び出すと割り込みステータスが設定されChannelが閉じられなくなったconfigureBlocking(false) メソッドを呼び出すと、未処理のブロッキングI/O操作が完了するまで待機する(ブロックされる)ようになった34
2. Compile your application with Java 11Java 11でコンパイル&実⾏してテストが通るようにする35
メリット・デメリットGoodNew / Improved APIsvarReactive streams APIsUnmodifiable collection APIsImproved file API, system process APIHTTP/2, Async HTTP clientBadJava 8のサポートが難しくなる依存ライブラリのアップデートコストがより掛かる実⾏環境だけではなくコンパイルとテスト環境binary compatibilityの破壊(Support) license changes36
主な対処内容コンパイル / テスト環境整備殆どのライブラリやプラグインを更新する必要がある残念ながら⼀部はまだバグが残されているコンパイル時例外・警告source / binary incompatibilitiesJavaDoc37
コンパイル / テスト環境整備JDKモジュール化、Abstract Syntax Tree処理変更、バイトコードの厳格化や出⼒変更に伴い、多くのビルド・テストツールはアップデートが必須特にバイトコードを扱うツール(ASM bytecode manipulationやjavap classfile inspection等)はJava 11でも⼤きな変更が⼊ったため、Java 11サポートを待つ必要性が⾼いMavenの場合Maven v3.5.4 以降を利⽤するプラグインも v3.x 系を利⽤するケースが多いmaven-compiler-plugin with asm dependencymaven-surefire-plugin with asm dependency38
テスト関係mockito 等のテストツールに加え javassist 等のBCIツールもアップデート必須開発が衰退/停⽌したライブラリからの移⾏も検討が必要FindBugs → SpotBugsCobertura → JaCoCoJavaDoc関係HTML5対応やdoclet削除、JDKモジュール化に伴う"package-list"から"element-list"へのフォーマット変更などが⾏われた-link で指定していたURLにアクセスできなくなった場合、警告ではなくエラーが発⽣して出⼒されない⾃⼒で解決するのは厳しいのでmaven-javadoc-pluginなどのビルドツールやIDEのサポートを待つのが賢明39
しゃべくり バイトコードに関する変更例JDK-8010319: Implementation of JEP 181: Nest-Based AccessControlJDK-8157181: Compilers accept modification of final fieldsoutside initializer methodsJDK-8057919: Class.getSimpleName() should work for non-JLScompliant class names40
コンパイル時例外・警告⼤きく分けて以下の⼆種類ソースやバイナリレベルの⾮互換性によりエラーが出る⾮推奨化(Deprecated)により警告が出る基本的に不要なAPIを削除してるので、実⾏時例外と⽐較すると回避策はあまり⽤意されていない。⾮推奨APIは jdeprscan や jdepsツール、IDEを駆使して対処するのが楽41
ソースレベルの⾮互換性動作の不整合例にも多く載せているのでそちらも確認しよう"_" を変数名に使えない唯⼀⽐較的影響が広い&対処⽅法が明確新元号java.time.chrono.JapaneseEra.of(3).getDisplayName(java.time.format.TextStyle.FULL, Locale.JAPAN) => "元号"今は"元号" (Locale.JAPAN) や "NewEra" (Locale.US) が出⼒される元号が決まり次第にアップデートされる予定だが間に合わないのがほぼ確定してしまってるcom.sun.awt.AWTUtilities クラスが削除された正攻法に javax.swing.JFrame を使おう42
まとめ43
Migration Guide from Java 8 to Java 11KUBOTA Yuji (@sugarlife)LINE CorporationJJUG CCC 2018 Fall (2018/Dec/15)44
しゃべくり どのJDKつかうべきなの︖Oracle OpenJDK (jdk.java.net)AdoptOpenJDKAmazon Corretto (AWS OpenJDK)Azul ZuluOpenJDK + OpenJ945

Recommended

PDF
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
PDF
今だからこそ知りたい Docker Compose/Swarm 入門
PPTX
Dockerからcontainerdへの移行
PDF
PostgreSQL 15の新機能を徹底解説
PDF
Linux女子部 systemd徹底入門
PDF
分散トレーシング技術について(Open tracingやjaeger)
PPTX
Ceph アーキテクチャ概説
PDF
分散ストレージソフトウェアCeph・アーキテクチャー概要
PDF
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
PPTX
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
PDF
Practical migration from JSP to Thymeleaf
PDF
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PDF
Dockerfileを改善するためのBest Practice 2019年版
PDF
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PDF
Vacuum徹底解説
PDF
Dockerfile を書くためのベストプラクティス解説編
PPTX
Redisの特徴と活用方法について
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
ブレソルでテラバイト級データのALTERを短時間で終わらせる
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
PDF
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
PPTX
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)

More Related Content

PDF
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
PDF
今だからこそ知りたい Docker Compose/Swarm 入門
PPTX
Dockerからcontainerdへの移行
PDF
PostgreSQL 15の新機能を徹底解説
PDF
Linux女子部 systemd徹底入門
PDF
分散トレーシング技術について(Open tracingやjaeger)
PPTX
Ceph アーキテクチャ概説
PDF
分散ストレージソフトウェアCeph・アーキテクチャー概要
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
今だからこそ知りたい Docker Compose/Swarm 入門
Dockerからcontainerdへの移行
PostgreSQL 15の新機能を徹底解説
Linux女子部 systemd徹底入門
分散トレーシング技術について(Open tracingやjaeger)
Ceph アーキテクチャ概説
分散ストレージソフトウェアCeph・アーキテクチャー概要

What's hot

PDF
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
PPTX
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
PDF
Practical migration from JSP to Thymeleaf
PDF
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PDF
Dockerfileを改善するためのBest Practice 2019年版
PDF
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PDF
Vacuum徹底解説
PDF
Dockerfile を書くためのベストプラクティス解説編
PPTX
Redisの特徴と活用方法について
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
ブレソルでテラバイト級データのALTERを短時間で終わらせる
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
PDF
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Practical migration from JSP to Thymeleaf
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
単なるキャッシュじゃないよ!?infinispanの紹介
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
Dockerfileを改善するためのBest Practice 2019年版
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
コンテナの作り方「Dockerは裏方で何をしているのか?」
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Vacuum徹底解説
Dockerfile を書くためのベストプラクティス解説編
Redisの特徴と活用方法について
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
ブレソルでテラバイト級データのALTERを短時間で終わらせる
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜

Similar to Migration Guide from Java 8 to Java 11 #jjug

PPTX
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
PPTX
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
PDF
Jakarta EE 9 と これから
PPTX
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
PDF
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
PDF
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
PDF
Oracle code one 2018 報告会概要
PDF
Prepare for Java 9 #jjug
PDF
JavaOne 2016 Java SE Feedback #jjug #j1jp
PDF
10のJava9で変わるJava8の嫌なとこ!
PDF
今年はJava進化の年!今知っておくべき新しいJava
PDF
All I learned while working on a Scala OSS project for over six years #ScalaM...
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
PDF
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
PDF
JakartaOne Livestream Japan 2020
PDF
20170303 java9 hadoop
KEY
関ジャバ JavaOne Tokyo 2012報告会
PDF
TDDBC osaka 2012/06/02
PDF
レガシーコード改善はじめました 横浜道場
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Jakarta EE 9 と これから
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Oracle code one 2018 報告会概要
Prepare for Java 9 #jjug
JavaOne 2016 Java SE Feedback #jjug #j1jp
10のJava9で変わるJava8の嫌なとこ!
今年はJava進化の年!今知っておくべき新しいJava
All I learned while working on a Scala OSS project for over six years #ScalaM...
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JakartaOne Livestream Japan 2020
20170303 java9 hadoop
関ジャバ JavaOne Tokyo 2012報告会
TDDBC osaka 2012/06/02
レガシーコード改善はじめました 横浜道場

More from Yuji Kubota

PDF
Unified JVM Logging
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
PDF
Introduction to Java 11: Support and JVM Features #jjug
PDF
jcmd #javacasual
PDF
OpenJDK トラブルシューティング #javacasual
PDF
Head toward Java 13 and Java 14 #jjug
PDF
JDK9 新機能 (日本語&ショートバージョン) #jjug
PDF
OpenJDK コミュニティに参加してみよう #jjug
PDF
Catch up Java 12 and Java 13
PDF
Head toward Java 16 (Night Seminar Edition)
PDF
Head toward Java 14 and Java 15
PDF
Head toward Java 14 and Java 15 #LINE_DM
PDF
HeapStats @ Seasar Conference 2015 LT
PDF
JDK9 Features (Summary, 31/Jul/2015) #JJUG
PDF
Java 10でぼくたちの生活はどう変わるの?
PDF
Head toward Java 15 and Java 16
PPTX
Java 9 and Future #jjug
PPTX
Project Jigsaw #kanjava
PPTX
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
PDF
オンライン会議と音声認識
Unified JVM Logging
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Introduction to Java 11: Support and JVM Features #jjug
jcmd #javacasual
OpenJDK トラブルシューティング #javacasual
Head toward Java 13 and Java 14 #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
OpenJDK コミュニティに参加してみよう #jjug
Catch up Java 12 and Java 13
Head toward Java 16 (Night Seminar Edition)
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15 #LINE_DM
HeapStats @ Seasar Conference 2015 LT
JDK9 Features (Summary, 31/Jul/2015) #JJUG
Java 10でぼくたちの生活はどう変わるの?
Head toward Java 15 and Java 16
Java 9 and Future #jjug
Project Jigsaw #kanjava
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
オンライン会議と音声認識

Migration Guide from Java 8 to Java 11 #jjug


[8]ページ先頭

©2009-2025 Movatter.jp