SlideShare a Scribd company logo
Javaとコミュニティの歩み
<追記版>
2020/11/7
鈴⽊雄介
⽇本Javaユーザーグループ
CCC運営委員⻑
#jjug_ccc #jjug_ccc_c
はじめに
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
はじめに
なんで、こんな状況になれたのか︖
• 歴史の流れを追うと、様々な事件を超えながらOSSとして
成熟してきたことがわかる
»OSSを通じたイノベーションが⾏われてきた
»OSSのライセンスモデルが重要な役割を果たす
• 企業も含めたコミュニティが、Javaとどう関わってきたか
がわかる
2
アジェンダ
• 歴史
• まとめ
3
#jjug_ccc #jjug_ccc_c
歴史
4
歴史
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/
歴史
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
歴史
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
歴史
IBMがOSS戦略で成功しはじめる
• IBM WebSphereがASFの成果物を利⽤
»SerlvetコンテナはTomcat、HTTPサーバはAapche
»改変をおこなっているが、その部分の公開義務がない
• オープンソースを戦略的に活⽤
»もちろんLinuxの成功体験がベース
▸LinuxはGPLv2(コード公開義務あり)
• Eclipse IDEを2001年11⽉にOSS化
8
歴史
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/
この頃の世情
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
#jjug_ccc #jjug_ccc_c
歴史
Harmony事件
11
歴史 – 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/
歴史 – 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/
歴史 – 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
#jjug_ccc #jjug_ccc_c
歴史
Android事件
15
歴史 – Android事件 1/2
Androidのモチベーション(2005年ごろ)
• 携帯OSをOSSを通じて共有化していきたい
»キャリアや端末メーカーによる独⾃改変を許容する
»Googleとしては多くの⼈がネットワークに接続することが重要な
ので、OSライセンスの対価は不要だった
• 初期はMozillaライセンスを検討
»GPLv3/LGPLに近い、改変の⾮公開が可能
»当初はJ2ME/JVMのOSS実装という位置づけ
16
歴史 – 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
歴史
その後、OpenJDKに集約
• 2010年10⽉、IBMがOpenJDKに参加
»Harmonyは2011年11⽉に活動停⽌
»コミュニティからは⼤きな反対はなかった
»2016年にはAndroidもOpenJDKベースに移⾏
• Java SEは同⼀のコードベースを共有資産としてメンテナ
ンスしていくことに
»Android初期の分断を考えると、これはこれでよかった
18
http://openjdk.java.net/
#jjug_ccc #jjug_ccc_c
歴史
Java API訴訟事件
19
歴史 – 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
歴史 – 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
歴史 – Java API訴訟事件 3/3
現在までの経緯
• JavaAPIに関する経緯
»2016年、Oracleの勝利(著作権侵害)→Gが控訴
»2018年、Googleの勝利(フェアユース)→Oが控訴
»2020年10⽉、最⾼裁の審理がスタート
▸数ヶ⽉以内に判決が出る
▸Googleは改めて「APIに著作権はない」と主張。不利との⾒⽅が多い
• フェアユースが認められないと︖
»実装コードに⽐べ、似てしまう可能性が⾮常に⾼い
»APIのコピーを禁⽌されると互換製品の提供が困難に
22
#jjug_ccc #jjug_ccc_c
歴史
Java EE Guardians事件
23
歴史 – 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/
歴史
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/
#jjug_ccc #jjug_ccc_c
歴史
Java有償化︕︖事件
26
歴史 – 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
歴史 – Java有償化︕︖事件 2/2
結果、様々なディストリが提供されることに
• 現在は様々なディストリビューションが提供されている
»別製品の利⽤を前提にサポートが無償利⽤できるように
▸RHEL上であれば無償︓Red Hat OpenJDK
▸Azure上であれば無償︓Azul Zulu
▸AWS上であれば無償︓Amazon Corretto
»詳しくは「OpenJDKソムリエ」で検索
▸https://qiita.com/yamadamn/items/2dd26a014791b9557199
• なお現時点でも、最も開発に貢献しているのはOracle
»OracleはいまだにJavaに投資し続けている
28
#jjug_ccc #jjug_ccc_c
まとめ
29
Java本体 OSS化の流れをまとめると
• 当初、Java本体はOSSではなかった
»しかし、OSSによるエコシステムの形成に成功した
• Java SE本体もOSS化されたがライセンスで意⾒が割れる
»AL2.0(改変部分の公開不要) vs GPLv2 (改変部分の公開必要)
»結果としてはGPLv2でまとまる
»その間、AndroidがAL2.0で突っ⾛ったためJava API訴訟に
▸Oracleもアレだけど、Googleの⾏為も相当ダメ
• Java EE本体はコミュニティからの声で完全にOSS化
30
歴史をまとめると
• Javaは当初からオープン性を⼤事にしていた
• いまでは当たり前の「OSSベースの製品開発」をリード
»⾮競争部分は共有化し、その上で部分で勝負する
• 現在のJava本体はGPLv2でOSS化されている
»その上のJavaライブラリはAL2.0という使い分け
»Java API訴訟の結論はOSSのエコシステムにとって重要
• ⾊々あったがJavaは常にコミュニティとともにあった
31

