SlideShare a Scribd company logo
2016年年9⽉月6⽇日    
⼩小野寺  ⺠民也  http://ibm.biz/onodera    
⽇日本アイ・ビー・エム(株)  東京基礎研究所
PPLサマースクール2016「商⽤用Java処理理系の研究開発」
Javaの登場と発展
1 Javaの登場と発展  /  ⼩小野寺  ⺠民也
JavaTMおよびすべてのJava関連の
商標およびロゴはOracleやその関連
会社の米国およびその他の国にお
ける商標または登録商標です.
© 2016 IBM Corporation
概要:⽇日本アイ・ビー・エム(株)東京基礎研究所はJava⾔言語の黎黎明期からその処理理系に関する研究開発を
リードし,IBM開発部⾨門と協業して業務アプリケーションの基盤として使われるJava処理理系を世に送り出し
てきた.特に,Just-In-TimeコンパイラとJava仮想マシンの主要構成要素については各種の先進的技術を考
案し,世界トップクラスの性能を達成するとともに,多数の学会発表も⾏行行ってきている.本セミナーでは,
この商⽤用Java処理理系の研究開発に関する経験をもとに,以下の内容について述べる.
1 Javaの登場と発展(30分,講師:⼩小野寺⺠民也)
1995年年のJavaの登場とその後の受容の過程を概観し,Java登場時にどのような性能上の課題があったかを
述べ,続く2つのセッションへの導⼊入とする.また,性能向上の研究開発における標準ベンチマークの重
要さについても⾔言及する(「まとめと展望」へ移動).
2 Java仮想マシンの実装技術(2時間,講師:河内⾕谷清久仁)
Java⾔言語処理理系の実装について詳説する.まずJava仮想マシンの概要について述べ,その主要な構成要素
として,クラス管理理とインタープリタ,ヒープ管理理とガベージコレクション,スレッド管理理と同期機構,
JITコンパイラとの連携,などについて説明する.性能改善のために⾏行行った各種⼿手法についても触れる.
3 Java Just-In-Timeコンパイラの実装技術(2時間,講師:⽯石崎⼀一明)
Javaの動的コンパイラの実装について詳説する.まず構成の概要について述べ,主な最適化,動的コンパ
イラ特有の最適化,Java⾔言語特有の最適化,について説明する.また,Java⾔言語からSIMDやGPUなどの
ハードウェア機構を使う試みについても述べる.商⽤用コンパイラの実装に関する経験談についても触れる.
4 まとめと展望(1時間,講師:⼩小野寺⺠民也)
まとめとして,プログラミング⾔言語の実装技術の歴史を概観し,Javaの誕⽣生と発展に果たした役割につい
て考えてみたい.
2
商⽤用Java処理理系の研究開発
Javaの登場と発展  /  ⼩小野寺  ⺠民也
© 2016 IBM Corporation3
講師紹介
⼩小野寺  ⺠民也(おのでら  たみや)  http://ibm.biz/onodera
⽇日本アイ・ビー・エム(株)技術理理事,東京基礎研究所  サービス型コンピューティング  部⻑⾧長.1988年年東
京⼤大学⼤大学院理理学系研究科情報科学専⾨門課程博⼠士課程修了了.同年年⽇日本アイ・ビー・エム(株)⼊入社.以来,
同社東京基礎研究所にて,プログラミング⾔言語およびミドルウェアおよびシステムソフトウェアの研究開
発に従事.  情報処理理学会第41回(平成2年年後期)全国⼤大会学術奨励賞,同平成7年年度度⼭山下記念念研究賞,同平
成16年年度度論論⽂文賞,同平成16年年度度業績賞,各受賞.理理学博⼠士.⽇日本ソフトウェア科学会会員(元・理理事),
情報処理理学会シニア会員,ACM Distinguished Scientist.
河内⾕谷  清久仁(かわちや  きよくに)  http://ibm.biz/kawatiya
⽇日本アイ・ビー・エム(株)シニア・テクニカル・スタッフ・メンバー,東京基礎研究所  ディープ・コン
ピューティング&アナリティクス  部⻑⾧長.1987年年東京⼤大学⼤大学院理理学系研究科情報科学専攻修⼠士課程修了了.
同年年⽇日本アイ・ビー・エム(株)⼊入社.以来,同社東京基礎研究所にてOSやプログラミング⾔言語処理理系な
どの研究に従事.最近は,Javaの性能問題分析などにも携わる.博⼠士(政策・メディア).1994年年情報処
理理学会⼤大会奨励賞,2005年年同・論論⽂文賞,2008年年⽇日本ソフトウェア科学会⾼高橋奨励賞,各受賞.⽇日本ソフト
ウェア科学会編集副委員⻑⾧長(元・理理事),情報処理理学会シニア会員,ACM Distinguished Engineer.
⽯石崎  ⼀一明(いしざき  かずあき)  http://ibm.biz/ishizaki
⽇日本アイ・ビー・エム(株)東京基礎研究所  リサーチ・スタッフ・メンバー.1992年年早稲⽥田⼤大学理理⼯工学研
究科修⼠士課程修了了.同年年⽇日本アイ・ビー・エム(株)⼊入社.以来,同社東京基礎研究所にて,Fortran⾔言語
の並列列化コンパイラ,Java⾔言語の動的コンパイラ,Python⾔言語の動的コンパイラ,などのプログラミング
⾔言語処理理系の研究に従事.最近は,JavaやApache Sparkからの,GPUその他アクセラレータ活⽤用⽅方法に興
味を持つ.情報処理理学会平成16年年度度業績賞受賞.博⼠士(情報科学).⽇日本ソフトウェア科学会理理事,情報
処理理学会会員,ACM Senior Member.
Javaの登場と発展  /  ⼩小野寺  ⺠民也
May 23, 1995 – Sun announces Java at SunWorld.
4
May 1995
© 2016 IBM Corporation5
World Wide Webの誕⽣生と席巻
!  In March 1989 Tim Berners-Lee issued a proposal to the
management at CERN for a system called "Mesh”.
!  On 6 August 1991, Tim Berners-Lee published a short
summary of the World Wide Web project on the newsgroup
alt.hypertext.
!  On 23 January 1993, Mosaic was released by the National
Center for Supercomputing Applications (NCSA).
!  On 4 April 1994, Jim Clark and Mark Andreessen founded
Netscape (as Mosaic Communications Corporation).
!  On 1 October 1994, Tim Berners-Lee founded the World
Wide Web Consortium (W3C).
Javaの登場と発展  /  ⼩小野寺  ⺠民也
© 2016 IBM Corporation
May 23, 1995 – Sun announces Java at SunWorld.
6
May 1995
John Gage, the director of the Science Office of the Sun
Microsystems, along with Marc Andreessen, co-founder and
executive vice president at Netscape, announced that Java
technology wasn't a myth and that it was going to be
incorporated into Netscape Navigator.
© 2016 IBM Corporation7
Javaの特徴
! Simple, Object-Oriented, and Familiar
! Robust and Secure
! Architecture Neutral and Portable
! High Performance
! Interpreted, Threaded, Dynamic
The Java Programming Environment
A White Paper
James Gosling and Henry McGilton, May 1995
Javaの登場と発展  /  ⼩小野寺  ⺠民也
© 2016 IBM Corporation8
The Language for Internet Programming
!  “The Web community quickly noticed that Java
was something new and important.”
!  “With Java as the extension language, a Web
browser could have limitless capabilities.”
!  “Programmers could write an applet once and
it would then run on any machine, anywhere.”
!  “Visitors to Java powered Web pages could
use the content found there with confidence
that nothing would damage their machine.”
1996(Quote from Preface)
Javaの登場と発展  /  ⼩小野寺  ⺠民也
© 2016 IBM Corporation9
Pure Java Browsers
! Sun released HotJava on March 24,
1997.
! Netscape announced Javagator on
June 11, 1997.
–  for Network computers.
–  cancelled on June 30, 1998.
Javaの登場と発展  /  ⼩小野寺  ⺠民也
© 2016 IBM Corporation10
Javaの宿痾
! 起動が遅い (Long startup time)
–  dynamic class loading
–  interpreter execution
–  JIT compiling
! メモリ消費量量が多い (Memory bloat)
–  Object header (2-3 words)
–  Unicode
Javaの登場と発展  /  ⼩小野寺  ⺠民也
11
Java History
Java
May 23
1995
Java 2 v1.4
June 4
2002
Java 5
Sep 30
2004
Java 6
Dec 11
2006
Java 2 v1.3
May 8
2000
Java 7
July 28
2011
Java 8
Mar 11
2014
Javagator cancelled
June 30
1998
再浮上
!  The Java HotSpot Performance Engine released
on April 27, 1999.
– As an add-on for Java 1.2 (and became the
default in Java 1.3).
– Based on the technologies (for Smalltalk) of
Animorphic which Sun acquired in 1997.
!  Java 2 Enterprise Edition 1.2 released on
December 12, 1999.
– Java Servlet, Java Server Pages (JSP),
Enterprise JavaBeans (EJB), Java Transaction
API (JTA), Java Message Service (JMS), …
12 Javaの登場と発展  /  ⼩小野寺  ⺠民也
Java History
13
Java
May 23
1995
Java 2 v1.4
June 4
2002
Java 5
Sep 30
2004
Java 6
Dec 11
2006
Java 2 v1.3
May 8
2000
Java 7
July 28
2011
Java 8
Mar 11
2014
Java 2 v1.2
Dec 8
1998
他の言語との比較
14
October, 1995The Java Programming Environment
A White Paper
James Gosling and Henry McGilton, May 1995
Java Overhead
15
Attributes Features Overhead
Object-
Oriented
Virtual by default Virtual method calls
Small methods (e.g. setter/getter)
Robust Memory safety Null checks
Array bounds checks
Neutral Bytecode Interpreter
Garbage
Collection
Garbage Collection Garbage Collection
Threaded MT-safe libraries Synchronized method calls
Exceptions Exception handling Exception handling
October, 1995
Java Overhead Innovates Implementation Technologies
16
Overhead Implementation Technologies
Compiler Runtime
Virtual method calls
Small methods
Devirtualization,
Inlining
Polymorphic Inline Cache
Null checks
Array bounds checks
Partial Redundancy
Elimination
Trap instruction exploitation
Interpreter Dynamic Compiler Efficient interpreters
Garbage Collection Escape analysis Efficient garbage collection
Footprint reduction
Synchronized method
calls
Escape analysis
Lock elision
Efficient monitors
HTM instruction exploitation
Exception handling Exception-directed inlining Stack cutting/unwinding
OS-‐‑‒based unwinding
Sovereign JVM/JIT J9/Testarossa
IBM Java History
17
Java
May 23
1995
Java 2 v1.4
June 4
2002
Java 5
Sep 30
2004
Java 6
Dec 11
2006
Java 2 v1.3
May 8
2000
Java 7
July 28
2011
Java 8
Mar 11
2014
Java 2 v1.2
Dec 8
1998
IBM東京基礎研究所の主な研究成果
18
PLDI Programming Language Design and Implementation
ASPLOS Architectural Support for Programming Languages and Operating Systems
OOPSLA Object-Oriented Programming, Systems, Languages, and Applications
ECOOP European Conference on Object-Oriented Programming
PACT Parallel Architectures and Compilation Techniques
CGO Code Generation and Optimization
JVM Java Virtual Machine Research and Technology Symposium
VEE Virtual Execution Environments
主な研究成果=下記会議での発表したもの
最適化研究の⻩黄⾦金金律律
19
IBM東京基礎研究所の主な研究成果
20
Overhead Implementation Technologies
Compiler Runtime
Virtual method calls
Small methods
Devirtualization [OOPSLA’00]
Method inlining [JVM’02]
Null checks
Array bounds checks
Null check elimination
[ASPLOS’00]
Interpreter Dynamic Compiler (次ページ) Bytecode Fetch Optimization [APSLOS’02]
Garbage Collection String deduplication [OOPSLA’08, VEE’14]
NUMA-aware memory management [OOPSLA’09]
Allocation site profiling [VEE’10]
Object access profiling [ASPLOS’12]
Synchronized method
calls
Bimodal locks [OOPSLA’99]
Lock reservation [OOPSLA’02, ECOOP’04, PACT’04]
Lock elision [PLDI’10]
Exception handling Exception directed optimization
[OOPSLA’01]
IBM Research – Tokyoの主な研究成果
21
Overhead Implementation Technologies
Compiler Runtime
Interpreter Dynamic Compiler – Framework/Technique
Dynamic Optimization framework [OOPSLA’01]
Region-based compilation [PLDI’03]
Cross-platform effectiveness study [OOPSLA’03]
Trace-based compilation [CGO’11, ASPLOS’11, OOPSLA’11, OOPSLA’12]
Dynamic Compiler – Profiling
Path Profiling [PACT’03]
Profiling with hardware [OOPSLA’09]
Dynamic Compiler – Code Generation
Register allocation [PLDI’02, PACT’03, PLDI’06, CGO’10]
Instruction scheduling [CGO’03]
Sign extension elimination [PLDI’02]
Stride prefetching [PLDI’03]
Idiom recognition [ASPLOS’06]
22
Thank You
Merci
Grazie
Gracias
Obrigado
Danke
Japanese
French
Russian
GermanItalian
Spanish
Portuguese
Arabic
Traditional Chinese
Simplified Chinese
Hindi
Romanian
Korean
Multumesc
Turkish
Teşekkür ederim
English

