---
title: "Features"
---
<h1>Features</h1>

<p>Frontend technology designed for the future.</p>

<div>
  <img src="/img/apache-royale-tm-logo-side.svg" style="float:right;width:250px">
  <p>Apache Royale is a powerful, <a href="/source-code">open source</a> application technology that lets you easily build desktop, browser, and mobile applications for multiple devices and operating systems — all using the same programming model, tools, and codebase.</p>
  <p>You can use the Apache Royale SDK to create a wide range of highly interactive, expressive applications. For example, a data visualization application built in Royale can pull data from multiple back-end sources and display it in charts, tables, or other methods of your choice. Business users can drill down into the data for deeper insight and even change the data and have it automatically updated on the back end.</p>
  <img src="/img/EnterpriseClassLevel.png" style="float:left;max-width:50%">
</div>

<div>
  <h2>Enterprise-class programming model</h2>
  <p>Use constructs like strong typing, inheritance, and interfaces to program more efficiently with <a href="https://apache.github.io/royale-docs/features/as3">ActionScript 3.0</a> and <a href="https://apache.github.io/royale-docs/features/mxml">MXML</a>. Extensive mobile and traditional components help speed development. Royale applications can access device capabilities such as GPS, accelerometer, camera, and local database. Enjoy a cross-platform and native experience. Create applications that run consistently across Android and iOS mobile devices, as well as inside web browsers, and on traditional desktop computers. Royale gives you cross-platform development efficiency, and your application users enjoy an uncompromised native experience on each platform.</p>
</div>

<div>
  <img src="/img/royale_spheres_transp.png" style="float:right;max-width:50%">
  <h2>Strands &amp; Beads</h2>
  <p>Royale is designed from scratch with a composition philosophy that gives you lightweight UI components with all the functionality you need for your applications, but without any features you will not use and that only add extra weight.</p>
  <ul>
    <li><a href=" https://apache.github.io/royale-docs/features/strands-and-beads">
        <i class="fa fa-book"></i> Learn more about Strands &amp; Beads
      </a></li>
    <li><a href="https://apache.github.io/royale-docs/features/payg">
        <i class="fa fa-book"></i> Learn more about Pay-As-You-Go (PAYG)
      </a></li>
  </ul>
</div>

<div>
  <h2>Jewel Components</h2>
  <p><a href="https://apache.github.io/royale-docs/component-sets/jewel">Jewel</a> is an all new UI component set, created with design and responsiveness in mind. Apache Royale provides themes to use with Jewel out of the box. Jewel themes support up to 12 colors, light/dark, and flat/normal modes.</p>
  <ul>
    <li><a href="https://apache.github.io/royale-docs/component-sets/jewel">
        <i class="fa fa-book"></i> Learn about the Jewel component set
      </a></li>
    <li><a href="/tourdejewel">
        <i class="fa fa-rocket"></i> Launch the TourDeJewel sample application
      </a></li>
  </ul>
</div>

<div>
  <h2>Flex Emulation Components</h2>
  <p>The <a href="https://apache.github.io/royale-docs/component-sets/mxroyale">MXRoyale</a> and <a href="https://apache.github.io/royale-docs/component-sets/sparkroyale">SparkRoyale</a> UI component sets are designed to assist <a href="https://flex.apache.org/">Apache Flex</a> users migrating to Apache Royale. If you are familiar with Flex's MX and Spark component libraries, you'll feel right at home using these components in Royale. The components are designed to work the same as their Flex counterparts, but composed using Royale's strand and bead system.</p>
  <ul>
    <li><a href="https://apache.github.io/royale-docs/component-sets/mxroyale">
        <i class="fa fa-book"></i> Learn about the MXRoyale component set
      </a></li>
    <li><a href="https://apache.github.io/royale-docs/component-sets/sparkroyale">
        <i class="fa fa-book"></i> Learn about the SparkRoyale component set
      </a></li>
  </ul>
</div>

<div>
  <h2>Basic Components</h2>
  <p>Use the <a href="https://apache.github.io/royale-docs/component-sets/basic">Basic</a> UI component set to get the smallest, fastest and most <a href="https://apache.github.io/royale-docs/features/payg">Pay-As-You-Go (PAYG)</a> experience possible in Royale. The Basic component set is used as the basis for other components set, such as Jewel, MXRoyale, and SparkRoyale.</p>
  <ul>
    <li><a href="https://apache.github.io/royale-docs/component-sets/basic">
        <i class="fa fa-book"></i> Learn about the Basic component set
      </a></li>
  </ul>
</div>