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} --> {@code .class}) --> <b>dx</b> ({@code 141 .class} --> {@code .dex}) 142 </li> 143 144 <li>Nova cadeia de ferramentas Jack:<br> 145 <b>Jack</b> ({@code .java} --> {@code .jack} --> {@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>