More Related Content

PDF
Java仮想マシンの実装技術
PDF
20160906 pplss ishizaki public
PPTX
Javaにおけるネイティブコード連携の各種手法の紹介
PDF
Hello Java
PDF
2015/11/15 Javaでwebアプリケーション入門
PDF
Java SE 再入門
PDF
Java Flight Recorderの紹介 at Java Day Tokyo 2015
PDF
JavaScript.Next Returns
Java仮想マシンの実装技術
20160906 pplss ishizaki public
Javaにおけるネイティブコード連携の各種手法の紹介
Hello Java
2015/11/15 Javaでwebアプリケーション入門
Java SE 再入門
Java Flight Recorderの紹介 at Java Day Tokyo 2015
JavaScript.Next Returns

What's hot (20)

PPTX
Java EE パフォーマンスTips #glassfish_jp
PDF
Java scriptの進化
PDF
OpenJDK コミュニティに参加してみよう #jjug
PDF
Advanced database monitoring in modern java
PDF
Javaで1から10まで書いた話(sanitized)
PPTX
JavaOne2015報告会 Java EE アップデート #j1jp
PDF
Spring3.1概要x di
PDF
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
PDF
Unified JVM Logging
PPTX
Guide to GraalVM (JJUG CCC 2019 Fall)
PDF
Springの今
PDF
JavaのStreamで学ぶ遅延処理実装パターン
PPTX
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
PDF
Prepare for Java 9 #jjug
PDF
Java Batch 仕様 (Public Review時点)
PDF
マイクロサービス時代の動画配信基Ruby×go=∞
PDF
Migration Guide from Java 8 to Java 11 #jjug
PDF
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
PDF
WildFly Swarmではじめる「パーツとしてのJavaEE」
PDF
Jvm言語とJava、切っても切れないその関係
Java EE パフォーマンスTips #glassfish_jp
Java scriptの進化
OpenJDK コミュニティに参加してみよう #jjug
Advanced database monitoring in modern java
Javaで1から10まで書いた話(sanitized)
JavaOne2015報告会 Java EE アップデート #j1jp
Spring3.1概要x di
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Unified JVM Logging
Guide to GraalVM (JJUG CCC 2019 Fall)
Springの今
JavaのStreamで学ぶ遅延処理実装パターン
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Prepare for Java 9 #jjug
Java Batch 仕様 (Public Review時点)
マイクロサービス時代の動画配信基Ruby×go=∞
Migration Guide from Java 8 to Java 11 #jjug
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Jvm言語とJava、切っても切れないその関係
Ad

