SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpNorito Agetsuma
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化maruyama097
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugYuji Kubota
 
Advanced database monitoring in modern java
Advanced database monitoring in modern javaAdvanced database monitoring in modern java
Advanced database monitoring in modern javaChihiro Ito
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jpJavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jpNorito Agetsuma
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々torutk
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 
JavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターンJavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターンShinya Mochida
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Koichi Sakata
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjugYuji Kubota
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Norito Agetsuma
 
マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞DMM.com
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugYuji Kubota
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」Hiroyuki Ohnaka
 
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」Hiroaki NAKADA
 
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係yy yank
 

La actualidad más candente (20)

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

Destacado

Learn About the FACE Standard for Avionics Software and a Ready-to-Go COTS Pl...
Learn About the FACE Standard for Avionics Software and a Ready-to-Go COTS Pl...Learn About the FACE Standard for Avionics Software and a Ready-to-Go COTS Pl...
Learn About the FACE Standard for Avionics Software and a Ready-to-Go COTS Pl...Real-Time Innovations (RTI)
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java心 谷本
 
JavaOne 2016総括 #jjug
JavaOne 2016総括 #jjugJavaOne 2016総括 #jjug
JavaOne 2016総括 #jjugYusuke Suzuki
 
デブサミ2017 Javaコミュニティ作ったら人生変わった
デブサミ2017 Javaコミュニティ作ったら人生変わったデブサミ2017 Javaコミュニティ作ったら人生変わった
デブサミ2017 Javaコミュニティ作ったら人生変わったKoichi Sakata
 

Destacado (6)

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

Similar a Javaの登場と発展

VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見るkishima7
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVMKoichi Sakata
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedbackTakashi Ito
 
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpSeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpYahoo!デベロッパーネットワーク
 
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)Daisuke Nishino
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門VirtualTech Japan Inc.
 
Monacaハンズオン(三島ハッカソン用)
Monacaハンズオン(三島ハッカソン用)Monacaハンズオン(三島ハッカソン用)
Monacaハンズオン(三島ハッカソン用)Hiroyuki Ichikawa
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介OSSラボ株式会社
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open sourceYoshiyuki Nakamura
 
2019-04-17 「不適切コンテンツ検出」の機械化と安定運用
2019-04-17 「不適切コンテンツ検出」の機械化と安定運用2019-04-17 「不適切コンテンツ検出」の機械化と安定運用
2019-04-17 「不適切コンテンツ検出」の機械化と安定運用Yasuhiko Iwase
 
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57Takakiyo Tanaka
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうKoichi Sakata
 
Tech-on Meet Up #02 Microsoft のコンテナ活用事例
Tech-on Meet Up #02 Microsoft のコンテナ活用事例Tech-on Meet Up #02 Microsoft のコンテナ活用事例
Tech-on Meet Up #02 Microsoft のコンテナ活用事例Kenichiro Nakamura
 

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

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