More Related Content

PDF
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
PDF
JJUG初心者のためのJava/JJUG講座
PDF
エンタプライズ領域のアジャイル開発の課題 - FIT2020
PDF
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
PDF
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
PDF
ITトレンドに見る日本のエンタープライズITについて
PDF
アジャイル開発を支えるアーキテクチャ設計とは
PDF
マイクロサービスに至る歴史とこれから - XP祭り2021
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
JJUG初心者のためのJava/JJUG講座
エンタプライズ領域のアジャイル開発の課題 - FIT2020
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
ITトレンドに見る日本のエンタープライズITについて
アジャイル開発を支えるアーキテクチャ設計とは
マイクロサービスに至る歴史とこれから - XP祭り2021

What's hot (20)

PDF
エナジャイル設立によせて
PDF
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
PDF
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
PDF
Javaはコミュニティの力で再び偉大になれるのか
PDF
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
PDF
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
PDF
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
PDF
クラウドを超えた先の企業システム像 20091008 JJUG CCC
PDF
マイクロサービスとそれを支えるアーキテクチャー
PDF
SIerとクラウドの付き合い方
PDF
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
PDF
デブサミ2010 これからのアーキテクチャを見通す
PDF
エンタープライズ、アーキテクチャ、アジャイルのこれから
PDF
アーキテクチャの発掘に見る要求変化の発見 - 要求開発アライアンス2014年2月定例会
PDF
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
PDF
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
PDF
クラウド鎖国からクラウド維新へ
PDF
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
PDF
要求の変化とマイクロサービスアーキテクチャ
PDF
Javaのカルチャーとグロース - MANABIYA 2018
エナジャイル設立によせて
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
Javaはコミュニティの力で再び偉大になれるのか
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
クラウドを超えた先の企業システム像 20091008 JJUG CCC
マイクロサービスとそれを支えるアーキテクチャー
SIerとクラウドの付き合い方
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
デブサミ2010 これからのアーキテクチャを見通す
エンタープライズ、アーキテクチャ、アジャイルのこれから
アーキテクチャの発掘に見る要求変化の発見 - 要求開発アライアンス2014年2月定例会
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
クラウド鎖国からクラウド維新へ
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
要求の変化とマイクロサービスアーキテクチャ
Javaのカルチャーとグロース - MANABIYA 2018
Ad

Similar to Javaとコミュニティの歩み 2020 (12)

PDF
OpenJDK コミュニティに参加してみよう #jjug
PPTX
Java 20年史 (JJUG CCC 2015 春 基調講演)
PDF
Java Community Process(JCP)ミーティング
PDF
Javaの登場と発展
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
PDF
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
PPTX
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
PDF
Spring 18年の歴史
PPTX
福井イベント
PDF
Hello Java
PDF
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
PDF
JDKの選択肢とサーバーサイドでの選び方
OpenJDK コミュニティに参加してみよう #jjug
Java 20年史 (JJUG CCC 2015 春 基調講演)
Java Community Process(JCP)ミーティング
Javaの登場と発展
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
Spring 18年の歴史
福井イベント
Hello Java
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
JDKの選択肢とサーバーサイドでの選び方
Ad

More from Yusuke Suzuki (12)

PDF
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
PDF
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
PDF
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
PDF
なぜ「マイクロサービス“化”」が必要なのか
PDF
アーキテクチャのレビューについて - JaSST Review '18
PDF
ユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナー
PDF
JavaOne 2016総括 #jjug
PDF
クラウド時代のエンジニアについて #sesfukui
PDF
ウォーターフォールとアジャイルを考える #ita_ws
PDF
アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016
PDF
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
PDF
「JJUG運営の戦略と戦術」 JJUG CCC 2016 Spring 基調講演
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
なぜ「マイクロサービス“化”」が必要なのか
アーキテクチャのレビューについて - JaSST Review '18
ユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナー
JavaOne 2016総括 #jjug
クラウド時代のエンジニアについて #sesfukui
ウォーターフォールとアジャイルを考える #ita_ws
アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
「JJUG運営の戦略と戦術」 JJUG CCC 2016 Spring 基調講演

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