SlideShare a Scribd company logo
1 of 48
Download to read offline
Mobile Browser Internals and Trends

김준걸 TL / 웹킷코어연구lab
이형욱 TL / 웹브라우저기술lab
NAVER LABS
CONTENTS
0. 2013 Briefing
1. Browser Internals
2. Android WebView Internals and Trend
3. Chromium (Blink)
4. WebKit2 Vs Chromium and Firefox
0. 2013 Briefing
Mobile Browser Market Share

Android

iPhone

Opera

UC Browser

Nokia

BlackBerry

NetFront

iPod Touch

Chrome

Other

28.62%

21.32%

16.1%

11.15%

7.04%

3.17%

2.28%

1.95%

4.25%

4.12%

Top9 : 95.88%

WebKit based Browsers
WebKit based Browsers
u  Amazon Kindle

u  PS3 web browser

u  Arora

u  RockMelt

u  BOLT browser

u  Safari

u  Epippany browser

u  SRWare Iron

u  Google Chrome

u  Shiira

u  iCab (version >=4)

u  Spuntnik for MorphOS

u  Iris Browser

u  Stainless

u  KonQueror

u  Steel for Android

u  Midori

u  TeaShark

u  Nintendo 3DS

u  Tizen Browser

u  OmniWeb

u  Uzbl

u  Opera (version >=15)

u  Web Browser for S60 (Nokia)

u  OWB

u  WebOS Browser
History of WebKit in Browser

IE

WebKit

Safari

Chrome

WebKit2

Chrome Android

Blink

~2001

2005

2007

2008

2010

2012

2013

MS World
Apple made WebKit

Apple opened WebKit
iPhone Development
Google bought Android

iPhone Opened

Google opened Chromium WebKit2 Development
Google opened Android

Chrome for Android Released
Chrome Market Share 1st

Google forks WebKit
with Blink

If you can conquer the web browser, you can conquer the world.
WebKit and Blink in 2013
l  Google announced on April 3rd that they would be forking WebKit with new Blink
Motivations according to Google:
ü  They were not using WebKit2 anyway
ü  Simplification of the codebase in Blink
l  After forking WebKit with Blink
ü  Google removes the concept of ‘port’ as it was defined in WebKit
ü  Apple removes the chromium port in WebKit
ü  Opera joined WebKit then moved to Blink.
ü  New proposal Nix port in WebKit
ü  Qt recently announced that they are moving to Blink
à  Other companies and communites thinking what to do.
à  WebKit developers porting patches from/to Blink/WebKit
1. Browser Internals
Browser at a High Level

Data Persistence

UI

Code Coverage

5%
Browser Engine

Rendering Engine

WebKit 95%
Network I
/O

JavaScript
Engine

Graphics S
tack
Major Component of WebKit

API Layer
WebKit and WebKit2
(Embedding API)
Bindings
(JavaScript API)
WebCore
(HTML, CSS, DOM, etc)
Platform
(Network, Storage, Graphics)

JavaScriptCore
(JavaScript Engine)

WTF
(Data structures, Threading primitives)
Rendering
Loading
HTML

Parsing

Rendering
Layout

DOM
Tree

HTML
Parser

Render
Tree

attach()

CSS Style Sh
eet

Painting

Display

Painting

Style
Rule

CSS
Parser

DOM Tree

Render Tree

DOM
Node

Render
Layer

Render
Object

DOM
Node

Render
Object
DOM
Node

Render
Layer

Render
Object

DOM
Node

Render
Object
Render
Object

DOM
Node
DOM
Node

Render
Layer
Render
Object

Render
Layer
Rendering : DOM Tree and Render Tree
DOM Tree

<html>

Render Tree

HTMLDocument
2. addChild()
1. Element 생성
5. setRenderer
HTMLHtmlElement

RenderView

4. RenderBlock 생성

RenderBlock

3. isRenderable? Yes

<head>
<title>Hello, Deview!</title>
<style>…</style>
</head>
<body>
<div class=‘layer’>

isRenderable? No

HTMLHeadElement
HTMLTitleElement
HTMLStyleElement
HTMLBodyElement

RenderBlock

HTMLDivElement

<nobr>
<span>
<a href=http://a.com>News</a>
</span>
</nobr>
</div>
</body>
</html>

RenderBlock
RenderInline

HTMLElement
HTMLElement
HTMLAnchorElement
Text

RenderInline
RenderInline
RenderText
Rendering : Render Layer Tree
CSS file
.layer_example{
….
-webkit-transform: tr
anslate3d(0,0,0);}

<html>

Render Layer Tree
RenderView

Conditions
-  Transparency, Masking

RenderBlock

RenderRootLayer

-  Z-ordering

<head>
<title>Hello, Deview!</title>
<style>…..</style>
</head>
<body>
<div class=‘layer_example’>
<nobr>
<span>
<a href=http://a.com>News</a>
</span>
</nobr>
</div>
</body>
</html>

-  Overflow clip
-  Reflections, Shadows, Transforms
-  Positioned content
-  <canvas>, <video>

RenderBlock

requiresLayer()

RenderBlock