Viewers also liked (6)

PDF
まとめと展望
PPTX
Learn About the FACE Standard for Avionics Software and a Ready-to-Go COTS Pl...
PDF
from old Java to modern Java
PDF
T 50 avionics embedded software development using java
PDF
JavaOne 2016総括 #jjug
PPTX
デブサミ2017 Javaコミュニティ作ったら人生変わった
まとめと展望
Learn About the FACE Standard for Avionics Software and a Ready-to-Go COTS Pl...
from old Java to modern Java
T 50 avionics embedded software development using java
JavaOne 2016総括 #jjug
デブサミ2017 Javaコミュニティ作ったら人生変わった
Ad

Similar to Javaの登場と発展 (20)

PDF
VMを改めて学んで見る
PPTX
Great Ideas in GraalVM
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
PDF
20161111 java one2016-feedback
PDF
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
PDF
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
PPTX
今さら聞けない人のためのDevOps超入門
PPTX
今さら聞けない人のためのDevOps超入門
PPTX
今さら聞けない人のためのDevOps超入門
PDF
Harmoware-VIS Tutorial
PPTX
Monacaハンズオン(三島ハッカソン用)
PDF
Scalaでのプログラム開発
PDF
オープンソースNW監視ツールのご紹介
PPT
2006-04-22 CLR/H #14 .NET and open source
PPTX
2019-04-17 「不適切コンテンツ検出」の機械化と安定運用
PDF
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
PPTX
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
PPTX
Tech-on Meet Up #02 Microsoft のコンテナ活用事例
PDF
OSC福岡 20111203
VMを改めて学んで見る
Great Ideas in GraalVM
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
20161111 java one2016-feedback
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
Harmoware-VIS Tutorial
Monacaハンズオン(三島ハッカソン用)
Scalaでのプログラム開発
オープンソースNW監視ツールのご紹介
2006-04-22 CLR/H #14 .NET and open source
2019-04-17 「不適切コンテンツ検出」の機械化と安定運用
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Tech-on Meet Up #02 Microsoft のコンテナ活用事例
OSC福岡 20111203

