Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(705)

Side by Side Diff: native_client_sdk/doc_generated/overview.html

Issue 476793002: Per P0 reqs add launch pts + make download obvious. Also misc cpy edits. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CL synced with master. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 {{+bindTo:partials.standard_nacl_article}} 1 {{+bindTo:partials.standard_nacl_article}}
2 2
3 <section id="technical-overview"> 3 <section id="technical-overview">
4 <span id="overview"></span><h1 id="technical-overview"><span id="overview"></spa n>Technical Overview</h1> 4 <span id="overview"></span><h1 id="technical-overview"><span id="overview"></spa n>Technical Overview</h1>
5 <div class="contents local" id="contents" style="display: none"> 5 <div class="contents local" id="contents" style="display: none">
6 <ul class="small-gap"> 6 <ul class="small-gap">
7 <li><a class="reference internal" href="#introduction" id="id2">Introduction</a> </li> 7 <li><a class="reference internal" href="#introduction" id="id2">Introduction</a> </li>
8 <li><a class="reference internal" href="#why-use-native-client" id="id3">Why use Native Client?</a></li> 8 <li><a class="reference internal" href="#why-use-native-client" id="id3">Why use Native Client?</a></li>
9 <li><a class="reference internal" href="#common-use-cases" id="id4">Common use c ases</a></li> 9 <li><a class="reference internal" href="#common-use-cases" id="id4">Common use c ases</a></li>
10 <li><p class="first"><a class="reference internal" href="#how-native-client-work s" id="id5">How Native Client works</a></p> 10 <li><p class="first"><a class="reference internal" href="#how-native-client-work s" id="id5">How Native Client works</a></p>
(...skipping 24 matching lines...) Expand all
35 applications that use NaCl and run in Chrome across multiple platforms.</p> 35 applications that use NaCl and run in Chrome across multiple platforms.</p>
36 <p>A web application that uses Native Client generally consists of a combination of 36 <p>A web application that uses Native Client generally consists of a combination of
37 JavaScript, HTML, CSS, and a NaCl module that is written in a language supported 37 JavaScript, HTML, CSS, and a NaCl module that is written in a language supported
38 by the SDK. The NaCl SDK currently supports C and C++; as compilers for 38 by the SDK. The NaCl SDK currently supports C and C++; as compilers for
39 additional languages are developed, the SDK will be updated to support those 39 additional languages are developed, the SDK will be updated to support those
40 languages as well.</p> 40 languages as well.</p>
41 <img alt="/native-client/images/web-app-with-nacl.png" src="/native-client/image s/web-app-with-nacl.png" /> 41 <img alt="/native-client/images/web-app-with-nacl.png" src="/native-client/image s/web-app-with-nacl.png" />
42 <h2 id="why-use-native-client">Why use Native Client?</h2> 42 <h2 id="why-use-native-client">Why use Native Client?</h2>
43 <p>Native Client open-source technology is designed to run compiled code 43 <p>Native Client open-source technology is designed to run compiled code
44 securely inside a browser at near-native speeds. Native Client puts web 44 securely inside a browser at near-native speeds. Native Client puts web
45 applications on the same playing field as traditional (locally-run) 45 applications on the same playing field as desktop software&#8212;it provides the
46 software&#8212;it provides the means to fully harness the client&#8217;s computa tional 46 means to fully harness the client&#8217;s computational resources for applicatio ns
47 resources for applications such as 3D games, multimedia editors, CAD modeling, 47 such as 3D games, multimedia editors, CAD modeling,
48 client-side data analytics, and interactive simulations. 48 client-side data analytics, and interactive simulations.
49 Native Client also aims to give C and C++ (and eventually other languages) the 49 Native Client also aims to give C and C++ (and eventually other languages) the
50 same level of portability and safety that JavaScript provides on the web today.< /p> 50 same level of portability and safety that JavaScript provides on the web today.< /p>
51 <p>Here are a few of the key benefits that Native Client offers:</p> 51 <p>Important benefits of Native Client include:</p>
52 <ul class="small-gap"> 52 <ul class="small-gap">
53 <li><strong>Graphics, audio, and much more:</strong> Run native code modules tha t render 2D 53 <li><strong>Graphics, audio, and much more:</strong> Running native code modules that render 2D
54 and 3D graphics, play audio, respond to mouse and keyboard events, run on 54 and 3D graphics, play audio, respond to mouse and keyboard events, run on
55 multiple threads, and access memory directly&#8212;all without requiring 55 multiple threads, and access memory directly&#8212;all without requiring
56 the user to install a plugin.</li> 56 the user to install a plugin.</li>
57 <li><strong>Portability:</strong> Write your applications once and you&#8217;ll be able to run them 57 <li><strong>Portability:</strong> Writing your applications once and running the m on operating
58 across operating systems (Windows, Linux, Mac, and Chrome OS) and CPU 58 systems (Windows, Linux, Mac, and Chrome OS) and CPU architectures (x86 and
59 architectures (x86 and ARM).</li> 59 ARM).</li>
60 <li><strong>Easy migration path to the web:</strong> Many developers and compani es have years 60 <li><strong>Easy migration path to the web:</strong> Leveraging years of work in existing
61 of work invested in existing desktop applications. Native Client makes the 61 desktop applications. Native Client makes the transition from the desktop to a
62 transition from the desktop to a web application significantly easier because 62 web application significantly easier because it supports C and C++.</li>
63 it supports C and C++.</li> 63 <li><strong>Security:</strong> Protecting the user&#8217;s system from malicious or buggy
64 <li><strong>Security:</strong> Native Client uses a double sandbox model designe d to protect 64 applications through Native Client&#8217;s double sandbox model. This model offe rs
65 the user&#8217;s system from malicious or buggy applications. This model offers the 65 the safety of traditional web applications without sacrificing performance and
66 safety of traditional web applications without sacrificing performance and
67 without requiring users to install a plugin.</li> 66 without requiring users to install a plugin.</li>
68 <li><strong>Performance:</strong> Native Client allows web applications to run a t speeds 67 <li><strong>Performance:</strong> Running at speeds comparable to desktop applic ations (within
69 comparable to desktop applications (within 5-15% of native speed). 68 5-15% of native speed). Native Client also allows applications to harness all
70 Native Client also allows applications to harness all available CPU cores via 69 available CPU cores via a threading API; this enables demanding applications
71 a threading API; this enables demanding applications such as console-quality 70 such as console-quality games to run inside the browser.</li>
72 games to run inside the browser.</li>
73 </ul> 71 </ul>
74 <h2 id="common-use-cases">Common use cases</h2> 72 <h2 id="common-use-cases">Common use cases</h2>
75 <p>Typical use cases for Native Client include the following:</p> 73 <p>Typical use cases for Native Client include the following:</p>
76 <ul class="small-gap"> 74 <ul class="small-gap">
77 <li><strong>Existing software components:</strong> With support for C and C++, N ative 75 <li><strong>Existing software components:</strong> With support for C and C++, N ative
78 Client enables you to reuse existing software modules in 76 Client lets you to reuse existing software modules in web applications. You
79 web applications&#8212;you don&#8217;t need to rewrite and debug code 77 don&#8217;t need to rewrite and debug code that already works.</li>
80 that&#8217;s already proven to work well.</li>
81 <li><strong>Legacy desktop applications:</strong> Native Client provides a smoot h migration 78 <li><strong>Legacy desktop applications:</strong> Native Client provides a smoot h migration
82 path from desktop applications to the web. You can port and recompile existing 79 path from desktop applications to the web. You can port and recompile existing
83 code for the computation engine of your application directly to Native Client, 80 code for the computation engine of your application directly to Native Client,
84 and need repurpose only the user interface and event handling portions to the 81 and need rebuild only the user interface and event handling portions for the
85 new browser platform. Native Client allows you to embed existing functionality 82 browser.</li>
86 directly into the browser. At the same time, your application can take
87 advantage of things the browser does well: handling user interaction and
88 processing events, based on the latest developments in HTML5.</li>
89 <li><strong>Heavy computation in enterprise applications:</strong> Native Client can handle the 83 <li><strong>Heavy computation in enterprise applications:</strong> Native Client can handle the
90 number crunching required by large-scale enterprise applications. To ensure 84 number crunching required by large-scale enterprise applications. To ensure
91 protection of user data, Native Client enables you to build complex 85 protection of user data, Native Client enables you to build complex
92 cryptographic algorithms directly into the browser so that unencrypted data 86 cryptographic algorithms directly into the browser so that unencrypted data
93 never goes out over the network.</li> 87 never goes out over the network.</li>
94 <li><strong>Multimedia applications:</strong> Codecs for processing sounds, imag es, and movies 88 <li><strong>Multimedia applications:</strong> Codecs for processing sounds, imag es, and movies
95 can be added to the browser in a Native Client module.</li> 89 can be added to the browser in a Native Client module.</li>
96 <li><strong>Games:</strong> Native Client lets web applications run at close to native 90 <li><strong>Games:</strong> Native Client lets web applications run at close to native
97 speed, reuse existing multithreaded/multicore C/C++ code bases, and 91 speed, reuse existing multithreaded/multicore C/C++ code bases, and
98 access low-latency audio, networking APIs, and OpenGL ES with programmable 92 access low-latency audio, networking APIs, and OpenGL ES with programmable
99 shaders. Native Client is a natural fit for running a physics engine or 93 shaders. Native Client is a natural fit for running a physics engine or
100 artificial intelligence module that powers a sophisticated web game. 94 artificial intelligence module that powers a sophisticated web game.
101 Native Client also enables applications to run unchanged across 95 Native Client also enables applications to run unchanged across
102 many platforms.</li> 96 many platforms.</li>
103 <li><strong>Any application that requires acceleration</strong>: Native Client f its seamlessly 97 <li><strong>Any application that requires acceleration</strong>: Native Client f its seamlessly
104 into web applications&#8212;it&#8217;s up to you to decide to what extent to use it. 98 into web applications&#8212;it&#8217;s up to you to decide to what extent to use it.
105 Use of Native Client covers the full spectrum from complete applications to 99 Use of Native Client covers the full spectrum from complete applications to
106 small optimized routines that accelerate vital parts of web apps.</li> 100 small optimized routines that accelerate vital parts of web applications.</li>
107 </ul> 101 </ul>
108 <h2 id="how-native-client-works"><span id="link-how-nacl-works"></span>How Nativ e Client works</h2> 102 <h2 id="how-native-client-works"><span id="link-how-nacl-works"></span>How Nativ e Client works</h2>
109 <p>Native Client is an umbrella name for a set of interrelated software componen ts 103 <p>Native Client is an umbrella name for a set of related software components th at
110 that work together to provide a way to develop C/C++ applications and run them 104 provide a way to develop C/C++ applications and run them securely on the web.</p >
111 securely on the web.</p>
112 <p>At a high level, Native Client consists of:</p> 105 <p>At a high level, Native Client consists of:</p>
113 <ul class="small-gap"> 106 <ul class="small-gap">
114 <li><strong>Toolchains</strong>: collections of development tools (compilers, li nkers, etc.) 107 <li><strong>Toolchains</strong>: Collections of development tools (compilers, li nkers, etc.)
115 that transform C/C++ code to Native Client modules.</li> 108 that transform C/C++ code to Native Client modules.</li>
116 <li><strong>Runtime components</strong>: components embedded in the browser or o ther 109 <li><strong>Runtime components</strong>: components embedded in the browser or o ther
117 host platforms that allow execution of Native Client modules 110 host platforms that allow execution of Native Client modules
118 securely and efficiently.</li> 111 securely and efficiently.</li>
119 </ul> 112 </ul>
120 <p>The following diagram shows how these components interact:</p> 113 <p>The following diagram shows how these components interact:</p>
121 <img alt="/native-client/images/nacl-pnacl-component-diagram.png" src="/native-c lient/images/nacl-pnacl-component-diagram.png" /> 114 <img alt="/native-client/images/nacl-pnacl-component-diagram.png" src="/native-c lient/images/nacl-pnacl-component-diagram.png" />
122 <p>The left side of the diagram shows how to use Portable Native Client 115 <p>The left side of the diagram shows how to use Portable Native Client
123 (PNaCl, pronounced &#8220;pinnacle&#8221;). Developers use the PNaCl toolchain 116 (PNaCl, pronounced &#8220;pinnacle&#8221;). Developers use the PNaCl toolchain
124 to produce a single, portable (<strong>pexe</strong>) module. At runtime, a tran slator 117 to produce a single, portable (<strong>pexe</strong>) module. At runtime, a tran slator
125 built into the browser translates the pexe into native code for the 118 built into the browser translates the pexe into native code for the
126 relevant client architecture.</p> 119 relevant client architecture. Translation occurs before any code is executed.</p >
127 <p>The right side of the diagram shows how to use traditional (non-portable) 120 <p>The right side of the diagram shows how to use (non-portable) Native Client.
128 Native Client. Developers use a nacl-gcc based toolchain to produce multiple 121 Developers use a nacl-gcc based toolchain to produce multiple
129 architecture-dependent (<strong>nexe</strong>) modules, which are packaged into an 122 architecture-dependent (<strong>nexe</strong>) modules, which are packaged into an
130 application. At runtime, the browser decides which nexe to load based 123 application. At runtime, the browser decides which nexe to load based
131 on the architecture of the client machine.</p> 124 on the architecture of the client machine.</p>
132 <h3 id="security">Security</h3> 125 <h3 id="security">Security</h3>
133 <p>Since Native Client permits the execution of native code on client machines, 126 <p>Since Native Client permits the execution of native code on client machines,
134 special security measures have to be implemented:</p> 127 special security measures have to be implemented:</p>
135 <ul class="small-gap"> 128 <ul class="small-gap">
136 <li>The NaCl sandbox ensures that code accesses system resources only through 129 <li>The NaCl sandbox ensures that code accesses system resources only through
137 safe, whitelisted APIs, and operates within its limits without attempting to 130 safe, whitelisted APIs, and operates within its limits without attempting to
138 interfere with other code running either within the browser or outside it.</li> 131 interfere with other code running either within the browser or outside it.</li>
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 subsequent versions of Pepper/Chrome. The SDK includes multiple versions of the 213 subsequent versions of Pepper/Chrome. The SDK includes multiple versions of the
221 Pepper APIs to help developers make adjustments to API changes and take 214 Pepper APIs to help developers make adjustments to API changes and take
222 advantage of new features: <a class="reference external" href="/native-client/pe pper_stable">stable</a>, <a class="reference external" href="/native-client/pepp er_beta">beta</a> and <a class="reference external" href="/native-client/pepper_ dev">dev</a>.</p> 215 advantage of new features: <a class="reference external" href="/native-client/pe pper_stable">stable</a>, <a class="reference external" href="/native-client/pepp er_beta">beta</a> and <a class="reference external" href="/native-client/pepper_ dev">dev</a>.</p>
223 <h2 id="where-to-start">Where to start</h2> 216 <h2 id="where-to-start">Where to start</h2>
224 <p>The <a class="reference internal" href="/native-client/quick-start.html"><em> Quick Start</em></a> document provides links to downloads and 217 <p>The <a class="reference internal" href="/native-client/quick-start.html"><em> Quick Start</em></a> document provides links to downloads and
225 documentation that should help you get started with developing and distributing 218 documentation that should help you get started with developing and distributing
226 Native Client applications.</p> 219 Native Client applications.</p>
227 </section> 220 </section>
228 221
229 {{/partials.standard_nacl_article}} 222 {{/partials.standard_nacl_article}}
OLDNEW
« no previous file with comments | « native_client_sdk/doc_generated/nacl-and-pnacl.html ('k') | native_client_sdk/doc_generated/pepper_stable/c-api.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698