Z-ordering

RenderLayer

RenderInline
RenderInline
RenderInline
RenderText

GraphicsLayer

Graphics Layer Tree
Rendering : Render Style Tree
Parsing
HTML

Rendering
HTML
Parser

Layout

DOM
Tree

Render
Tree

attach()

CSS Style Sh
eet

CSS
p.div{
margin-top:3px;
}
.error{
color:red;
}

Painting

Painting

Style
Rule

CSS
Parser

Class RenderStyle {
RenderStyle(RenderStyle parent);

CSSStyleSheet
CSSRule

Selectors

p

Display

div

Declaration

margin-to
p

Color color();
void setColor(Color);
IntRect initialColor();

CSSRule

3px

Selectors

.error

Render Style Tree

Length marginTop();
…
void setUserSelect();
…
DataRef<InheritedData> Inherited;

Declaration

color

red
}
Rendering : Dump Render Tree (DRT)
Painting : SW and HW Rendering
l  S/W Rendering Path
CPU Graphic Buff
er

CPU Graphic Buff
er

l  H/W Accelerated Rendering Path

Layering

Compositing
Painting : Tiled Backing Store
Tile is a rectangle with a texture in Checkboard pattern.
Backing Store is off-screen buffer
The effect of using Tiled Backing Store is
Progressive Rendering :
- Pan/Scroll
- Zoom in/out

Each Tile is a texture for GPU Core
Check Di
rty Tiles

Update T
ile Buffer

Paint Tile
s
WebView::loadUrl

20,000~50,000 Calls
Page

Frame
Frame
Loader

Docuement
layout()
CachedResource
Loader

If Not cached, create
If cached, setDocument

Docuement
Loader
addData()

Cache
CachedResource

Create/load

layout()
FrameView
paintContents()
RenderLayer
paintLayer()
RenderView
paint()
WebView
Database
RenderObject
Save/Load/Remove Cache

MainResource
Loader

SubResource
Loader

Load Html file

Cache
Manager

Load Image, JS, CSS files

Create/Remove Cache

WebView
Worker

ResourceHandle
Platform’s Network Stack

LoadListener
Save/Remove Cache

WebView
Cache.db
WebKit Source Code in numbers

<https://www.ohloh.net/p/WebKit/analyses>
2. Android WebView Internals and Trend
Android WebKit
API Layer
talk this

WebView Framework

Java Layer

JNI (Java/C++)
WebKit and WebKit2
(Embedding API)
Bindings
(JavaScript API)
WebCore
(HTML, CSS, DOM, etc)
Platform
(Network, Storage, Graphics)

JavaScriptCore
(JavaScript Engine)

WTF
(Data structures, Threading primitives)
Chromium
Network
Stack

V8

Skia

Platform Layer
Jelly-Bean’s WebView Framework

new class
android class
inner class
create

22
ICS

Jelly-bean

WebView

WebViewClassic

CookieManager

CookieManagerClassic

Classic ???
GeolocationPermission

GeolocationPermissionClassic

23
New WebView

WebViewClassic
WebView

WebViewFactory

WebViewProvide
r
Chromium powered
WebView

new class in JB
Chromium powered WebView
AwGeolocationPermissions

AwCookieManage
r

AwContents

new class
AwContentsClient

Chromium class
inner class
create

25
Chromium powered WebView
ContentView

Android Chromium의 Process 생성 특징
-  Device의 CPU Feature/Core수 및 Memory Class를
체크하여 Renderer Process를 동적으로 할당
à  하지만 Chromium powered WebView는
1-Process로 동작할 가능성 有

AndroidBrowserProcess
normalizeMaxRenderProcess()
Max((Memory class-8)/8,1)
Memory Class
Baseline : 16 à 1-Process
24 à 2-Process
SandboxedProcessLauncher
CPU Feature/Core 수 체크

SandboxedProcessConnection
Bind Service

SandboxedP
rocess
Service0

Sandboxed
Process
Service1

…

Sandboxed
Process
Service5

