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.

Javaとコミュニティの歩み 2020

2020/11/7に開催されたJJUG CCC 2020 Fallでの講演「Javaとコミュニティの歩み」の資料に追記したものです。
Javaの歴史を紐解きながら、たくさんの企業や個人が開発に参加するようになった経緯や、話題のJava API訴訟がなぜ起きたのかについてまとめました。

  • Entre para ver os comentários

Javaとコミュニティの歩み 2020

  1. 1. Javaとコミュニティの歩み <追記版> 2020/11/7 鈴⽊雄介 ⽇本Javaユーザーグループ CCC運営委員⻑ #jjug_ccc #jjug_ccc_c
  2. 2. はじめに Javaの⾯⽩いところ • Java本体がOSS化されている=OpenJDK »クラスパス例外付きGPLv2 • たくさんの企業やコミュニティが開発に参加している »JDK 15の参加企業 ▸Oracle、Red Hat、SAP、ARM、Tencent、NTT Data、Amazon、IBM、 Intel、Alibaba、Loongson、Huawei、BellSoft、Ampere Computing、 Google、JetBrains、Azul、DataDog、Microsoft... • 25周年を超えて進化中 »6ヶ⽉ごとにバージョンしている 1 The Arrival of Java 15 https://blogs.oracle.com/java-platform-group/the-arrival-of-java-15
  3. 3. はじめに なんで、こんな状況になれたのか︖ • 歴史の流れを追うと、様々な事件を超えながらOSSとして 成熟してきたことがわかる »OSSを通じたイノベーションが⾏われてきた »OSSのライセンスモデルが重要な役割を果たす • 企業も含めたコミュニティが、Javaとどう関わってきたか がわかる 2
  4. 4. アジェンダ • 歴史 • まとめ 3
  5. 5. #jjug_ccc #jjug_ccc_c 歴史 4
  6. 6. 歴史 Javaの歴史 • Sun Microsystemsが1995年に1.0を発表 »Sunは2010年にOracleに買収される • 標準仕様を策定して実装する、というオープンなプロセス »Java SE 12は「仕様」、OpenJDK 12は「実装」 »この時点では各実装はオープンソースではない • Java Community Process(1998年設⽴)を通じて策定 »当初はSunを中⼼にベンダー各社が標準仕様を策定 »正式製品になるためにはSunによる認定が必要 ▸Technology Compatibility Kit(TCK) 5 Java Community Process https://www.jcp.org/
  7. 7. 歴史 Apache Software Foundation • 1999年設⽴された⾮営利団体 »NASAが開発していたHTTPDのサポートを維持するために開始 »OSS開発のためのインフラ提供、寄付の受⼊れ、訴訟対応など »ASFに参加するためのプロセスも提供(Apache Incubator) • Apache License »商⽤利⽤可能で改変は⾮公開OK。現在はAL 2.0 »GPLv3互換。GPLv1/v2とは⾮互換 6 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
  8. 8. 歴史 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… »Javaのエコシステムを作り上げた取り組み • 2011年に役割を終える »全てのプロジェクトがトップレベルに移⾏ 7
  9. 9. 歴史 IBMがOSS戦略で成功しはじめる • IBM WebSphereがASFの成果物を利⽤ »SerlvetコンテナはTomcat、HTTPサーバはAapche »改変をおこなっているが、その部分の公開義務がない • オープンソースを戦略的に活⽤ »もちろんLinuxの成功体験がベース ▸LinuxはGPLv2(コード公開義務あり) • Eclipse IDEを2001年11⽉にOSS化 8
  10. 10. 歴史 Eclipse Foundation • 2004年に設⽴された⾮営利団体 »Eclipse IDEの管理が⽬的 ▸Eclipse IDE、Eclipse Platformの関連線製品 ▸開発ツール関連が多かったが、近年では限らない。 ü Jakarta *: Java EEがOSS化(各仕様, GlassFish, MicroProfile...) ü OpenJ9, Eclipse Link, Eclipse Collections... »Eclipse Public License 1.0 =クラスパス例外付きGPLv2 ▸本体の改変はコード公開義務があるが、プラグインには及ばない ▸製品によってライセンスが異なることがあるので確認すること 9 Eclipse Foundation https://www.eclipse.org/
  11. 11. この頃の世情 OSSがJavaの進化をリードする • コミュニティからのイノベーション »2005年︓IoC(後のDI)、Spring »2006年︓JBossによる仕様のリード ▸JPA(JSP220)︓Hibernateベース、WebBeans(JSR299)︓Seamベース • ⼀⽅、Java SEの仕様と実装の肥⼤化… »J2SE 1.2 (December 8, 1998) : 1524 »Java SE 6 (December 11, 2006) : 3793 10
  12. 12. #jjug_ccc #jjug_ccc_c 歴史 Harmony事件 11
  13. 13. 歴史 – Harmony事件1/3 Java SEのOSS実装が開始 • 2005年5⽉、Project Harmonyが提案される »Apache License 2.0 で提供されるJ2SE 5の実装を提供すること »モジューラーランタイム、つまり、Java VMやクラスライブラリ の実装を⾃由に組み合わせることができる仕組みにすること »参加者多数&コミュニティも賛同 ▸ベンダー︓BEA、IBM、IntelI ▸OSS︓KVM、Kaffe、GCJ • 2006年10⽉、Apache Harmonyとして開始 12 Apache Harmony http://harmony.apache.org/
  14. 14. 歴史 – Harmony事件2/3 SunがJava SE本体をOSS化 • 2006年11⽉︓SunがJ2SEをOSS化 »Hotspot VM+標準クラスライブラリ+ツール ▸のちにOpenJDKとなる »直後にJ2MEもOSS化 • OSS化を求めるコミュニティに対する答え »ただし、クラスパス例外付きGPLv2 ▸改変部分のコード公開義務あり »このためHarmony推進派には受け⼊れがたい内容 13 http://openjdk.java.net/
  15. 15. 歴史 – Harmony事件3/3 SunがHarmonyを認定しない • 2006年、Apache HarmonyがSunに認定を要求 »TCKが規定するJava SEの利⽤⽬的に組み込み系への利⽤制限が あったことを理由に認定を拒否 • 2007年8⽉︓SunがOSS向けの認定を開始 »OpenJDK Community Technology Compatibility Kit License ▸テストキット本体はOSSではないが、OSSでも認定を受けられる »ただし、テスト対象はGPLv2準拠に限定→ Harmonyは対象外 • Apacheが抗議活動をするなど広く議論がされた 14 OPEN LETTER TO SUN MICROSYSTEMS http://apache.org/jcp/sunopenletter.html
  16. 16. #jjug_ccc #jjug_ccc_c 歴史 Android事件 15
  17. 17. 歴史 – Android事件 1/2 Androidのモチベーション(2005年ごろ) • 携帯OSをOSSを通じて共有化していきたい »キャリアや端末メーカーによる独⾃改変を許容する »Googleとしては多くの⼈がネットワークに接続することが重要な ので、OSライセンスの対価は不要だった • 初期はMozillaライセンスを検討 »GPLv3/LGPLに近い、改変の⾮公開が可能 »当初はJ2ME/JVMのOSS実装という位置づけ 16
  18. 18. 歴史 – Android事件 2/2 2008年にAndroidをAL2.0でOSS化 • Androidは2008年にAL2.0でOSS化 »改変部分の⾮公開を可能にしたいため、Harmonyのクラスライブ ラリから⼀部を利⽤しながらJVMを独⾃開発(Dalvik VM) »もちろん、Sunの認定は受けていないし、独⾃性がかなり強い ▸裁判の過程でGoogle社内でも「認定を受けるべき」という声があったこと が公開されているが、結果的には似⾮JavaVMになっていた »2007年、Sunは「Javaの分断を招く」と声明を発表 • そして、Androidは急激に普及 »Java MEが利⽤されなくなる(例︓DoCoMoのDoJa) 17
  19. 19. 歴史 その後、OpenJDKに集約 • 2010年10⽉、IBMがOpenJDKに参加 »Harmonyは2011年11⽉に活動停⽌ »コミュニティからは⼤きな反対はなかった »2016年にはAndroidもOpenJDKベースに移⾏ • Java SEは同⼀のコードベースを共有資産としてメンテナ ンスしていくことに »Android初期の分断を考えると、これはこれでよかった 18 http://openjdk.java.net/
  20. 20. #jjug_ccc #jjug_ccc_c 歴史 Java API訴訟事件 19
  21. 21. 歴史 – Java API訴訟事件 1/3 そして訴訟へ • 2010年8⽉、OracleがGoogleを提訴 » 2010年4⽉にOracleによるSun買収が成⽴ • 提訴の内容 » 特許権侵害 →侵害していないで確定 » Javaライブラリの実装コードの無断複製 →著作権侵害で確定 ▸rangeCheck()の9⾏だけなので賠償⾦額0円 » Java APIの著作権侵害 →この部分が継続している ▸損害賠償の請求額が約1兆円 ▸2015年、最⾼裁でAPIに著作権があることが確定済み ▸フェアユースか︖が問題 20 Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その1)。JJUGナイトセミナー https://www.publickey1.jp/blog/16/googleoraclejava_apiitjjug.html
  22. 22. 歴史 – Java API訴訟事件 2/3 フェアユースとは • 著作権者の許諾なく著作物を利⽤しても、公正な利⽤と評 価されれば、著作権の侵害にあたらない »利⽤の⽬的と性格 ▸そのものが⾮営利⽬的か︖ »著作権のある著作物の性質 ▸そのものが論⽂や地図などの事実を伝えているだけか︖ »著作物全体との関係における利⽤された部分の量及び重要性 ▸そのものの核⼼部分に触れるものか︖ »著作物の潜在的利⽤⼜は価値に対する利⽤の及ぼす影響 ▸そのものが市場に悪影響を与えるか︖ 21 https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A7%E3%82%A2%E3%83%A6%E3%83%BC%E3%82%B9
  23. 23. 歴史 – Java API訴訟事件 3/3 現在までの経緯 • JavaAPIに関する経緯 »2016年、Oracleの勝利(著作権侵害)→Gが控訴 »2018年、Googleの勝利(フェアユース)→Oが控訴 »2020年10⽉、最⾼裁の審理がスタート ▸数ヶ⽉以内に判決が出る ▸Googleは改めて「APIに著作権はない」と主張。不利との⾒⽅が多い • フェアユースが認められないと︖ »実装コードに⽐べ、似てしまう可能性が⾮常に⾼い »APIのコピーを禁⽌されると互換製品の提供が困難に 22
  24. 24. #jjug_ccc #jjug_ccc_c 歴史 Java EE Guardians事件 23
  25. 25. 歴史 – Oracleやらかし事件 OracleとOSSの微妙な話 • 様々なOSS製品と問題を起こす »MySQL事件(2010年、MariaDBに分裂) »OpenSolaris事件(2010年、提供を停⽌) »Hudson事件(2011年、Jenkinsに分裂) »Java EE Guardians事件(2016年、Jakarta EEのきっかけ) ▸2016年、Java EE 8の仕様策定の遅れを懸念して有志が声かけ ▸OracleがJava EEから開発リソースを引き上げている • OracleはOSSとの付き合い⽅があまりうまくない 24 Jakarta EE Ambassadors - Our History https://jakartaee-ambassadors.io/
  26. 26. 歴史 Jakarta EE • 2017年、 Eclipse Foundationへ移管してOSS化 »IBM、Red hatと話し合って実施 »RI、TCK、関連ドキュメントを提供(Oracleは認定も放棄) • 段階的に作業を実施中 »javax.* → jakarta.* »Microprofileの取り込み(軽量化、MSA対応) »2020年6⽉、Jakarta EE 9 M1を提供 25 Jakarta EE https://jakarta.ee/
  27. 27. #jjug_ccc #jjug_ccc_c 歴史 Java有償化︕︖事件 26
  28. 28. 歴史 – Java有償化︕︖事件 1/2 Java SEのリリースモデル変更 • バージョンアップが6か⽉ごとに »2018/9:Java 11、2019/3:Java 12…、2020/9:Java 15 »サポートは次のバージョンが出るまで ▸つまり半年でサポートがきれる »3年おきに⻑期間サポートバージョン(LTS)が提供される ▸Java 11でOracle JDKとOpenJDKが同⼀になり、Oracle JDK無償配布廃⽌ • Oracle OpenJDKが代替するため実際には有償化ではない 27
  29. 29. 歴史 – Java有償化︕︖事件 2/2 結果、様々なディストリが提供されることに • 現在は様々なディストリビューションが提供されている »別製品の利⽤を前提にサポートが無償利⽤できるように ▸RHEL上であれば無償︓Red Hat OpenJDK ▸Azure上であれば無償︓Azul Zulu ▸AWS上であれば無償︓Amazon Corretto »詳しくは「OpenJDKソムリエ」で検索 ▸https://qiita.com/yamadamn/items/2dd26a014791b9557199 • なお現時点でも、最も開発に貢献しているのはOracle »OracleはいまだにJavaに投資し続けている 28
  30. 30. #jjug_ccc #jjug_ccc_c まとめ 29
  31. 31. Java本体 OSS化の流れをまとめると • 当初、Java本体はOSSではなかった »しかし、OSSによるエコシステムの形成に成功した • Java SE本体もOSS化されたがライセンスで意⾒が割れる »AL2.0(改変部分の公開不要) vs GPLv2 (改変部分の公開必要) »結果としてはGPLv2でまとまる »その間、AndroidがAL2.0で突っ⾛ったためJava API訴訟に ▸Oracleもアレだけど、Googleの⾏為も相当ダメ • Java EE本体はコミュニティからの声で完全にOSS化 30
  32. 32. 歴史をまとめると • Javaは当初からオープン性を⼤事にしていた • いまでは当たり前の「OSSベースの製品開発」をリード »⾮競争部分は共有化し、その上で部分で勝負する • 現在のJava本体はGPLv2でOSS化されている »その上のJavaライブラリはAL2.0という使い分け »Java API訴訟の結論はOSSのエコシステムにとって重要 • ⾊々あったがJavaは常にコミュニティとともにあった 31

×