Home | History | Annotate | Download | only in platform
      1 page.title=Recursos de linguagem do Java 8
      2 page.keywords="android N", "Java 8", "Jack"
      3 @jd:body
      4 
      5 <div id="qv-wrapper">
      6   <div id="qv">
      7     <ol>
      8       <li>
      9         <a href="#supported-features">Recursos de linguagem e APIs do Java 8 com suporte</a>
     10       </li>
     11       <li>
     12         <a href="#configuration">Como ativar os recursos do Java 8 e a cadeia de ferramentas Jack</a>
     13       </li>
     14     </ol>
     15   </div>
     16 </div>
     17 
     18 <p>O Android N introduz o suporte aos recursos de linguagem do Java 8
     19  que podem ser usados ao desenvolver aplicativos direcionados ao Android N.
     20  Esta pgina descreve os novos recursos de linguagem com suporte no Android N
     21  Preview, como configurar seu projeto para us-los e os
     22  problemas conhecidos que voc poder encontrar.
     23 </p>
     24 
     25 <p>Para comear a usar esses recursos, primeiro faa o download e instale o Android
     26 Studio 2.1 e o Android N Preview SDK, que inclui a
     27 cadeia de ferramentas Jack obrigatria e o Android Plugin for Gradle atualizado. Se voc ainda no
     28 instalou o Android N Preview SDK, consulte <a href="{@docRoot}preview/setup-sdk.html">Preparao para desenvolver para o Android N</a>.</p>
     29 
     30 
     31 
     32 <p class="note">
     33   <strong>Observao:</strong> O uso dos novos recursos de linguagem do Java 8 no 
     34  obrigatrio para desenvolver aplicativos direcionados  plataforma Android N. Se
     35  no quiser escrever cdigo com os recursos de linguagem do Java 8, voc poder manter
     36  os valores de compatibilidade de origem e destino do seu projeto definidos para o Java 7, mas ainda
     37  ser necessrio compilar com o JDK 8 para desenvolver para a plataforma Android N.
     38 </p>
     39 
     40 <h2 id="supported-features">
     41   Recursos de linguagem e APIs do Java 8 com suporte
     42 </h2>
     43 
     44 <p>
     45   Atualmente, o Android no oferece suporte a todos os recursos de linguagem do Java 8. No entanto, os
     46  recursos a seguir agora esto disponveis para o desenvolvimento de aplicativos direcionados ao
     47  Android N Preview:
     48 </p>
     49 
     50 <ul>
     51   <li>
     52     <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Mtodos
     53  de interface padro e estticos</a>
     54   </li>
     55 
     56   <li>
     57     <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
     58  Expresses Lambda</a> (tambm disponveis em nvel da API 23 ou anterior)
     59   </li>
     60 
     61   <li>
     62     <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Anotaes
     63  repetveis</a>
     64   </li>
     65 
     66   <li>
     67     <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html">
     68  Referncias de mtodo</a> (tambm disponveis em nvel da API 23 ou anterior)
     69   </li>
     70 </ul>
     71 
     72 <p class="note">
     73   <strong>Observao:</strong> Para testar expresses Lambda ou referncias de mtodo em
     74  verses mais antigas do Android, acesse o arquivo {@code build.gradle}
     75  e configure {@code compileSdkVersion} e {@code targetSdkVersion} como 23 ou
     76 anterior. Voc precisar <a href="#configuration">permitir que a
     77  cadeia de ferramentas Jack</a> use esses recursos do Java 8.
     78 </p>
     79 
     80 <p>
     81   Alm disso, as seguintes APIs de recursos de linguagem do Java 8 agora esto disponveis:
     82 </p>
     83 
     84 <ul>
     85   <li>APIs relacionadas a reflexo e linguagem:
     86     <ul>
     87       <li>
     88         <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html">
     89         {@code java.lang.FunctionalInterface}</a>
     90       </li>
     91 
     92       <li>
     93         <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Repeatable.html">
     94         {@code java.lang.annotation.Repeatable}</a>
     95       </li>
     96 
     97       <li>
     98         <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#isDefault--">
     99         {@code java.lang.reflect.Method.isDefault()}</a>
    100       </li>
    101 
    102       <li>e Reflection APIs associadas a anotaes repetveis, como
    103       <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AnnotatedElement.html#getAnnotationsByType-java.lang.Class-">
    104         {@code AnnotatedElement.getAnnotationsByType(Class)}</a>
    105       </li>
    106     </ul>
    107   </li>
    108 
    109   <li>Utility APIs:
    110     <ul>
    111       <li>
    112         <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html">
    113         {@code java.util.function}</a>
    114       </li>
    115 
    116       <li>
    117         <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html">
    118         {@code java.util.stream}</a>
    119       </li>
    120     </ul>
    121   </li>
    122 </ul>
    123 
    124 <h2 id="configuration">
    125   Como ativar os recursos do Java 8 e a cadeia de ferramentas Jack
    126 </h2>
    127 
    128 <p>
    129   Para usar os novos recursos de linguagem do Java 8, voc tambm deve usar a
    130  nova <a class="external-link" href="https://source.android.com/source/jack.html">cadeia de ferramentas Jack</a>. Essa nova
    131  cadeia de ferramentas Android compila o cdigo-fonte de linguagem Java em um cdigo de bytes dex que pode ser lido no Android,
    132  tem o prprio formato de biblioteca {@code .jack} e fornece a maioria dos recursos
    133  de uma cadeia de ferramentas em uma s ferramenta: reempacotamento, reduo, ofuscao e
    134  multidex.
    135 </p>
    136 
    137 <p>Veja uma comparao entre duas cadeias de ferramentas usadas para compilar arquivos Android DEX:</p>
    138 <ul>
    139   <li>Cadeia de ferramentas legada javac:<br>
    140   <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
    141   .class} --&gt; {@code .dex})
    142   </li>
    143 
    144   <li>Nova cadeia de ferramentas Jack:<br>
    145   <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
    146   </li>
    147 </ul>
    148 
    149 <h3>
    150   Configurao do Gradle
    151 </h3>
    152 
    153 <p>
    154   Para ativar os recursos de linguagem do Java 8 e o Jack para seu projeto, insira
    155  o seguinte no arquivo {@code build.gradle} de nvel do mdulo:
    156 </p>
    157 
    158 <pre>
    159 android {
    160   ...
    161   defaultConfig {
    162     ...
    163     jackOptions {
    164       enabled true
    165     }
    166   }
    167   compileOptions {
    168     sourceCompatibility JavaVersion.VERSION_1_8
    169     targetCompatibility JavaVersion.VERSION_1_8
    170   }
    171 }
    172 </pre>
    173 
    174 <h3 id="known-issues">
    175   Problemas conhecidos
    176 </h3>
    177 
    178 <p>
    179   <a href="{@docRoot}tools/building/building-studio.html#instant-run">O Instant
    180  Run</a> no funciona com o Jack e ser desativado enquanto
    181  a nova cadeia de ferramentas estiver em uso.
    182 </p>
    183 
    184 <p>Como o Jack no gera arquivos de classe intermediria ao compilar um
    185 aplicativo, ferramentas que dependem desses arquivos no funcionam com o Jack. Alguns
    186 exemplos dessas ferramentas so:</p>
    187 
    188 <ul>
    189   <li>Detectores de cdigos suspeitos que operam em arquivos de classe
    190   </li>
    191 
    192   <li>Ferramentas e bibliotecas que exigem os arquivos de classe do aplicativo (como
    193  testes de instrumentao com JaCoCo)
    194   </li>
    195 </ul>
    196 
    197 <p>Se encontrar outros problemas ao usar o Jack, <a href="http://tools.android.com/filing-bugs">envie um relatrio de erros</a>.</p>