Javaの登場と発展

  • 1. 2016年年9⽉月6⽇日     ⼩小野寺  ⺠民也  http://ibm.biz/onodera     ⽇日本アイ・ビー・エム(株)  東京基礎研究所 PPLサマースクール2016「商⽤用Java処理理系の研究開発」 Javaの登場と発展 1 Javaの登場と発展  /  ⼩小野寺  ⺠民也 JavaTMおよびすべてのJava関連の 商標およびロゴはOracleやその関連 会社の米国およびその他の国にお ける商標または登録商標です.
  • 2. © 2016 IBM Corporation 概要:⽇日本アイ・ビー・エム(株)東京基礎研究所はJava⾔言語の黎黎明期からその処理理系に関する研究開発を リードし,IBM開発部⾨門と協業して業務アプリケーションの基盤として使われるJava処理理系を世に送り出し てきた.特に,Just-In-TimeコンパイラとJava仮想マシンの主要構成要素については各種の先進的技術を考 案し,世界トップクラスの性能を達成するとともに,多数の学会発表も⾏行行ってきている.本セミナーでは, この商⽤用Java処理理系の研究開発に関する経験をもとに,以下の内容について述べる. 1 Javaの登場と発展(30分,講師:⼩小野寺⺠民也) 1995年年のJavaの登場とその後の受容の過程を概観し,Java登場時にどのような性能上の課題があったかを 述べ,続く2つのセッションへの導⼊入とする.また,性能向上の研究開発における標準ベンチマークの重 要さについても⾔言及する(「まとめと展望」へ移動). 2 Java仮想マシンの実装技術(2時間,講師:河内⾕谷清久仁) Java⾔言語処理理系の実装について詳説する.まずJava仮想マシンの概要について述べ,その主要な構成要素 として,クラス管理理とインタープリタ,ヒープ管理理とガベージコレクション,スレッド管理理と同期機構, JITコンパイラとの連携,などについて説明する.性能改善のために⾏行行った各種⼿手法についても触れる. 3 Java Just-In-Timeコンパイラの実装技術(2時間,講師:⽯石崎⼀一明) Javaの動的コンパイラの実装について詳説する.まず構成の概要について述べ,主な最適化,動的コンパ イラ特有の最適化,Java⾔言語特有の最適化,について説明する.また,Java⾔言語からSIMDやGPUなどの ハードウェア機構を使う試みについても述べる.商⽤用コンパイラの実装に関する経験談についても触れる. 4 まとめと展望(1時間,講師:⼩小野寺⺠民也) まとめとして,プログラミング⾔言語の実装技術の歴史を概観し,Javaの誕⽣生と発展に果たした役割につい て考えてみたい. 2 商⽤用Java処理理系の研究開発 Javaの登場と発展  /  ⼩小野寺  ⺠民也
  • 3. © 2016 IBM Corporation3 講師紹介 ⼩小野寺  ⺠民也(おのでら  たみや)  http://ibm.biz/onodera ⽇日本アイ・ビー・エム(株)技術理理事,東京基礎研究所  サービス型コンピューティング  部⻑⾧長.1988年年東 京⼤大学⼤大学院理理学系研究科情報科学専⾨門課程博⼠士課程修了了.同年年⽇日本アイ・ビー・エム(株)⼊入社.以来, 同社東京基礎研究所にて,プログラミング⾔言語およびミドルウェアおよびシステムソフトウェアの研究開 発に従事.  情報処理理学会第41回(平成2年年後期)全国⼤大会学術奨励賞,同平成7年年度度⼭山下記念念研究賞,同平 成16年年度度論論⽂文賞,同平成16年年度度業績賞,各受賞.理理学博⼠士.⽇日本ソフトウェア科学会会員(元・理理事), 情報処理理学会シニア会員,ACM Distinguished Scientist. 河内⾕谷  清久仁(かわちや  きよくに)  http://ibm.biz/kawatiya ⽇日本アイ・ビー・エム(株)シニア・テクニカル・スタッフ・メンバー,東京基礎研究所  ディープ・コン ピューティング&アナリティクス  部⻑⾧長.1987年年東京⼤大学⼤大学院理理学系研究科情報科学専攻修⼠士課程修了了. 同年年⽇日本アイ・ビー・エム(株)⼊入社.以来,同社東京基礎研究所にてOSやプログラミング⾔言語処理理系な どの研究に従事.最近は,Javaの性能問題分析などにも携わる.博⼠士(政策・メディア).1994年年情報処 理理学会⼤大会奨励賞,2005年年同・論論⽂文賞,2008年年⽇日本ソフトウェア科学会⾼高橋奨励賞,各受賞.⽇日本ソフト ウェア科学会編集副委員⻑⾧長(元・理理事),情報処理理学会シニア会員,ACM Distinguished Engineer. ⽯石崎  ⼀一明(いしざき  かずあき)  http://ibm.biz/ishizaki ⽇日本アイ・ビー・エム(株)東京基礎研究所  リサーチ・スタッフ・メンバー.1992年年早稲⽥田⼤大学理理⼯工学研 究科修⼠士課程修了了.同年年⽇日本アイ・ビー・エム(株)⼊入社.以来,同社東京基礎研究所にて,Fortran⾔言語 の並列列化コンパイラ,Java⾔言語の動的コンパイラ,Python⾔言語の動的コンパイラ,などのプログラミング ⾔言語処理理系の研究に従事.最近は,JavaやApache Sparkからの,GPUその他アクセラレータ活⽤用⽅方法に興 味を持つ.情報処理理学会平成16年年度度業績賞受賞.博⼠士(情報科学).⽇日本ソフトウェア科学会理理事,情報 処理理学会会員,ACM Senior Member. Javaの登場と発展  /  ⼩小野寺  ⺠民也
  • 4. May 23, 1995 – Sun announces Java at SunWorld. 4 May 1995
  • 5. © 2016 IBM Corporation5 World Wide Webの誕⽣生と席巻 !  In March 1989 Tim Berners-Lee issued a proposal to the management at CERN for a system called "Mesh”. !  On 6 August 1991, Tim Berners-Lee published a short summary of the World Wide Web project on the newsgroup alt.hypertext. !  On 23 January 1993, Mosaic was released by the National Center for Supercomputing Applications (NCSA). !  On 4 April 1994, Jim Clark and Mark Andreessen founded Netscape (as Mosaic Communications Corporation). !  On 1 October 1994, Tim Berners-Lee founded the World Wide Web Consortium (W3C). Javaの登場と発展  /  ⼩小野寺  ⺠民也
  • 6. © 2016 IBM Corporation May 23, 1995 – Sun announces Java at SunWorld. 6 May 1995 John Gage, the director of the Science Office of the Sun Microsystems, along with Marc Andreessen, co-founder and executive vice president at Netscape, announced that Java technology wasn't a myth and that it was going to be incorporated into Netscape Navigator.
  • 7. © 2016 IBM Corporation7 Javaの特徴 ! Simple, Object-Oriented, and Familiar ! Robust and Secure ! Architecture Neutral and Portable ! High Performance ! Interpreted, Threaded, Dynamic The Java Programming Environment A White Paper James Gosling and Henry McGilton, May 1995 Javaの登場と発展  /  ⼩小野寺  ⺠民也
  • 8. © 2016 IBM Corporation8 The Language for Internet Programming !  “The Web community quickly noticed that Java was something new and important.” !  “With Java as the extension language, a Web browser could have limitless capabilities.” !  “Programmers could write an applet once and it would then run on any machine, anywhere.” !  “Visitors to Java powered Web pages could use the content found there with confidence that nothing would damage their machine.” 1996(Quote from Preface) Javaの登場と発展  /  ⼩小野寺  ⺠民也
  • 9. © 2016 IBM Corporation9 Pure Java Browsers ! Sun released HotJava on March 24, 1997. ! Netscape announced Javagator on June 11, 1997. –  for Network computers. –  cancelled on June 30, 1998. Javaの登場と発展  /  ⼩小野寺  ⺠民也
  • 10. © 2016 IBM Corporation10 Javaの宿痾 ! 起動が遅い (Long startup time) –  dynamic class loading –  interpreter execution –  JIT compiling ! メモリ消費量量が多い (Memory bloat) –  Object header (2-3 words) –  Unicode Javaの登場と発展  /  ⼩小野寺  ⺠民也
  • 11. 11 Java History Java May 23 1995 Java 2 v1.4 June 4 2002 Java 5 Sep 30 2004 Java 6 Dec 11 2006 Java 2 v1.3 May 8 2000 Java 7 July 28 2011 Java 8 Mar 11 2014 Javagator cancelled June 30 1998
  • 12. 再浮上 !  The Java HotSpot Performance Engine released on April 27, 1999. – As an add-on for Java 1.2 (and became the default in Java 1.3). – Based on the technologies (for Smalltalk) of Animorphic which Sun acquired in 1997. !  Java 2 Enterprise Edition 1.2 released on December 12, 1999. – Java Servlet, Java Server Pages (JSP), Enterprise JavaBeans (EJB), Java Transaction API (JTA), Java Message Service (JMS), … 12 Javaの登場と発展  /  ⼩小野寺  ⺠民也
  • 13. Java History 13 Java May 23 1995 Java 2 v1.4 June 4 2002 Java 5 Sep 30 2004 Java 6 Dec 11 2006 Java 2 v1.3 May 8 2000 Java 7 July 28 2011 Java 8 Mar 11 2014 Java 2 v1.2 Dec 8 1998
  • 14. 他の言語との比較 14 October, 1995The Java Programming Environment A White Paper James Gosling and Henry McGilton, May 1995
  • 15. Java Overhead 15 Attributes Features Overhead Object- Oriented Virtual by default Virtual method calls Small methods (e.g. setter/getter) Robust Memory safety Null checks Array bounds checks Neutral Bytecode Interpreter Garbage Collection Garbage Collection Garbage Collection Threaded MT-safe libraries Synchronized method calls Exceptions Exception handling Exception handling October, 1995
  • 16. Java Overhead Innovates Implementation Technologies 16 Overhead Implementation Technologies Compiler Runtime Virtual method calls Small methods Devirtualization, Inlining Polymorphic Inline Cache Null checks Array bounds checks Partial Redundancy Elimination Trap instruction exploitation Interpreter Dynamic Compiler Efficient interpreters Garbage Collection Escape analysis Efficient garbage collection Footprint reduction Synchronized method calls Escape analysis Lock elision Efficient monitors HTM instruction exploitation Exception handling Exception-directed inlining Stack cutting/unwinding OS-‐‑‒based unwinding
  • 17. Sovereign JVM/JIT J9/Testarossa IBM Java History 17 Java May 23 1995 Java 2 v1.4 June 4 2002 Java 5 Sep 30 2004 Java 6 Dec 11 2006 Java 2 v1.3 May 8 2000 Java 7 July 28 2011 Java 8 Mar 11 2014 Java 2 v1.2 Dec 8 1998
  • 18. IBM東京基礎研究所の主な研究成果 18 PLDI Programming Language Design and Implementation ASPLOS Architectural Support for Programming Languages and Operating Systems OOPSLA Object-Oriented Programming, Systems, Languages, and Applications ECOOP European Conference on Object-Oriented Programming PACT Parallel Architectures and Compilation Techniques CGO Code Generation and Optimization JVM Java Virtual Machine Research and Technology Symposium VEE Virtual Execution Environments 主な研究成果=下記会議での発表したもの
  • 20. IBM東京基礎研究所の主な研究成果 20 Overhead Implementation Technologies Compiler Runtime Virtual method calls Small methods Devirtualization [OOPSLA’00] Method inlining [JVM’02] Null checks Array bounds checks Null check elimination [ASPLOS’00] Interpreter Dynamic Compiler (次ページ) Bytecode Fetch Optimization [APSLOS’02] Garbage Collection String deduplication [OOPSLA’08, VEE’14] NUMA-aware memory management [OOPSLA’09] Allocation site profiling [VEE’10] Object access profiling [ASPLOS’12] Synchronized method calls Bimodal locks [OOPSLA’99] Lock reservation [OOPSLA’02, ECOOP’04, PACT’04] Lock elision [PLDI’10] Exception handling Exception directed optimization [OOPSLA’01]
  • 21. IBM Research – Tokyoの主な研究成果 21 Overhead Implementation Technologies Compiler Runtime Interpreter Dynamic Compiler – Framework/Technique Dynamic Optimization framework [OOPSLA’01] Region-based compilation [PLDI’03] Cross-platform effectiveness study [OOPSLA’03] Trace-based compilation [CGO’11, ASPLOS’11, OOPSLA’11, OOPSLA’12] Dynamic Compiler – Profiling Path Profiling [PACT’03] Profiling with hardware [OOPSLA’09] Dynamic Compiler – Code Generation Register allocation [PLDI’02, PACT’03, PLDI’06, CGO’10] Instruction scheduling [CGO’03] Sign extension elimination [PLDI’02] Stride prefetching [PLDI’03] Idiom recognition [ASPLOS’06]