26
3. Chromium (Blink)
Chromium powered WebView란?
“Open Source Browser Engine인 Chromium 엔진기반의 API Suites로,
기존 Android WebView와 1:1 호환성을 가진 새로운 렌더링 엔진.”
public final class WebViewFactory {

WebViewFactory.java in AOSP

public static final String WEBVIEW_EXPERIMENTAL_PROPERTY = "persist.sys.webview.exp";
private static final String DEPRECATED_CHROMIUM_PROPERTY = "webview.use_chromium";

// Default Provider factory class name.
// TODO: When the Chromium powered WebView is ready, it should be the default factory class.
private static final String DEFAULT_WEBVIEW_FACTORY = "android.webkit.WebViewClassic$Factory";
private static final String CHROMIUM_WEBVIEW_FACTORY =
"com.android.webview.chromium.WebViewChromiumFactoryProvider";
private static final String CHROMIUM_WEBVIEW_JAR = "/system/framework/webviewchromium.jar";

/**

AwContents.java in chromium

* Exposes the native AwContents class, and together these classes wrap the ContentViewCore
* and Browser components that are required to implement Android WebView API. This is the
* primary entry point for the WebViewProvider implementation; it holds a 1:1 object
* relationship with application WebView instances.
*/
@JNINamespace("android_webview")
public class AwContents {
Chromium 이란?

Google Chrome

Chromium

Logo

Colorful

Blue

Crash reporting

Yes, if you turn it on

None

User metrics

Yes, if you turn it on

No

Video and audio tags

AAC, MP3, Vorbis and Theora

Vorbis and Theora by default

Adobe Flash

custom (non-free) plugin inclu
ded in release

supports NPAPI plugins, includi
ng the one from Adobe

PDF support

custom (non-free) plugin inclu
ded in release

downloads and displays with s
ystem PDF viewer

Code

Tested by Chrome developers

May be modified by distributio
ns

Sandbox

Always on

Depending on the distribution

Quality Assurance

New releases are tested before
sending to users

Depending on the distribution
Chromium을 누가 사용하나?
Chromium powered WebView의 특징

AOSP WebView

Chromium WebView

Chromium V
ersion

WebKit r.84325
(Chromium 12.0.74
2)

Latest Chromium
(Chromium 31.0.1650.
11)

HTML5

298

414

CSS3

45%

77%

DevTool

X

O

Process

single-process

single-process

Threads

4

12

Comments

Android ICS부터 Update 없음.

http://html5test.com
http://css3test.com
PC와 동일한 디버깅 환경 제공
multi-process로 switch 가능한 구조
I/O Thread, Compositor Thread,
GPU Process Thread, etc…

* Galaxy Nexus 기준
Chromium powered WebView의 새로운 기능들…
Chromium Feature Dashboard: http://www.chromestatus.com/features

<Remote Web Inspector>

<HTML5 WebRTC>

<HTML5 WebAudio API>
Chromium powered WebView Status

< Peter Beverloo >
Chromium powered WebView의 구조
Android Apps

Chromium pow
ered WebView

Chromium
Test Shell

Chrome
Browser

Browser
Components
( autocomple, autofill, bookmark, devtools,
download, favicon, history, omibox … )

Blink

Chromium

Content API
Content
(Multi-process-impl)

Blink(WebKit)
Why multi-process architecture?

기존 브라우저의 문제점
•  현재(크롬 제작 당시)의 브라우저는 과거의 OS와 비슷한 구조
•  과거의 OS는 단일 사용자, 어떤 어플리케이션의 문제는 OS 전체의 안정성에 영향을 미침
•  단일 프로세스 모델의 브라우저에서는 한 페이지의 문제가 브라우저 전체에 문제를 일으킴

문제해결을 위한 접근
•  절대적으로 안정적인 렌더링 엔진을 만드는 것은 거의 불가능함
•  최근의 OS는 각 어플리케이션을 고립시킴으로써 특정 어플리케이션의 문제가 시스템 전체의 안정성에 영
향을 미치지 않도록 하며, 사용자 각자의 데이터를 보호하고 있음
Multi Process Architecture

Browser Process와
Renderer Process의 연결 구조
Renderer Process의 각 View
역시 Browser Process에
연결 고리를 가짐

각 프로세스별로 입출력
을 위한 스레드가
별도로 존재

Renderer Process에 WebKi
t 렌더링 엔진 존재
Inter-process communication (IPC)
Browser Process IPC
•  Browser Process 내에서 별도의 I/O Thread가 IPC를 담당하게 됨
•  Main Thread와의 메시지 교환은 IPC::ChannelProxy를 통해 이루어짐
•  I/O Thread를 사용하는 이유는 성능상 영향을 많이 주는 네트워크 처리 요구 메시지 등을 전담하여 처리
함으로써 사용자 인터페이스에 영향을 주지 않도록 하기 위함
•  I/O Thread 내부에서 처리할 메시지를 걸러내기 위해 ChannelProxy::MessageFilter 사용

Renderer Process IPC
•  Renderer Process 내에서 별도의 I/O Thread가 IPC를 담당하게 됨
•  웹 페이지 렌더링을 비롯한 기타 작업은 Render Thread (Main Thread)에서 이루어짐
•  스레드를 분리함으로써 브라우저로의 동기적인 메시지 송수신이 가능
Multi Process Architecture in detail
Browser Process
IPC
RenderWidgetHost

RenderViewHost
Manager

WebContents

SiteInstance

RenderViewHost

RenderProcessHost

RenderWidgetHost
RenderViewHost

2
1

WebContents

SiteInstance

RenderProcessHost

RenderWidgetHost

RenderViewHost
Manager

RenderViewHost

Main Thread

RenderMainThread
(Single Process Mode)

Process Launcher
Thread

File Thread

Cache Thread

DB Thread

UI Thread

Renderer Process

Renderer Process
Main Thread
RenderWidget

WebKit

RenderWidget

I/O
Thread

RenderView

6

Main Thread

4

5

IO Thread

RenderWidget

RenderView

RenderView

WebKit

WebKit

I/O
Thread

3
Multi-process resource loading
•  Renderer Process는 독립적인 I/O Thread를 통해 Browser Process에 접근.
•  Browser Process의 I/O Thread에서 ResourceMessageFilter로 요청을 Intercept.
•  Network Stack이 Browser Process에 Embedded된 구조의 특징
à Socket pool and connection limits, Socket reuse, Socket late-binding, Consistent se
ssion state, Global resource and network optimizations, Predictive optimizations
GPU Process
•  GPU Process의 구조적 특징: Security, Robustness, Uniformity, Parallelism
•  Client(Render Process): GL Command를 생성, Ring Buffer에 Insert
à 일반적인 페이지의 경우 Texture Upload용으로 사용, HTML5 Canva/WebGL은 직접 GL Command를 사용

•  Server(GPU Process): Command를 fetch, execution.
•  GL command는 GL ES 2.0 API와 거의 유사한 Async command

GL command example
OP(BindBuffer)
OP(BindFramebuffer)
OP(BindRenderbuffer)
OP(BindTexture)

/* 261 */
/* 262 */
/* 263 */
/* 264 */
4. WebKit2 vs Chromium and Firefox
WebKit vs WebKit2 vs Chromium

Webkit

Webkit2

Chromium
Chromium
WebKit2
Firefox
Firefox : asm.js

EMScripten
Clang

LLVM

C++
IR

asm.js

Link

JS

WebGL
Q&A
THANK YOU

More Related Content

What's hot

Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit RenderingAriya Hidayat
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamercalvaris
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편준철 박
 
WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy ...
WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy ...WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy ...
WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy ...Codemotion
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018 게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018 Amazon Web Services Korea
 
[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것NAVER Engineering
 
Introduction to Backbone.js
Introduction to Backbone.jsIntroduction to Backbone.js
Introduction to Backbone.jsPragnesh Vaghela
 
A guide to getting started with WebdriverIO
A guide to getting started with WebdriverIOA guide to getting started with WebdriverIO
A guide to getting started with WebdriverIONilenth Selvaraja
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직Hoyoung Choi
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐MinGeun Park
 
[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선NAVER D2
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴MinGeun Park
 
Building fast,scalable game server in node.js
Building fast,scalable game server in node.jsBuilding fast,scalable game server in node.js
Building fast,scalable game server in node.jsXie ChengChao
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013devCAT Studio, NEXON
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기ChangKyu Song
 

What's hot (20)

The WebKit project
The WebKit projectThe WebKit project
The WebKit project
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편
 
WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy ...
WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy ...WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy ...
WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy ...
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018 게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
 
[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것
 
Introduction to Backbone.js
Introduction to Backbone.jsIntroduction to Backbone.js
Introduction to Backbone.js
 
A guide to getting started with WebdriverIO
A guide to getting started with WebdriverIOA guide to getting started with WebdriverIO
A guide to getting started with WebdriverIO
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐
 
[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
 
Building fast,scalable game server in node.js
Building fast,scalable game server in node.jsBuilding fast,scalable game server in node.js
Building fast,scalable game server in node.js
 
JQuery
JQueryJQuery
JQuery
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 

Viewers also liked

C5 모바일 웹ui개발 아직도 맨땅에 삽질부터 하십니까
C5 모바일 웹ui개발 아직도 맨땅에 삽질부터 하십니까C5 모바일 웹ui개발 아직도 맨땅에 삽질부터 하십니까
C5 모바일 웹ui개발 아직도 맨땅에 삽질부터 하십니까NAVER D2
 
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
Deview 2013 - 나는 왜 개발자인데자신이 없을까?Deview 2013 - 나는 왜 개발자인데자신이 없을까?
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?Minsuk Lee
 
[E5]googles engineering culture
[E5]googles engineering culture[E5]googles engineering culture
[E5]googles engineering cultureNAVER D2
 
142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5NAVER D2
 
[A2]android security의 과거와 미래 – from linux to jelly bean
[A2]android security의 과거와 미래 – from linux to jelly bean[A2]android security의 과거와 미래 – from linux to jelly bean
[A2]android security의 과거와 미래 – from linux to jelly beanNAVER D2
 
[A3]deview 2012 network binder
[A3]deview 2012 network binder[A3]deview 2012 network binder
[A3]deview 2012 network binderNAVER D2
 
[E1]3천만모바일시대, 성공을위한전략은
[E1]3천만모바일시대, 성공을위한전략은[E1]3천만모바일시대, 성공을위한전략은
[E1]3천만모바일시대, 성공을위한전략은NAVER D2
 
136 deview 2013 쫄지마글로벌-심상민
136 deview 2013 쫄지마글로벌-심상민136 deview 2013 쫄지마글로벌-심상민
136 deview 2013 쫄지마글로벌-심상민NAVER D2
 

Viewers also liked (8)

C5 모바일 웹ui개발 아직도 맨땅에 삽질부터 하십니까
C5 모바일 웹ui개발 아직도 맨땅에 삽질부터 하십니까C5 모바일 웹ui개발 아직도 맨땅에 삽질부터 하십니까
C5 모바일 웹ui개발 아직도 맨땅에 삽질부터 하십니까
 
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
Deview 2013 - 나는 왜 개발자인데자신이 없을까?Deview 2013 - 나는 왜 개발자인데자신이 없을까?
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
 
[E5]googles engineering culture
[E5]googles engineering culture[E5]googles engineering culture
[E5]googles engineering culture
 
142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5
 
[A2]android security의 과거와 미래 – from linux to jelly bean
[A2]android security의 과거와 미래 – from linux to jelly bean[A2]android security의 과거와 미래 – from linux to jelly bean
[A2]android security의 과거와 미래 – from linux to jelly bean
 
[A3]deview 2012 network binder
[A3]deview 2012 network binder[A3]deview 2012 network binder
[A3]deview 2012 network binder
 
[E1]3천만모바일시대, 성공을위한전략은
[E1]3천만모바일시대, 성공을위한전략은[E1]3천만모바일시대, 성공을위한전략은
[E1]3천만모바일시대, 성공을위한전략은
 
136 deview 2013 쫄지마글로벌-심상민
136 deview 2013 쫄지마글로벌-심상민136 deview 2013 쫄지마글로벌-심상민
136 deview 2013 쫄지마글로벌-심상민
 

Similar to Deview 2013 mobile browser internals and trends_20131022

Beginners' guide to Ruby on Rails
Beginners' guide to Ruby on RailsBeginners' guide to Ruby on Rails
Beginners' guide to Ruby on RailsVictor Porof
 
Server-side Web development via Ruby on Rails
Server-side Web development via Ruby on RailsServer-side Web development via Ruby on Rails
Server-side Web development via Ruby on Railsg3ppy
 
Web Development Presentation
Web Development PresentationWeb Development Presentation
Web Development PresentationTurnToTech
 
Ajax toolkit framework
Ajax toolkit frameworkAjax toolkit framework
Ajax toolkit frameworkSunil Kumar
 
HTML alchemy: the secrets of mixing JavaScript and Java EE - Matthias Wessendorf
HTML alchemy: the secrets of mixing JavaScript and Java EE - Matthias WessendorfHTML alchemy: the secrets of mixing JavaScript and Java EE - Matthias Wessendorf
HTML alchemy: the secrets of mixing JavaScript and Java EE - Matthias WessendorfJAX London
 
Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017Alexandre Morgaut
 
Building Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsBuilding Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsTroy Miles
 
Intro to .NET for Government Developers
Intro to .NET for Government DevelopersIntro to .NET for Government Developers
Intro to .NET for Government DevelopersFrank La Vigne
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるSadaaki HIRAI
 
Rendering: Or why your perfectly optimized content doesn't rank
Rendering: Or why your perfectly optimized content doesn't rankRendering: Or why your perfectly optimized content doesn't rank
Rendering: Or why your perfectly optimized content doesn't rankWeLoveSEO
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkTroy Miles
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersSascha Corti
 
Intro to MVC 3 for Government Developers
Intro to MVC 3 for Government DevelopersIntro to MVC 3 for Government Developers
Intro to MVC 3 for Government DevelopersFrank La Vigne
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache CordovaIvano Malavolta
 

Similar to Deview 2013 mobile browser internals and trends_20131022 (20)

Beginners' guide to Ruby on Rails
Beginners' guide to Ruby on RailsBeginners' guide to Ruby on Rails
Beginners' guide to Ruby on Rails
 
Server-side Web development via Ruby on Rails
Server-side Web development via Ruby on RailsServer-side Web development via Ruby on Rails
Server-side Web development via Ruby on Rails
 
Web Development Presentation
Web Development PresentationWeb Development Presentation
Web Development Presentation
 
Ajax toolkit framework
Ajax toolkit frameworkAjax toolkit framework
Ajax toolkit framework
 
Push it to the Edge
Push it to the EdgePush it to the Edge
Push it to the Edge
 
HTML alchemy: the secrets of mixing JavaScript and Java EE - Matthias Wessendorf
HTML alchemy: the secrets of mixing JavaScript and Java EE - Matthias WessendorfHTML alchemy: the secrets of mixing JavaScript and Java EE - Matthias Wessendorf
HTML alchemy: the secrets of mixing JavaScript and Java EE - Matthias Wessendorf
 
HTML5 Comprehensive Guide
HTML5 Comprehensive GuideHTML5 Comprehensive Guide
HTML5 Comprehensive Guide
 
Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017
 
Building Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsBuilding Cross-Platform Mobile Apps
Building Cross-Platform Mobile Apps
 
Js frameworks
Js frameworksJs frameworks
Js frameworks
 
Intro to .NET for Government Developers
Intro to .NET for Government DevelopersIntro to .NET for Government Developers
Intro to .NET for Government Developers
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
 
Rendering: Or why your perfectly optimized content doesn't rank
Rendering: Or why your perfectly optimized content doesn't rankRendering: Or why your perfectly optimized content doesn't rank
Rendering: Or why your perfectly optimized content doesn't rank
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 
Edge of the Web
Edge of the WebEdge of the Web
Edge of the Web
 
Ie9 overview
Ie9 overviewIe9 overview
Ie9 overview
 
Intro to MVC 3 for Government Developers
Intro to MVC 3 for Government DevelopersIntro to MVC 3 for Government Developers
Intro to MVC 3 for Government Developers
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 

More from NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

More from NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

Recently uploaded

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Deview 2013 mobile browser internals and trends_20131022

  • 1. Mobile Browser Internals and Trends 김준걸 TL / 웹킷코어연구lab 이형욱 TL / 웹브라우저기술lab NAVER LABS
  • 2. CONTENTS 0. 2013 Briefing 1. Browser Internals 2. Android WebView Internals and Trend 3. Chromium (Blink) 4. WebKit2 Vs Chromium and Firefox
  • 4. Mobile Browser Market Share Android iPhone Opera UC Browser Nokia BlackBerry NetFront iPod Touch Chrome Other 28.62% 21.32% 16.1% 11.15% 7.04% 3.17% 2.28% 1.95% 4.25% 4.12% Top9 : 95.88% WebKit based Browsers
  • 5. WebKit based Browsers u  Amazon Kindle u  PS3 web browser u  Arora u  RockMelt u  BOLT browser u  Safari u  Epippany browser u  SRWare Iron u  Google Chrome u  Shiira u  iCab (version >=4) u  Spuntnik for MorphOS u  Iris Browser u  Stainless u  KonQueror u  Steel for Android u  Midori u  TeaShark u  Nintendo 3DS u  Tizen Browser u  OmniWeb u  Uzbl u  Opera (version >=15) u  Web Browser for S60 (Nokia) u  OWB u  WebOS Browser
  • 6. History of WebKit in Browser IE WebKit Safari Chrome WebKit2 Chrome Android Blink ~2001 2005 2007 2008 2010 2012 2013 MS World Apple made WebKit Apple opened WebKit iPhone Development Google bought Android iPhone Opened Google opened Chromium WebKit2 Development Google opened Android Chrome for Android Released Chrome Market Share 1st Google forks WebKit with Blink If you can conquer the web browser, you can conquer the world.
  • 7. WebKit and Blink in 2013 l  Google announced on April 3rd that they would be forking WebKit with new Blink Motivations according to Google: ü  They were not using WebKit2 anyway ü  Simplification of the codebase in Blink l  After forking WebKit with Blink ü  Google removes the concept of ‘port’ as it was defined in WebKit ü  Apple removes the chromium port in WebKit ü  Opera joined WebKit then moved to Blink. ü  New proposal Nix port in WebKit ü  Qt recently announced that they are moving to Blink à  Other companies and communites thinking what to do. à  WebKit developers porting patches from/to Blink/WebKit
  • 9. Browser at a High Level Data Persistence UI Code Coverage 5% Browser Engine Rendering Engine WebKit 95% Network I /O JavaScript Engine Graphics S tack
  • 10. Major Component of WebKit API Layer WebKit and WebKit2 (Embedding API) Bindings (JavaScript API) WebCore (HTML, CSS, DOM, etc) Platform (Network, Storage, Graphics) JavaScriptCore (JavaScript Engine) WTF (Data structures, Threading primitives)
  • 11. Rendering Loading HTML Parsing Rendering Layout DOM Tree HTML Parser Render Tree attach() CSS Style Sh eet Painting Display Painting Style Rule CSS Parser DOM Tree Render Tree DOM Node Render Layer Render Object DOM Node Render Object DOM Node Render Layer Render Object DOM Node Render Object Render Object DOM Node DOM Node Render Layer Render Object Render Layer
  • 12. Rendering : DOM Tree and Render Tree DOM Tree <html> Render Tree HTMLDocument 2. addChild() 1. Element 생성 5. setRenderer HTMLHtmlElement RenderView 4. RenderBlock 생성 RenderBlock 3. isRenderable? Yes <head> <title>Hello, Deview!</title> <style>…</style> </head> <body> <div class=‘layer’> isRenderable? No HTMLHeadElement HTMLTitleElement HTMLStyleElement HTMLBodyElement RenderBlock HTMLDivElement <nobr> <span> <a href=http://a.com>News</a> </span> </nobr> </div> </body> </html> RenderBlock RenderInline HTMLElement HTMLElement HTMLAnchorElement Text RenderInline RenderInline RenderText
  • 13. Rendering : Render Layer Tree CSS file .layer_example{ …. -webkit-transform: tr anslate3d(0,0,0);} <html> Render Layer Tree RenderView Conditions -  Transparency, Masking RenderBlock RenderRootLayer -  Z-ordering <head> <title>Hello, Deview!</title> <style>…..</style> </head> <body> <div class=‘layer_example’> <nobr> <span> <a href=http://a.com>News</a> </span> </nobr> </div> </body> </html> -  Overflow clip -  Reflections, Shadows, Transforms -  Positioned content -  <canvas>, <video> RenderBlock requiresLayer() RenderBlock Z-ordering RenderLayer RenderInline RenderInline RenderInline RenderText GraphicsLayer Graphics Layer Tree
  • 14. Rendering : Render Style Tree Parsing HTML Rendering HTML Parser Layout DOM Tree Render Tree attach() CSS Style Sh eet CSS p.div{ margin-top:3px; } .error{ color:red; } Painting Painting Style Rule CSS Parser Class RenderStyle { RenderStyle(RenderStyle parent); CSSStyleSheet CSSRule Selectors p Display div Declaration margin-to p Color color(); void setColor(Color); IntRect initialColor(); CSSRule 3px Selectors .error Render Style Tree Length marginTop(); … void setUserSelect(); … DataRef<InheritedData> Inherited; Declaration color red }
  • 15. Rendering : Dump Render Tree (DRT)
  • 16. Painting : SW and HW Rendering l  S/W Rendering Path CPU Graphic Buff er CPU Graphic Buff er l  H/W Accelerated Rendering Path Layering Compositing
  • 17. Painting : Tiled Backing Store Tile is a rectangle with a texture in Checkboard pattern. Backing Store is off-screen buffer The effect of using Tiled Backing Store is Progressive Rendering : - Pan/Scroll - Zoom in/out Each Tile is a texture for GPU Core Check Di rty Tiles Update T ile Buffer Paint Tile s
  • 18. WebView::loadUrl 20,000~50,000 Calls Page Frame Frame Loader Docuement layout() CachedResource Loader If Not cached, create If cached, setDocument Docuement Loader addData() Cache CachedResource Create/load layout() FrameView paintContents() RenderLayer paintLayer() RenderView paint() WebView Database RenderObject Save/Load/Remove Cache MainResource Loader SubResource Loader Load Html file Cache Manager Load Image, JS, CSS files Create/Remove Cache WebView Worker ResourceHandle Platform’s Network Stack LoadListener Save/Remove Cache WebView Cache.db
  • 19. WebKit Source Code in numbers <https://www.ohloh.net/p/WebKit/analyses>
  • 20. 2. Android WebView Internals and Trend
  • 21. Android WebKit API Layer talk this WebView Framework Java Layer JNI (Java/C++) WebKit and WebKit2 (Embedding API) Bindings (JavaScript API) WebCore (HTML, CSS, DOM, etc) Platform (Network, Storage, Graphics) JavaScriptCore (JavaScript Engine) WTF (Data structures, Threading primitives) Chromium Network Stack V8 Skia Platform Layer
  • 22. Jelly-Bean’s WebView Framework new class android class inner class create 22
  • 25. Chromium powered WebView AwGeolocationPermissions AwCookieManage r AwContents new class AwContentsClient Chromium class inner class create 25
  • 26. Chromium powered WebView ContentView Android Chromium의 Process 생성 특징 -  Device의 CPU Feature/Core수 및 Memory Class를 체크하여 Renderer Process를 동적으로 할당 à  하지만 Chromium powered WebView는 1-Process로 동작할 가능성 有 AndroidBrowserProcess normalizeMaxRenderProcess() Max((Memory class-8)/8,1) Memory Class Baseline : 16 à 1-Process 24 à 2-Process SandboxedProcessLauncher CPU Feature/Core 수 체크 SandboxedProcessConnection Bind Service SandboxedP rocess Service0 Sandboxed Process Service1 … Sandboxed Process Service5 26
  • 28. Chromium powered WebView란? “Open Source Browser Engine인 Chromium 엔진기반의 API Suites로, 기존 Android WebView와 1:1 호환성을 가진 새로운 렌더링 엔진.” public final class WebViewFactory { WebViewFactory.java in AOSP public static final String WEBVIEW_EXPERIMENTAL_PROPERTY = "persist.sys.webview.exp"; private static final String DEPRECATED_CHROMIUM_PROPERTY = "webview.use_chromium"; // Default Provider factory class name. // TODO: When the Chromium powered WebView is ready, it should be the default factory class. private static final String DEFAULT_WEBVIEW_FACTORY = "android.webkit.WebViewClassic$Factory"; private static final String CHROMIUM_WEBVIEW_FACTORY = "com.android.webview.chromium.WebViewChromiumFactoryProvider"; private static final String CHROMIUM_WEBVIEW_JAR = "/system/framework/webviewchromium.jar"; /** AwContents.java in chromium * Exposes the native AwContents class, and together these classes wrap the ContentViewCore * and Browser components that are required to implement Android WebView API. This is the * primary entry point for the WebViewProvider implementation; it holds a 1:1 object * relationship with application WebView instances. */ @JNINamespace("android_webview") public class AwContents {
  • 29. Chromium 이란? Google Chrome Chromium Logo Colorful Blue Crash reporting Yes, if you turn it on None User metrics Yes, if you turn it on No Video and audio tags AAC, MP3, Vorbis and Theora Vorbis and Theora by default Adobe Flash custom (non-free) plugin inclu ded in release supports NPAPI plugins, includi ng the one from Adobe PDF support custom (non-free) plugin inclu ded in release downloads and displays with s ystem PDF viewer Code Tested by Chrome developers May be modified by distributio ns Sandbox Always on Depending on the distribution Quality Assurance New releases are tested before sending to users Depending on the distribution
  • 31. Chromium powered WebView의 특징 AOSP WebView Chromium WebView Chromium V ersion WebKit r.84325 (Chromium 12.0.74 2) Latest Chromium (Chromium 31.0.1650. 11) HTML5 298 414 CSS3 45% 77% DevTool X O Process single-process single-process Threads 4 12 Comments Android ICS부터 Update 없음. http://html5test.com http://css3test.com PC와 동일한 디버깅 환경 제공 multi-process로 switch 가능한 구조 I/O Thread, Compositor Thread, GPU Process Thread, etc… * Galaxy Nexus 기준
  • 32. Chromium powered WebView의 새로운 기능들… Chromium Feature Dashboard: http://www.chromestatus.com/features <Remote Web Inspector> <HTML5 WebRTC> <HTML5 WebAudio API>
  • 33. Chromium powered WebView Status < Peter Beverloo >
  • 34. Chromium powered WebView의 구조 Android Apps Chromium pow ered WebView Chromium Test Shell Chrome Browser Browser Components ( autocomple, autofill, bookmark, devtools, download, favicon, history, omibox … ) Blink Chromium Content API Content (Multi-process-impl) Blink(WebKit)
  • 35. Why multi-process architecture? 기존 브라우저의 문제점 •  현재(크롬 제작 당시)의 브라우저는 과거의 OS와 비슷한 구조 •  과거의 OS는 단일 사용자, 어떤 어플리케이션의 문제는 OS 전체의 안정성에 영향을 미침 •  단일 프로세스 모델의 브라우저에서는 한 페이지의 문제가 브라우저 전체에 문제를 일으킴 문제해결을 위한 접근 •  절대적으로 안정적인 렌더링 엔진을 만드는 것은 거의 불가능함 •  최근의 OS는 각 어플리케이션을 고립시킴으로써 특정 어플리케이션의 문제가 시스템 전체의 안정성에 영 향을 미치지 않도록 하며, 사용자 각자의 데이터를 보호하고 있음
  • 36. Multi Process Architecture Browser Process와 Renderer Process의 연결 구조 Renderer Process의 각 View 역시 Browser Process에 연결 고리를 가짐 각 프로세스별로 입출력 을 위한 스레드가 별도로 존재 Renderer Process에 WebKi t 렌더링 엔진 존재
  • 37. Inter-process communication (IPC) Browser Process IPC •  Browser Process 내에서 별도의 I/O Thread가 IPC를 담당하게 됨 •  Main Thread와의 메시지 교환은 IPC::ChannelProxy를 통해 이루어짐 •  I/O Thread를 사용하는 이유는 성능상 영향을 많이 주는 네트워크 처리 요구 메시지 등을 전담하여 처리 함으로써 사용자 인터페이스에 영향을 주지 않도록 하기 위함 •  I/O Thread 내부에서 처리할 메시지를 걸러내기 위해 ChannelProxy::MessageFilter 사용 Renderer Process IPC •  Renderer Process 내에서 별도의 I/O Thread가 IPC를 담당하게 됨 •  웹 페이지 렌더링을 비롯한 기타 작업은 Render Thread (Main Thread)에서 이루어짐 •  스레드를 분리함으로써 브라우저로의 동기적인 메시지 송수신이 가능
  • 38. Multi Process Architecture in detail Browser Process IPC RenderWidgetHost RenderViewHost Manager WebContents SiteInstance RenderViewHost RenderProcessHost RenderWidgetHost RenderViewHost 2 1 WebContents SiteInstance RenderProcessHost RenderWidgetHost RenderViewHost Manager RenderViewHost Main Thread RenderMainThread (Single Process Mode) Process Launcher Thread File Thread Cache Thread DB Thread UI Thread Renderer Process Renderer Process Main Thread RenderWidget WebKit RenderWidget I/O Thread RenderView 6 Main Thread 4 5 IO Thread RenderWidget RenderView RenderView WebKit WebKit I/O Thread 3
  • 39. Multi-process resource loading •  Renderer Process는 독립적인 I/O Thread를 통해 Browser Process에 접근. •  Browser Process의 I/O Thread에서 ResourceMessageFilter로 요청을 Intercept. •  Network Stack이 Browser Process에 Embedded된 구조의 특징 à Socket pool and connection limits, Socket reuse, Socket late-binding, Consistent se ssion state, Global resource and network optimizations, Predictive optimizations
  • 40. GPU Process •  GPU Process의 구조적 특징: Security, Robustness, Uniformity, Parallelism •  Client(Render Process): GL Command를 생성, Ring Buffer에 Insert à 일반적인 페이지의 경우 Texture Upload용으로 사용, HTML5 Canva/WebGL은 직접 GL Command를 사용 •  Server(GPU Process): Command를 fetch, execution. •  GL command는 GL ES 2.0 API와 거의 유사한 Async command GL command example OP(BindBuffer) OP(BindFramebuffer) OP(BindRenderbuffer) OP(BindTexture) /* 261 */ /* 262 */ /* 263 */ /* 264 */
  • 41. 4. WebKit2 vs Chromium and Firefox
  • 42. WebKit vs WebKit2 vs Chromium Webkit Webkit2 Chromium
  • 47. Q&A