Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Javaはコミュニティの力で再び偉大になれるのか

3,053 views

Published on

2018/5/26に開催されたJJUG CCC 2018 Springでの基調講演「Javaはコミュニティの力で再び偉大になれるのか」の資料です。

Published in: Technology
  • Be the first to comment

Javaはコミュニティの力で再び偉大になれるのか

  1. 1. Javaはコミュニティの力で 再び偉大になれるのか 2018/5/25 鈴木雄介 日本Javaユーザーグループ 会長 #jjug #ccc_e1
  2. 2. 自己紹介 鈴木雄介 • 日本Javaユーザーグループ » 会長 » http://www.java-users.jp/ • グロースエクスパートナーズ(株) » 執行役員/アーキテクチャ事業本部長 » http://www.gxp.co.jp/ • SNS » http://arclamp.hatenablog.com/ » @yusuke_arclamp 1
  3. 3. #jjug #ccc_e1 最近の動向 2
  4. 4. 最近の動向 昨年からの動き • Java SE 10リリース!(2018/3/20) »Var など、変更多数 »6か月ごとのメジャーバージョンアップに変更 »9月にはJava SE 11リリース、Oracle JDKの無償版廃止予定 • Java EEの管理がEclipse Foundationに!(2017/9/13) »仕様策定主体がOracleからEclipse Foundationに変更 »Java EEという名称はJakarta EEに変更 3 var list = new ArrayList<String>();
  5. 5. 最近の動向 なぜ、こんな動きになっているのか? • 1995年のリリースから23年 • オープンなカルチャーによってエンジニアに愛され、今で もコミュニティを通じた成長を続けている • 今日のセッションでは、Javaの歴史、プロセス、最近の動 向の中でコミュニティがどんな役割を果たしてきたを紹介 します 4
  6. 6. アジェンダ • Javaの基礎知識 • Javaの開発プロセス • OSS開発モデル • JavaとOSS • 最近の動向 • まとめ 5
  7. 7. #jjug #ccc_e1 Javaの基礎知識 6
  8. 8. Javaの基礎知識 Sun Microsystems • Javaを生み出した1982年創業のベンチャー »創業16年で売上100億ドルを超える »Bill Joy、 James Gosling 、Scott G. McNealy…などのスター »早くからネットワークに注目。積極的に情報公開し、オープンソ ースにも関わることでエンジニアの尊敬を集める • 2010年、Oracleが74億ドルで買収 »ハードウェア事業からの転換が失敗 7
  9. 9. Javaの基礎知識 Java 1/2 • 1995年に1.0を発表 »静的型付け(オブジェクト指向言語) »OSに非依存(VM/仮想マシン) »メモリ管理の自動化(GC/ガベージコレクション) • 特に優秀なのがJava VM »JITコンパイラ、スレッド管理、メモリ管理など »Kotlin、Scalaなどの標準Java言語ではない言語ができる理由 8
  10. 10. Javaの基礎知識 Java 2/2 • 大きく3つの仕様群 »Java SE(Standard Edition):いわゆるJava本体 ▸JRE(Runtime Environment):JVM+標準ライブラリ ▸JDK(Development Kit):JRE+コンパイラなどの開発ツール »Java ME(Micro Edition):組み込み向け ▸Blu-rayなど。現在では端末性能向上に伴い、SEの一部分になっている »Java Jakarta EE(Enterprise Edition):サーバアプリ向け ▸SpringなどはServlet、Securityなどの一部仕様のみを利用し、それ以外は 独自整備している 9 ※昔は「J2XX」と呼称。昔の話は昔の呼称を使います
  11. 11. #jjug #ccc_e1 Javaの開発プロセス 10
  12. 12. Javaの開発プロセス 仕様策定プロセスで議論して決定する • 標準仕様を定めて、それを各社が実装する »Java XXというのは「仕様」 »その仕様を実装したプロダクトが複数存在する ▸Java SE 9:OpenJDK 9、Oracle JDK 9、IBM J9… ▸Java EE 8:Glassfish 5.0、Payara Server 5、WildFly 12… • 標準仕様の策定プロセス »API仕様追加/変更 →JCP »JDKへの仕様変更提案 →JEP 11
  13. 13. Javaの開発プロセス JCP(Java Community Process) • Java APIの仕様策定プロセスで1998年開始 »当初はSunなどの企業が中心。2011年からはJUGも参加OK • 現在はJCP 2.10.2 »JSR(Java Specification Request)が提示 »EG(Expert Group)を組成し、初期ドラフトを作成 »公開レビューを経て、最終ドラフトを作り、EC(Executive Committee)の投票で承認 »RI(Reference Implementation/参照実装)とTCK( Technology Compatibility Kit/技術互換キット)も作る 12 https://www.jcp.org/ 参考資料:Javaの将来に参加しませんか? https://www.slideshare.net/kanjava-jug/java-community-processjcp
  14. 14. Javaの開発プロセス RIとTCK • RI(Reference Implementation/参照実装) »仕様決定時に「参照実装」として作られるもの »現在、Java SEはOpenJDK、Java EEはGlassfish • TCK(Technology Compatibility Kit/技術互換キット) »実装が仕様を満たしているかテストするためのコード群 »TCKをパスすることで「Java製品として認定」となる ▸商用製品:Oracleが提供し、ライセンス料が発生する ▸OSS製品:OpenJDK由来&GPLv2で適用可能 13
  15. 15. Javaの開発プロセス JEP(JDK Enhancement Proposals) • JEP(JDK Enhancement Proposals) »2011年に策定されたJDKへの機能拡張を行うためのプロセス ▸PythonのPEPを参考に作られ、JCPほどは厳密ではない »JDKにはライブラリに関わらない機能追加もある ▸言語:JEP 286: Local-Variable Type Inference (10の”var”) ▸コンパイラ:JEP 295: Ahead-of-Time Compilation (AOTコンパイル) ▸2週間以下の小さな変更はJEPにならないものもある »JSRとしてはひとまとめ。例:JSR 383: Java™ SE 10 (18.3) 14 http://openjdk.java.net/jeps/0
  16. 16. Javaの開発プロセス OpenJDK • Java SEのRIとして実装されるJDK »Sunが公開したHotspot VM+標準クラスライブラリ+ツール »Oracle, Red Hat, Azul Systems, IBM, Apple Inc, SAP AGそし て、JUGメンバーが開発を行っている • OpenJDK関連のプロジェクト »言語系(Project Amber…)、VM系(Graal Project…) »IcedTea、Duke 15 http://openjdk.java.net/ 2006年にBSDライセンスでオープンソース化 → https://www.oracle.com/java/duke.html
  17. 17. Javaの開発プロセス 仕様策定プロセスのメリット • エコシステムの形成と派生の回避 »ユーザーにとってはロックインの回避 • 課題の解決をずっとしてきた歴史がある »TCKの管理はSun/Oracleのみ »時を経るごとに増える仕様(と実装負荷) ▸J2SE 1.2 (1998):1524 → J2SE 5.0 (2004):3280 16
  18. 18. #jjug #ccc_e1 OSS開発モデル 17
  19. 19. OSS開発モデル Apache Software Foundation • 1999年設立された非営利団体 »NASAが開発していたHTTPDのサポートを維持するために開始 »OSS開発のためのインフラ提供、寄付の受入れ、訴訟対応など »ASFに参加するためのプロセスも提供(Apache Incubator) • Apache License »商用利用可能で改変は非公開OK。現在はAL 2.0 18 Open source masterclass - Life in the Apache Incubator http://archive.apachecon.com/eu2012/presentations/07-Wednesday/PR-Community/aceu-2012-open-source-masterclass_life-in-the-apache-incubator.pdf https://www.youtube.com/watch?v=KopPbWS87fw
  20. 20. OSS開発モデル Apache Jakarta Project • 1999年、SunがServlet/JSP部分のRIを寄贈 »Tomcatとして継承し、同年12月にTomcat 3.0リリース »J2EEの一部機能のみをOSS化した • 同時にJava関連OSSの受け皿としてJakarta Project開始 »Ant、Log4j、Lucene、Maven、POI、Struts、Velocity… • 2011年に役割を終える »全てのプロジェクトがトップレベルに移行 19
  21. 21. OSS開発モデル Eclipse Foundation • 2004年に設立された非営利団体 »2001年、IBMがEclipse IDEをOSS化したのがスタート ▸Eclipse IDE、Eclipse Platformの関連線製品 ▸開発ツール関連が多かったが、近年では限らない ✓ OpenJ9、Hudson、Collections、Mosquitto… ✓ EE4J: EclipseLink、JerseyなどのJakarta EEの実装製品 »個別製品でライセンスは異なるので要確認 ▸Eclipse Public License 1.0:改変コード公開、プラグインまでは及ばない 20
  22. 22. OSS開発モデル オープンソースラインセンス • 大きく3つのライセンス »コピーレフト:改変のコード公開が必要、リンク先に影響 ▸GNU General Public License(GPL) »準コピーレフト:改変のコード公開が必要、リンク先は不要 ▸ GNU Lesser General Public License(LGPL)、Mozilla Public Licens( MPL)、Eclipse Public License(EPL) »非コピーレフト:改変のコード公開が不要、リンク先も不要 ▸BSD派生、MIT License、Apache License(AL) 21
  23. 23. OSS開発モデル オープンソースによる開発モデル • 仕様だけではなく実装も共有したエコシステム »標準仕様の大部分はRIでまかない、差別化要素だけ実装する ▸例:IBMは商用製品のSerlvetコンテナにTomcatの一部を取込み • コミュニティによるイノベーションから標準化へ »2005年:IoC(後のDI)、Spring Framework »2006年:JBoss関連 ▸JPA(JSP220):Hibernateベース ▸CDI(JSR299):Seamベース 22
  24. 24. #jjug #ccc_e1 JavaとOSS 23
  25. 25. JavaとOSS Apache Harmony事件 1/2 • 2005年5月、ASFにてProject Harmonyが提案 »AL 2.0のJ2SE 5実装を目指す »モジューラーランタイムを導入し、組み込み用途も見据える »初期参加者 ▸ベンダー:BEA、IBM、IntelI ▸OSS:KVM、Kaffe、GCJ • 2006年10月、Apache Harmony正式ローンチ 24
  26. 26. JavaとOSS Apache Harmony事件 2/2 • 2006年10月、Apache Harmony正式ローンチ • 2006年11月、SunがJ2SEとJ2MEをOSS化 »ただし、GPLv2(改変コード公開義務あり) • 2006年8月、HarmonyがTCKを要求するもSunが拒否 »2007年4月には公開書簡まで出して要求するが拒否 • 2007年8月、SunがTCKの適用範囲をGPLv2に拡大 »Harmonyは適用対象外のため、JCPでの抗議活動にまで発展 • 2010年10月、Harmonyは解散し、OpenJDKに合流 25 Apache Harmony: An Open Innovation https://www.slideshare.net/TimEllison/apache-harmony-an-open-innovation
  27. 27. JavaとOSS Android事件 1/2 • 2007年11月に発表。中心はGoogle »戦略:OSSのモバイルOSがあれば共通採用できる ▸Googleは端末数を増やし、自社製品を置きたがった »Javaは使いたいが各社がJVMに自由に手を入れられるように ▸例:当時、DoCoMoはDoJa(DoCoMo Java/いわゆるiアプリ)という独自プ ロファイルを開発し、Sunにライセンス料を支払っていた ▸であれば、準コピーレフトなJava MEを作ればいいのではないか »Dalvik VM+Apache Harmonyの一部+独自ライブラリ群 ▸最終的には標準の一部分を使ったAL2.0の独自Javaに 26
  28. 28. JavaとOSS Android事件 2/2 • Sunは「Javaの分断を招く」と声明を発表 »Googleとしては標準認定を得るつもりはあったもののSunのOSS 化方針と合わなかったために進んでしまった道 ▸Sunが弱体化していた時期でもあった?2007年1月のiPhoneに焦った? »実際、Androidは普及するものの、後に端末間差異が多くなる »なお、Android NougatからはOpenJDKのライブラリを採用 ▸実行環境もDalvik VMからAndroid Runtime (ART)へ 27
  29. 29. JavaとOSS Java API訴訟 • OracleがGoogleに1兆円の損害賠償を請求(2010年) »2018/3時点では控訴審でOracle勝利(次が最高裁) ▸フェアユースにはあたらない。2016年時点ではフェアユースだった »AndroidによってME関連のビジネスが崩壊したことへの腹いせ? ▸例:DoCoMoはAndroidを採用し、DoJa端末は減っていった »一方で「APIには著作権がある」という判決が出たことは問題 ▸今後、公開されているAPIを無断でコピーした場合に著作権侵害になる可能 性がある 28 Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その1)。JJUGナイトセミナー http://www.publickey1.jp/blog/16/googleoraclejava_apiitjjug.html
  30. 30. JavaとOSS Java EE Guardians事件 • 2016年、Java EE 8の仕様策定の遅れを懸念して活動開始 »Java EE 8向けのJSRにおいて明らかに活動量が落ちていた »主にOracleメンバーの関与度が低くなっていた »James Goslingをはじめ、多くの人が賛同した • 何をしようとしてたのか »Java EEの啓もう活動 »JCPにおけるロビー活動、Oracleへの働きかけ »活発でないJSRをOracle以外の企業に移管させる 29 Java EE Guardiansとは https://speakerdeck.com/masatoshitada/java-ee-guardianstoha https://javaee-guardians.io/
  31. 31. 寄り道 その他事件 • マイクロソフトJVM事件 • Oracle関連 »Hudson事件 »OpenOffice事件 »MySQL事件 »OpenSolaris事件… 30
  32. 32. #jjug #ccc_e1 最近の動向(詳細) 31
  33. 33. 最近の動向 Jakarta EE • https://jakarta.ee/ • 2017年9月 Opening Up Java EE - An Update »IBM、Red hatと話し合い、Eclipse Foundationへ移管 ▸RI(GlassFish)、TCK、関連ドキュメントを提供 ▸新たなブランド名を付ける(javaxパッケージやAPI名は維持) ▸新たな開発プロセスを定義する、新たな開発者、スポンサーを募集。 Eclipse MicroProfileとの統合 • EE4J(Eclipse Enterprise for Java)を発足し受入開始 »https://projects.eclipse.org/projects/ee4j 32
  34. 34. 最近の動向 Eclipse Microprofile • マイクロサービスを意識したEEの仕様群 »https://microprofile.io/ »2016年、IBMはRed hatが中心になり開始。 »独自拡張部分あり、現在はv1.3 ▸Fault Tolerance、Metrics、HealthCheck、OpenAPI、REST Client… • 今後、Jakarta EEに統合されていく? • 実装としてはPayara Micro、WildFly Swarm 33
  35. 35. 最近の動向 Jakarta EE • “Cloud Native Java” • 現在も作業中 »仕様策定プロセス:JCP→ Jakarta EE Working Group »仕様群:Java EE → Jakarta EE »RI:Glassfish → Eclipse Glassfish • 今後、Spring Boot vs Microprofile ? »マイクロサービス対応の標準化動向は要注目 34
  36. 36. 最近の動向 Java SEのリリースモデル変更 • バージョンアップが6か月ごとに »2018/9:Java 11、2019/3:Java 12… ▸1月、4月、7月、10月にマイナーバージョンを提供 »サポートは次のバージョンが出るまで ▸つまり半年でサポートがきれる »3年おきに長期間サポートバージョンが提供される予定 ▸Java 11、Java 17の予定 ▸Oracle JDK 8はJava 11登場まではサポートされる ▸Java 11でOracle JDKとOpenJDKが同一になり、Oracle JDK無償配布廃止 35
  37. 37. 最近の動向 マイクロサービス、コンテナ対応は推進中 • 様々な動き »Eclipse OpenJ9 ▸IBMが寄贈したJVM。フットプリントの軽量化と高速起動に特化 »Eclipse Microprofile ▸マイクロサービスに必要な機能に特化した仕様 »その他の細かい調整も様々な仕様が盛り込まれつつある ▸Java 9でのオプション:-XX:+UseCGroupMemoryLimitForHeap 36
  38. 38. #jjug #ccc_e1 まとめ 37
  39. 39. まとめ Javaのカルチャー • 初期:オープンな仕様策定→各社実装というエコシステム »JCP、JSR、RI、TCK、JEP »ただし、TCKによる「認定」はSun/Oracleが管理してきた • 一方でOSSによる実装の共有というエコシステムの興隆 »Apache Software Foundation、Eclipse Foundation »オープンソースライセンス 38
  40. 40. まとめ JavaとOSS • Javaは様々な事件を通じてオープンソース化されてきた »OpenJDK:Apache Harmony、Android… »Jakarta EE:Java EE Guardian… • いずれもコミュニティがJavaを変えている »もはや企業としても「オープンソースは戦略」 »現代的に言えばシェアリングエコノミー 39
  41. 41. まとめ Javaのカルチャーとグロース • 常にJavaはオープンな道のりを歩いてきた »時代によってオープンの形は違う »常にあったのはコミュニティの力 • そして、これからも成長する »JavaOne 2016:”Make Java Great Again” »Javaは新たなステージへ:6か月毎リリース、Jakarta EE 40

×