| {{+bindTo:partials.standard_nacl_article}} |
| |
| <section id="welcome-to-native-client"> |
| <h1 id="welcome-to-native-client">Welcome to Native Client</h1> |
| <div id="home"> |
| <div class="pull-quote">To get the SDK and<br/>installation instructions<br/> |
| <a href="/native-client/sdk/download.html">visit the SDK Download page</a>. |
| </div> |
| <div class="big-intro"><p><strong>Native Client</strong> is a sandbox for running compiled C and C++ code in the |
| browser efficiently and securely, independent of the user’s operating system. |
| <strong>Portable Native Client</strong> extends that technology with |
| architecture independence, letting developers compile their code once to run |
| in any website and on any architecture with ahead-of-time (AOT) translation.</p> |
| <p>In short, Native Client brings the <strong>performance</strong> and <strong>low-level control</strong> |
| of native code to modern web browsers, without sacrificing the <strong>security</strong> and |
| <strong>portability</strong> of the web. Watch the video below for an overview of |
| Native Client, including its goals, how it works, and how |
| Portable Native Client lets developers run native compiled code on the web.</p> |
| <aside class="note"> |
| This site uses several examples of Native Client. For the best experience, |
| consider downloading the <a class="reference external" href="https://www.google.com/chrome/">latest version of Chrome</a>. When you come back, be sure to <a class="reference external" href="https://gonativeclient.appspot.com/demo">check out |
| our demos</a>. |
| </aside> |
| </div> |
| |
| <iframe class="video" width="600" height="337" |
| src="//www.youtube.com/embed/MvKEomoiKBA?rel=0" frameborder="0"></iframe> |
| <div class="big-intro"><h2 id="two-types-of-modules">Two Types of Modules</h2> |
| <p>Native Client comes in two flavors.</p> |
| <ul class="small-gap"> |
| <li><strong>Portable Native Client (PNaCl)</strong>: Pronounced ‘pinnacle’, PNaCl runs single, |
| portable (<strong>pexe</strong>) executables and is available in most implementations of |
| Chrome. A translator built into Chrome translates the pexe into native code |
| for the client hardware. The entire module is translated before any code is |
| executed rather than as the code is executed. PNaCl modules can be hosted from |
| any web server.</li> |
| <li><strong>Native Client (NaCl)</strong>: Also called traditional or non-portable Native |
| Client, NaCl runs architecture-dependent (<strong>nexe</strong>) modules, which are |
| packaged into an application. At runtime, the browser decides which nexe to |
| load based on the architecture of the client machine. |
| Apps and Extensions installed via the <a class="reference external" href="https://chrome.google.com/webstore/category/apps">Chrome Web Store (CWS)</a> can use NaCl |
| modules without additional prompting. |
| NaCl apps can also be installed from chrome://extensions or |
| the command-line during development, |
| however, this is not a recommended distribution mechanism.</li> |
| </ul> |
| <p>These flavors are described in more depth in <a class="reference internal" href="/native-client/nacl-and-pnacl.html"><em>PNaCl and NaCl</em></a></p> |
| <div class="left-side"> |
| <div class="left-side-inner"> |
| <h2>Hello World</h2> |
| <div class="big-intro"><p>To jump right in <a class="reference internal" href="/native-client/devguide/tutorial/tutorial-part1.html"><em>take the tutorial</em></a> |
| that walks you through a basic web application for Portable Native Client |
| (PNaCl). This is a client-side application that uses HTML, JavaScript, and a |
| Native Client module written in C++.</p> |
| </div> |
| </div> |
| </div> |
| <h2>A Little More Advanced</h2> |
| <div class="big-intro"><p>If you’ve already got the basics down, you’re probably trying to get a real |
| application ready for production. You’re <a class="reference internal" href="/native-client/devguide/devcycle/building.html"><em>building</em></a>, <a class="reference internal" href="/native-client/devguide/devcycle/debugging.html"><em>debugging</em></a> |
| or <a class="reference internal" href="/native-client/devguide/distributing.html"><em>ready to distribute</em></a>.</p> |
| </div> |
| |
| <div class="left-side"> |
| <div class="left-side-inner"> |
| <h2>Nuts and Bolts</h2> |
| <div class="big-intro"><p>You’ve been working on a Native Client module for a while now and you’ve run |
| into an arcane problem. You may need to refer to the <a class="reference internal" href="/native-client/reference/pnacl-bitcode-abi.html"><em>PNaCl Bitcode |
| Reference</em></a> or the <a class="reference internal" href="/native-client/reference/sandbox_internals/index.html"><em>Sandbox internals</em></a>.</p> |
| </div> |
| </div> |
| </div><h2 id="i-want-to-know-everything">I Want to Know Everything</h2> |
| <p>So, you like to read now and try later. Start with our <a class="reference internal" href="/native-client/overview.html"><em>Technical Overview</em></a></p> |
| <div class="big-intro" style="clear: both;"><p>Send us comments and feedback on the <a class="reference external" href="https://groups.google.com/forum/#!forum/native-client-discuss">native-client-discuss</a> mailing list, |
| or ask questions using Stack Overflow’s <a class="reference external" href="https://stackoverflow.com/questions/tagged/google-nativeclient">google-nativeclient</a> tag.</p> |
| </div></section> |
| |
| {{/partials.standard_nacl_article}} |