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とコミュニティの歩み 2020

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

  • Login to see the comments

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

×