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のカルチャーとグロース - MANABIYA 2018

5,109 views

Published on

2018年3月23日にMANABIYAでの基調講演「Javaのカルチャーとグロース」の資料です。
正誤表:
P10 ORACLE → Oracle
P25 Jboss → JBoss
P25 WebBeans → CDI
P30 2017年 → 2007年
※SlideShareで再アップロードができないため、正誤表をつけておきます。

Published in: Technology
  • Be the first to comment

Javaのカルチャーとグロース - MANABIYA 2018

  1. 1. Javaのカルチャーとグロース 2018/3/23 鈴木雄介 日本Javaユーザーグループ 会長 #jjug #MANABIYA
  2. 2. 自己紹介 鈴木雄介 • グロースエクスパートナーズ(株) » 執行役員/アーキテクチャ事業本部長 » http://www.gxp.co.jp/ • 日本Javaユーザーグループ » 会長 » http://www.java-users.jp/ • SNS » http://arclamp.hatenablog.com/ » @yusuke_arclamp 1
  3. 3. #jjug #MANABIYA 最近の動向 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の歴史、プロセス、最近の動 向を紹介するので、Javaの持つカルチャーや今後の可能性 を感じてもらいたい 4
  6. 6. アジェンダ • 日本Javaユーザーグループ • Javaの基礎知識 • Javaの開発プロセス • OSS開発モデル • JavaとOSS • 最近の動向 • まとめ 5
  7. 7. #jjug #MANABIYA 日本Javaユーザーグループ 6
  8. 8. 日本Javaユーザーグループ Japan Java User Group • 日本最大のJUG(Java User Group/ジャグ) • 主な活動はイベント開催 »ナイトセミナー(月1回2時間、約200人) ▸次回は3/26のJava SE 10 / JDK10リリース特集 ✓ https://jjug.doorkeeper.jp/events/71974 »JJUG CCC(年2回1日、約1000人) ▸次回は5/26。CfP公開中→ http://java-users.jp/ccc2018spring/ • その他、国際会議や海外イベントへの参加 7 http://www.java-users.jp/
  9. 9. 日本Javaユーザーグループ JJUGのグロース 8 0 1000 2000 3000 4000 5000 6000 7000 8000 2013/8 2013/10 2013/12 2014/2 2014/4 2014/6 2014/8 2014/10 2014/12 2015/2 2015/4 2015/6 2015/8 2015/10 2015/12 2016/2 2016/4 2016/6 2016/8 2016/10 2016/12 2017/2 2017/4 2017/6 2017/8 2017/10 2017/12 2018/2 7354人 4547人 1265人
  10. 10. #jjug #MANABIYA Javaの基礎知識 9
  11. 11. Javaの基礎知識 Sun Microsystems • Javaを生み出した1982年創業のベンチャー »創業16年で売上100億ドルを超える »Bill Joy、 James Gosling 、Scott G. McNealy…などのスター »早くからネットワークに注目。積極的に情報公開し、オープンソ ースにも関わることでエンジニアの尊敬を集める • 2010年、ORACLEが74億ドルで買収 »ハードウェア事業からの転換が失敗 10
  12. 12. Javaの基礎知識 Java 1/2 • 1995年に1.0を発表 »静的型付け(オブジェクト指向言語) »OSに非依存(VM/仮想マシン) »メモリ管理の自動化(GC/ガベージコレクション) • 特に優秀なのがJava VM »JITコンパイラ、スレッド管理、メモリ管理など »Kotlin、Scalaなどの標準Java言語ではない言語ができる理由 11
  13. 13. 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などの一部仕様のみを利用し、それ以外は 独自整備している 12 ※昔は「J2XX」と呼称。昔の話は昔の呼称を使います
  14. 14. #jjug #MANABIYA Javaの開発プロセス 13
  15. 15. 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 14
  16. 16. 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/技術互換キット)も作る 15 https://www.jcp.org/ 参考資料:Javaの将来に参加しませんか? https://www.slideshare.net/kanjava-jug/java-community-processjcp
  17. 17. Javaの開発プロセス RIとTCK • RI(Reference Implementation/参照実装) »仕様決定時に「参照実装」として作られるもの »現在、Java SEはOpenJDK、Java EEはGlassfish • TCK(Technology Compatibility Kit/技術互換キット) »実装が仕様を満たしているかテストするためのコード群 »TCKをパスすることで「Java製品として認定」となる ▸商用製品:Oracleが提供し、ライセンス料が発生する ▸OSS製品:OpenJDK由来&GPLv2で適用可能 16
  18. 18. 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) 17 http://openjdk.java.net/jeps/0
  19. 19. 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 18 http://openjdk.java.net/ 2006年にBSDライセンスでオープンソース化 → https://www.oracle.com/java/duke.html
  20. 20. Javaの開発プロセス 仕様策定プロセスのメリット • エコシステムの形成と派生の回避 »ユーザーにとってはロックインの回避 • 課題の解決をずっとしてきた歴史がある »TCKの管理はSun/Oracleのみ »時を経るごとに増える仕様(と実装負荷) ▸J2SE 1.2 (1998):1524 → J2SE 5.0 (2004):3280 19
  21. 21. #jjug #MANABIYA OSS開発モデル 20
  22. 22. OSS開発モデル Apache Software Foundation • 1999年設立された非営利団体 »NASAが開発していたHTTPDのサポートを維持するために開始 »OSS開発のためのインフラ提供、寄付の受入れ、訴訟対応など »ASFに参加するためのプロセスも提供(Apache Incubator) • Apache License »商用利用可能で改変は非公開OK。現在はAL 2.0 21 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
  23. 23. 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年に役割を終える »全てのプロジェクトがトップレベルに移行 22
  24. 24. 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:改変コード公開、プラグインまでは及ばない 23
  25. 25. 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) 24
  26. 26. OSS開発モデル オープンソースによる開発モデル • 仕様だけではなく実装も共有したエコシステム »標準仕様の大部分はRIでまかない、差別化要素だけ実装する ▸例:IBMは商用製品のSerlvetコンテナにTomcatの一部を取込み • コミュニティによるイノベーションから標準化へ »2005年:IoC(後のDI)、Spring Framework »2006年:Jboss関連 ▸JPA(JSP220):Hibernateベース ▸WebBeans(JSR299):Seamベース 25
  27. 27. #jjug #MANABIYA JavaとOSS 26
  28. 28. 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正式ローンチ 27
  29. 29. 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に合流 28 Apache Harmony: An Open Innovation https://www.slideshare.net/TimEllison/apache-harmony-an-open-innovation
  30. 30. 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に 29
  31. 31. JavaとOSS Android事件 2/2 • Sunは「Javaの分断を招く」と声明を発表 »Googleとしては標準認定を得るつもりはあったもののSunのOSS 化方針と合わなかったために進んでしまった道 ▸Sunが弱体化していた時期でもあった?2017年1月のiPhoneに焦った? »実際、Androidは普及するものの、後に端末間差異が多くなる »なお、Android NougatからはOpenJDKのライブラリを採用 ▸実行環境もDalvik VMからAndroid Runtime (ART)へ 30
  32. 32. JavaとOSS Java API訴訟 • OracleがGoogleに1兆円の損害賠償を請求(2010年) »色々あったが現時点ではOracleの主張は退けられている »AndroidによってME関連のビジネスが崩壊したことへの腹いせ? ▸例:DoCoMoはAndroidを採用し、DoJa端末は減っていった »一方で「APIには著作権がある」という判決が出たことは問題 ▸ただし、フェアユースにあたるため問題なし、という状態 ▸今後、公開されているAPIを無断でコピーした場合に著作権侵害になる可能 性がある 31 Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その1)。JJUGナイトセミナー http://www.publickey1.jp/blog/16/googleoraclejava_apiitjjug.html
  33. 33. JavaとOSS Java EE Guardians事件 • 2016年、Java EE 8の仕様策定の遅れを懸念して活動開始 »Java EE 8向けのJSRにおいて明らかに活動量が落ちていた »主にOracleメンバーの関与度が低くなっていた »James Goslingをはじめ、多くの人が賛同した • 何をしようとしてたのか »Java EEの啓もう活動 »JCPにおけるロビー活動、Oracleへの働きかけ »活発でないJSRをOracle以外の企業に移管させる 32 Java EE Guardiansとは https://speakerdeck.com/masatoshitada/java-ee-guardianstoha https://javaee-guardians.io/
  34. 34. 寄り道 その他事件 • マイクロソフトJVM事件 • Oracle関連 »Hudson事件 »OpenOffice事件 »MySQL事件 »OpenSolaris事件… 33
  35. 35. #jjug #MANABIYA 最近の動向(詳細) 34
  36. 36. 最近の動向 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 35
  37. 37. 最近の動向 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 36
  38. 38. 最近の動向 Jakarta EE • 現在も作業中 »仕様策定プロセス:JCP→ Jakarta EE Working Group »仕様群:Java EE → Jakarta EE ▸現在はロゴコンテスト実施中 »RI:Glassfish → Eclipse Glassfish • 今後、Spring Boot vs Microprofile ? »マイクロサービス対応の標準化動向は要注目 37
  39. 39. 最近の動向 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無償配布廃止 38
  40. 40. 最近の動向 マイクロサービス、コンテナ対応は推進中 • 様々な動き »Eclipse OpenJ9 ▸IBMが寄贈したJVM。フットプリントの軽量化と高速起動に特化 »Eclipse Microprofile ▸マイクロサービスに必要な機能に特化した仕様 »その他の細かい調整も様々な仕様が盛り込まれつつある ▸Java 9でのオプション:-XX:+UseCGroupMemoryLimitForHeap 39
  41. 41. #jjug #MANABIYA まとめ 40
  42. 42. まとめ Javaのカルチャー • 初期:オープンな仕様策定→各社実装というエコシステム »JCP、JSR、RI、TCK、JEP »ただし、TCKによる「認定」はSun/Oracleが管理してきた • 一方でOSSによる実装の共有というエコシステムの興隆 »Apache Software Foundation、Eclipse Foundation »オープンソースライセンス 41
  43. 43. まとめ JavaとOSS • Javaは様々な事件を通じてオープンソース化されてきた »OpenJDK:Apache Harmony、Android… »Jakarta EE:Java EE Guardian… • いずれもコミュニティがJavaを変えている »もはや企業としても「オープンソースは戦略」 »現代的に言えばシェアリングエコノミー 42
  44. 44. まとめ Javaのカルチャーとグロース • 常にJavaはオープンな道のりを歩いてきた »時代によってオープンの形は違う »それを支えるコミュニティの力 • そして、これからも成長する »JavaOne 2016:”Make Java Great Again” »Javaは新たなステージへ:6か月毎リリース、Jakarta EE 43
  45. 45. Javaのカルチャーとグロース 2018/3/23 鈴木雄介 日本Javaユーザーグループ 会長

×