¿Es posible usar Java 8 para el desarrollo de Android?

Al buscar en la web, no está claro si Java 8 es compatible con el desarrollo de Android o no.

Antes de descargar / configurar Java 8, alguien me puede señalar en cualquier documento “oficial” que dice que Java 8 es o no compatible con el desarrollo de Android.

java 8

Android es compatible con todas las características del lenguaje Java 7 y un subconjunto de las características del lenguaje Java 8 que varían según la versión de la plataforma.

Para verificar qué características de java 8 son compatibles

Usar las características del lenguaje Java 8

Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto de herramientas javac y dx actual, y desaprobamos la cadena de herramientas Jack. Con esta nueva dirección, las herramientas existentes y los complementos que dependen del formato de archivo de la clase Java deben seguir funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de comstackción de Android. Nuestro objective es lanzar esto como parte de Android Studio en las próximas semanas, y queríamos compartir esta decisión anticipadamente con usted.

Compatibilidad con funciones de idioma futuras de Java 8 en Android

Usuarios de Eclipse:

Para los desarrolladores antiguos que prefieren Eclipse, google deja de ser compatible con las herramientas de Eclipse Android Developer

si instaló Java 8 JDK, pruébelo; si aparece algún problema intente configurar el comstackdor como 1.6 en Eclipse desde el menú de la ventana → PreferenciasJavaCompiler . Java 7 también funcionará:

Preferencias de Eclipse -/> Java -> Comstackdor”></p>
<blockquote>
<p>  Se requiere Java 7 o una versión superior si tiene como objective Android 5.0 y versiones posteriores. </p>
</blockquote>
<p>  instala múltiples JDK y prueba. </p>
</div>
</li><!-- #comment-## -->
<div class=

ACTUALIZACIÓN 2017/11/04 – Android Studio 3.0 ahora tiene soporte nativo para Java 8. gradle-retrolambda ya no es necesario. Ver https://developer.android.com/studio/write/java8-support.html

El enlace de arriba también incluye instrucciones de migración si está utilizando gradle-retrolambda . Respuesta original a continuación:


Android no es compatible con Java 8. Solo admite hasta Java 7 (si tiene kitkat) y aún no tiene invookedynamic, solo la nueva syntax Sugar.

Si desea utilizar lambdas, una de las principales características de Java 8 en Android, puede usar gradle-retrolamba . Es una dependencia de comstackción gradle que integra retrolambda, una herramienta que convierte el bytecode de Java 8 a Java 6/7. Básicamente, si configura el comstackdor en Android Studio para comstackr el código de bytes de Java 8, lo que permite lambdas, lo convertirá de nuevo a bytecode de Java 6/7, que a su vez se convierte a dalvik bytecode. Es un truco para si quieres probar algunas características JDK 8 en Android en lugar de soporte oficial.

De hecho, puede usar la gradle-retrolamba gradle para usar Java 8 para Android Development.

A continuación se muestra la guía completa que he seguido recientemente para ejecutar expresiones lambda para el desarrollo de Android. La fuente original de esta guía se menciona al final.

En esta guía, se demostrará un método para incorporar algunas características de Java 8 a las herramientas de desarrollo de Android, apuntando específicamente a Eclipse IDE . Sin embargo, los pasos que se describirán a lo largo de esta guía también se pueden adaptar al nuevo entorno de desarrollo de levantamiento de Google, Android Studio. Se basa en la edición comunitaria de la popular IntelliJ Idea IDE de JetBrains y Google la ha actualizado recientemente a su versión “beta” a principios de julio de 2014, poco antes de que se escribiera esta guía. Eclipse seguirá siendo el entorno de desarrollo destacado, al menos por un tiempo, y considerando el hecho de que la mayoría de los proyectos de Android se han desarrollado utilizando Eclipse, un método para incorporar nuevas características de Java 8 como expresiones lambda en ADT parece ser bastante útil para los desarrolladores.

Android Development se basa en una implementación Java personalizada llamada Apache Harmony Project, que finalizó en 2011. La syntax Java más utilizada en Android Development es Java 6 (v1.6) y Java 7 (v1.7) también es parcialmente compatible con la edición KitKat (Android 4.4. +). Por lo tanto, las características de Java 8, como las expresiones lambda, no se pueden usar directamente en el desarrollo de aplicaciones de Android sin aplicar algunos ajustes en las herramientas de desarrollo. Afortunadamente, estos constructos son básicamente algunas mejoras de ‘azúcar sintáctico’ que les dan a los desarrolladores las deficiencias de cosas como ‘clases anónimas’ y pueden traducirse en clases Java 6 o Java 7.

Un enfoque reciente para traducir un código fuente Java 8 en versiones inferiores de Java se llama RetroLambda . Esta biblioteca hace que los desarrolladores ejecuten código Java 8 con expresiones lambda en Java 7 o incluso inferior. Desafortunadamente, las características de Java 8 además de las expresiones lambda no son soportadas por RetroLambda por ahora, pero el concepto de expresiones lambda es el mayor salto en la plataforma Java 8 y, de todos modos, es una gran herramienta para los desarrolladores de Android.

Los detalles sobre esta biblioteca se pueden encontrar en su página de GitHub:

https://github.com/orfjackal/retrolambda#getting-started

Además, un complemento de Gradle para RetroLambda creado por otro desarrollador permite que las comstackciones basadas en Gradle se implementen en proyectos Java o Android. Sin embargo, el desarrollador solo menciona la integración de este complemento en el entorno de Android Studio. Los detalles se pueden encontrar en su página de GitHub:

https://github.com/evant/gradle-retrolambda

El uso de estas infraestructuras dentro de un entorno de desarrollo basado en Eclipse no se puede abordar directamente, pero es factible y se demostrará a lo largo de esta guía.

Preparación

Esta guía supone que el lector tiene una comprensión básica del desarrollo de Android y se basa en la versión 22.6.2 de ADT porque la reciente versión 23.0.2 de ADT parece tener problemas, como la creación de carpetas de diseño. Los detalles sobre este problema se pueden encontrar en el siguiente enlace:

http://code.google.com/p/android/issues/detail?id=72591

Los pasos en esta guía se darán para una máquina de desarrollo Windows 8.1 de 64 bits , pero se pueden adaptar fácilmente a otras plataformas. El nuevo sistema de comstackción Gradle se usará para procesos de comstackción / limpieza y también se proporcionará su procedimiento de instalación. Además, tanto JDK 8 como JDK 7 deben coexistir en la máquina de desarrollo. Los pasos dados a continuación se deben seguir para instalarlos:

  • Vaya a la página de vista previa de acceso temprano JDK 8 http://jdk8.java.net
  • Descargue JDK 8u20 e instálelo. La instalación de JRE 8 no es necesaria y se puede omitir
  • Vaya a la última página de lanzamiento estable de JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
  • Descargue JDK 7u65 e instálelo. La instalación de JRE 7 tampoco es necesaria y se puede omitir
  • Agregue la carpeta de inicio JDK 8 y la carpeta bin JDK 8 a su %PATH%
  • Cree una nueva variable de entorno JAVA_HOME con el valor de la ruta de la carpeta de inicio de JDK 8
  • Cree una nueva variable de entorno JAVA8_HOME nuevo con el valor de la ruta de la carpeta de inicio de JDK 8
  • Cree una nueva variable de entorno JAVA7_HOME con el valor de la ruta de la carpeta de inicio de JDK 7
  • Abra una ventana de terminal y ejecute el comando java -version y verifique que Java 8 esté activo y en funcionamiento
  • Ejecute javac -version comando javac -version en la misma ventana y verifique que el comstackdor JDK 8 Java también esté activo y en funcionamiento

Ahora, ADT-22.6.2 se debe descargar desde el siguiente enlace:

http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip

  • Descargue ADT y descomprima su contenido en una carpeta, p. Ej. D:\adt
  • Defina una nueva variable de entorno llamada ANDROID_HOME con el valor de la ruta de la carpeta de instalación de ADT, por ejemplo, D:\adt\sdk
  • Agregue sus Andoid SDK Platform Tools y Andoid SDK Tools , por ejemplo, D:\adt\sdk\tools y D:\adt\sdk\platform-tools , a su %PATH%
  • Cree un acceso directo a Eclipse IDE si lo desea. Se encuentra debajo de la carpeta de instalación de ADT, por ejemplo, D:\adt\eclipse
  • Ejecute Eclipse IDE y cree un espacio de trabajo, por ejemplo, D:\adt\workspace
  • Haga clic en el botón Android SDK Manager que se encuentra en la barra de herramientas
  • Seleccione Android SDK Build tools Rev. 19.1 y la Android Support Library solamente. Deseleccione todo lo demás e instale estos dos paquetes.

Si todo va bien, ADT estará en funcionamiento.

La instalación de las siguientes herramientas también es muy recomendable:

  • Compatibilidad con Eclipse Kepler Java 8: Hace que Eclipse reconozca las nuevas extensiones de syntax de Java 8 y le permite deshacerse de molestos red dots en su editor de código Java. Se puede instalar a través de Help -> Install New Software en Eclipse. Ingrese http://download.eclipse.org/eclipse/updates/4.3-P-builds/ en el campo Work with y continúe instalándolo.

  • Nodeclipse / Enide Gradle: se usa principalmente para resaltar las palabras clave de Groovy. Groovy se usa como el DSL para los scripts de comstackción de Gradle. Este complemento se puede instalar a través de Eclipse Marketplace . Sin embargo, Eclipse dentro de ADT-22.6.2 no viene junto con Eclipse Marketplace Client . Por lo tanto, primero deberá instalar Eclipse Marketplace Client mediante la herramienta Install New Software en Eclipse. Ingrese http //: download.eclipse.org/mpc/kepler/ en el campo Work with y continúe instalándolo. Después de instalar Eclipse Marketplace Client , puede buscar Nodeclipse/Enide Gradle en Eclipse Marketplace Client e instalarlo.

  • Dispositivo virtual Genymotion: es un gran reemplazo del Android Virtual Device predeterminado que viene con ADT. AVD es molestamente engorroso y sigue estrellándose sin ningún motivo. Genymotion te hace preparar Android VD usando imágenes de CyanogenMod que son ejecutadas por Oracle VirtualBox . Su licencia de usuario único es gratuita y se puede descargar desde http://www.genymotion.com . Solo se requiere iniciar sesión y también se puede integrar en Eclipse. Los detalles se pueden encontrar en:

https://cloud.genymotion.com/page/doc/#collapse8

A continuación se muestra una captura de pantalla de un dispositivo virtual CyanogenMod basado en Android 4.3,

enter image description here

Se puede considerar como un dispositivo Android totalmente desarrollado que se ejecuta en una computadora personal basada en x86 o x64. Para usar los servicios de Google, como Google PlayStore en este dispositivo virtual, una imagen de gapps para la versión de Android que utiliza se debe flashear en el dispositivo. Se puede descargar una imagen de gapps adecuada para el dispositivo desde el sitio web de CyanogenMod:

http://wiki.cyanogenmod.org/w/Google_Apps

La instalación de Gradle es opcional, ya que también la proporciona Android SDK, pero se recomienda encarecidamente su instalación por separado. La instalación de la misma se puede realizar siguiendo estos pasos:

  • Vaya al sitio web de Gradle: http://www.gradle.org/

  • Haz clic en Downloads

  • En Versiones Previous Releases elija la versión 1.10 y descargue gradle-1.10-all.zip o gradle-1.10-bin.zip
  • Descomprime su contenido en una carpeta, por ejemplo, D:\adt\gradle
  • Defina una nueva variable de entorno llamada GRADLE_HOME con el valor de la ruta de la carpeta de instalación de Gradle, por ejemplo, D:\adt\gradle
  • Agregue su carpeta de binarios Gradle, por ejemplo, D:\adt\gradle\bin , a su %PATH%
  • Abra una ventana de terminal y ejecute el comando gradle -v y verifique que gradle -v funcionando gradle -v Si ha llegado a este punto exitosamente, significa que está listo para crear su primera aplicación de Android usando las características de Java 8.

Aplicación de demostración

Se creará una aplicación simple para demostrar el uso de las herramientas que se describieron en la sección anterior. Simplemente puede seguir los pasos que figuran a continuación para obtener una idea sobre el uso de expresiones lambda en las herramientas de desarrollo de Android:

  • Ejecute Eclipse IDE y cree una nueva aplicación para Android seleccionando File -> New -> Other -> Android -> Android Application Project
  • Complete el formulario que aparece como se muestra a continuación:

enter image description here

  • Simplemente haga clic en el botón Next en los siguientes formularios y haga clic en el botón Finish en el último. Espere hasta que ADT termine de cargar el proyecto
  • Haga clic derecho en el proyecto y seleccione New -> Folder y New -> Folder nombre builders
  • Haga clic derecho en la carpeta gen (Generated Java Files) y elimínelo. Gradle generará los mismos archivos para nosotros en breve y los agregaremos a la s build path. The del proyecto s build path. The s build path. The carpeta gen` creada por el generador de Ant predeterminado ya no es necesaria y los artefactos debajo de esa carpeta estarán obsoletos
  • Cree los siguientes archivos por lotes en la carpeta de builders :

    • gradle_build.cmd
    • gradle_post_build.cmd
    • gradle_clean.cmd
  • Complete estos archivos por lotes de la siguiente manera:

gradle_build.cmd:

enter image description here

gradle_post_build.cmd:

enter image description here

gradle_clean.cmd:

enter image description here

  • Desmarcar Project -> Build Automatically opción de menú
  • Haga clic derecho en el proyecto y seleccione Properties -> Builders y deseleccione todos los constructores predeterminados proporcionados por ADT
  • Haga clic en el botón New en la misma ventana y seleccione Program y haga OK en OK
  • Aparecerá una nueva ventana de configuración del generador. Complete sus tabs de la siguiente manera:

Pestaña Main de la nueva configuración del constructor

enter image description here

Pestaña de Refresh de la nueva configuración del constructor

enter image description here

Pestaña de Environment de la nueva configuración del constructor

enter image description here

Ficha Build Options de la nueva configuración del constructor

enter image description here

  • Cree el segundo generador llamado Gradle_Post_Build que use gradle_post_build.cmd como su progtwig. Todas las demás configuraciones de este constructor deben ser exactamente iguales al constructor creado anteriormente. Este constructor será responsable de copiar los artefactos creados por el proceso de comstackción en la carpeta bin .
  • Crea el tercer constructor llamado Gradle_Cleaner que usa gradle_clean.cmd como su progtwig. Solo Run the builder configuración Run the builder en la pestaña final debe configurarse como During a Clean . Todas las demás configuraciones de este constructor deben ser exactamente iguales al primer constructor. Este constructor será responsable de limpiar los artefactos creados por el proceso de comstackción como su nombre lo sugiere.

Nuevos constructores del proyecto HelloLambda

enter image description here

  • Haga clic derecho en el proyecto y seleccione Export
  • Seleccione Android -> Generate Gradle Build Files y haga clic en Next
  • Seleccione el proyecto en la siguiente ventana y haga clic en Finish
  • Vaya a la carpeta raíz de su proyecto y elimine los archivos gradlew y gradlew.bat . Eliminar gradle carpeta gradle
  • Vuelva a cambiar a Eclipse y seleccione Project -> Clean Opción de menú Project -> Clean . Complete el formulario que se muestra de la siguiente manera:

Clean Project ventana del Clean Project

enter image description here

  • Haga clic en OK y espere hasta que finalice el proceso de limpieza
  • Agregue el fragmento de código de Java que figura a continuación justo después de la llamada a la función setContentView en su clase MainActivity :

enter image description here

  • Cambie el comienzo del archivo build.gradle hasta la sección sourceCompatibility siguiente manera:

enter image description here

  • Haga clic con el botón derecho en el proyecto y seleccione Properties -> Java Compiler Opción Properties -> Java Compiler y establezca todos los niveles de conformidad en Java 8. Esto hará que Eclipse reconozca nuevas construcciones Java 8 como expresiones lambda.
  • Haga clic en No en la ventana de notificaciones
  • Haga clic derecho en el proyecto y seleccione Build project . Eclipse comenzará a construir el proyecto.

Proceso de comstackción enter image description here

  • Haga clic derecho en el proyecto y vaya a Properties -> Java Build Path . Agregue las siguientes carpetas a la ruta de comstackción (también se muestra en la imagen a continuación):

    • build\source\buildConfig\debug
    • build\source\r\debug

enter image description here

Eclipse ahora podrá reconocer los archivos R.java y buildConfig.java y no mostrará ningún punto red dots que indique errores relacionados con los archivos de recursos del proyecto.

  • Cree una nueva Run Configuration para su plataforma de destino de Android haciendo clic derecho en el proyecto y luego seleccione Run As -> Run Configurations . Por ejemplo, esta aplicación de demostración se ve como se muestra a continuación en Genymotion VD:

Aplicación HelloLambda

enter image description here

Puede observar en la ventana de LogCat que el fragmento de código con una expresión lambda simple funciona correctamente

enter image description here

Fuente: Uso de Java 8 Lambda Expressions en Android Developer Tools

Sigue este enlace para nuevas actualizaciones. Usar las características del lenguaje Java 8

Vieja respuesta

A partir de la versión de vista previa Android N Android soporte funciones limitadas de Java 8 ver características de lenguaje Java 8

Para comenzar a usar estas funciones, debe descargar y configurar Android Studio 2.1 y Android N Preview SDK, que incluye la cadena de herramientas Jack necesaria y el complemento Android actualizado para Gradle. Si aún no ha instalado el SDK de Android N Preview, consulte Configurar para desarrollar para Android N.

Características de lenguaje Java 8 admitidas y API

Actualmente, Android no es compatible con todas las características del lenguaje Java 8. Sin embargo, las siguientes funciones ahora están disponibles cuando se desarrollan aplicaciones orientadas a Android N Preview:

Métodos de interfaz predeterminados y estáticos

Expresiones Lambda (también disponible en API nivel 23 y menor)

Anotaciones repetibles

Referencias de métodos (también disponible en el nivel 23 de API y menor)

Hay algunas características adicionales de Java 8 compatibles con Android, puede ver detalles completos de Java 8 Language Features

Actualizar

Nota: Android N basa su implementación de expresiones lambda en clases anónimas. Este enfoque les permite ser compatibles con versiones anteriores y ejecutables en versiones anteriores de Android. Para probar expresiones lambda en versiones anteriores, recuerde ir a su archivo build.gradle y establecer compileSdkVersion y targetSdkVersion en 23 o menos.

Actualización 2

Ahora la versión estable de Android studio 3.0 admite bibliotecas Java 8 y funciones de lenguaje Java 8 (sin el comstackdor Jack).

Android usa una Java que se deriva de Java 6.

A partir de Android SDK versión 19, puede usar las características de Java 7 haciendo esto . Sin soporte completo para Java 8 (todavía).

Sí, Android admite Java 8 ahora (24.1.17)

Ahora es posible

Pero necesitará ejecutar su dispositivo rom en java 1.8 y habilitar “jackOptions” para ejecutarlo. Jack es el nombre del nuevo comstackdor de Android que ejecuta Java 8

https://developer.android.com/guide/platform/j8-jack.html

agregue estas líneas a build_gradle

  android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } 

Java 8 parece ser el motor Java en ejecución de Android studio 2.0, pero aún no acepta la syntax de java 8 después de que lo comprobé, y ahora no puedes elegir un comstackdor desde el estudio de Android. Sin embargo, puede usar el complemento scala si necesita un mecanismo de progtwigción funcional en su cliente de Android.

enter image description here

Android OFICIALMENTE admite Java 8 desde Android N.

Los anuncios de funciones están aquí , el anuncio del lenguaje Java 8 es:

Compatibilidad mejorada con el lenguaje Java 8 : nos complace incorporar las funciones de lenguaje Java 8 a Android. Con el comstackdor Jack de Android, ahora puede usar muchas características populares del lenguaje Java 8, incluidas lambdas y más, en versiones de Android que se remontan a Gingerbread. Las nuevas características ayudan a reducir el código repetitivo. Por ejemplo, lambdas puede reemplazar clases internas anónimas al proporcionar escuchas de eventos. Algunas características del lenguaje Java 8, como métodos predeterminados y estáticos, flujos e interfaces funcionales, ahora también están disponibles en N y más arriba. Con Jack, esperamos seguir el lenguaje Java más de cerca mientras mantenemos la compatibilidad con versiones anteriores.

Podemos usar Java 8 usando:

  1. En build.gradle (Project: myProject) agregue lo siguiente

     classpath 'me.tatarka:gradle-retrolambda:xxx' //xxx is recent version 
  2. En build.gradle (Module: myModule) agregue lo siguiente

     apply plugin: 'me.tatarka.retrolambda' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 

Native Java 8 llega a Android! ¡Finalmente!

elimine el complemento Retrolambda y el bloque retrolambda del archivo build.gradle de cada módulo:

Para desactivar Jack y cambiar a la cadena de herramientas predeterminada, simplemente elimine el bloque jackOptions del archivo build.gradle de su módulo

Para comenzar a utilizar las características de lenguaje Java 8 compatibles, actualice el complemento de Android a 3.0.0 (o superior)

A partir de Android Studio 3.0, las características del lenguaje Java 8 son ahora compatibles nativamente con Android:

  • Expresiones Lambda
  • Referencias de métodos
  • Escriba anotaciones (actualmente, la información de anotación no está disponible en tiempo de ejecución, pero solo en tiempo de comstackción);
  • Anotaciones repetidas
  • Métodos de interfaz predeterminados y estáticos (en el nivel de API 24 o superior, sin soporte de ejecución instantánea tho);

También desde el mínimo nivel API 24, están disponibles las siguientes API Java 8:

  • java.util.stream
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.AnnotatedElement.getAnnotationsByType (clase)
  • java.lang.reflect.Method.isDefault ()

Agregue estas líneas a build.gradle de su módulo de aplicación para informar el proyecto del nivel de idioma:

  android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 

Deshabilite la compatibilidad con las características del lenguaje Java 8 agregando lo siguiente a su archivo gradle.properties :

 android.enableDesugar=false 

¡Terminaste! ¡Ahora puede usar native java8!

Android Studio 3.0 comenzó a proporcionar compatibilidad integrada para algunas de las características del lenguaje Java 8, que son:

  • Expresiones Lambda
  • Referencias de métodos
  • Escriba Anotaciones (la información está disponible en tiempo de comstackción, pero no en tiempo de ejecución)
  • Anotaciones repetidas
  • Métodos de interfaz predeterminados y estáticos

También a partir del nivel 24 de la API, están disponibles las siguientes API de Java 8:

  • java.util.stream
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
  • java.lang.reflect.Method.isDefault()

Además de eso, el soporte try-with-resources se extendió a todos los niveles API de Android.

Se prometen agregar más características de Java 8 en el futuro.

Para comenzar a usar las funciones compatibles del lenguaje Java 8, actualice el complemento de Android a 3.0.0-alpha1 (o superior) y agregue lo siguiente al archivo build.gradle de su módulo:

 android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } 

Para más detalles, visite:
https://developer.android.com/studio/write/java8-support.html

Cuando hice esta pregunta hace casi dos años, la respuesta realmente fue “oficialmente” no, pero como lo señala la respuesta de ekcr1, puede usar una de las características más esperadas (lambdas) para funcionar si usa retrolamba. En ese momento, todavía estaba usando eclipse, ya que Android Studio estaba en modo de “vista previa”, así que nunca busqué este camino.

Hoy, creo que la respuesta “oficial” sigue siendo no, y aunque retrolamba todavía parece un buen camino por recorrer, existe otra opción para aquellos dispuestos a ir por una ruta un tanto “no oficial”, como Kotlin.

Hoy Kotlin alcanzó 1.0.0. Para quienes no estén familiarizados con Kotlin, se puede encontrar más información en el sitio web que se encuentra aquí:

https://kotlinlang.org

o mire este video utube de una charla de Jake Wharton

https://www.youtube.com/watch?v=A2LukgT2mKc

Últimas noticias:

Google anuncia que con Android N y Android Studio 2.1+, la plataforma admitirá Java 8. También se lanzó la versión estable del estudio 2.1.

Por fin podemos usar expresiones lambda. No más filtro de lista para bucle. Horeeey.

Añada esta configuración build.gradle y sync gradle:

 android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 // or //sourceCompatibility 1.8 //targetCompatibility 1.8 } } 

Google acaba de anunciar que Java 8 será compatible nativamente con Android y que la cadena de herramientas de Jack se depreciará:

Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto de herramientas javac y dx actual, y desaprobamos la cadena de herramientas Jack. Con esta nueva dirección, las herramientas existentes y los complementos que dependen del formato de archivo de la clase Java deben seguir funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de comstackción de Android. Nuestro objective es lanzar esto como parte de Android Studio en las próximas semanas, y queríamos compartir esta decisión anticipadamente con usted.

Más información aquí: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html

Sí. Usaremos Java 8 pronto!

Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto de herramientas javac y dx actual, y desaprobamos la cadena de herramientas Jack. Con esta nueva dirección, las herramientas existentes y los complementos que dependen del formato de archivo de la clase Java deben seguir funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de comstackción de Android. Nuestro objective es lanzar esto como parte de Android Studio en las próximas semanas, y queríamos compartir esta decisión anticipadamente con usted.

https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html

Escribí una respuesta similar a una pregunta similar sobre Stack Overflow, pero esta es parte de esa respuesta.

Android Studio 2.1:

La nueva versión de Android Studio (2.1) tiene soporte para las características de Java 8. Aquí hay un extracto de la publicación blogspot de Android Developers :

… La versión de Android Studio 2.1 incluye soporte para el nuevo comstackdor de Jack y soporte para Java 8 .

Para usar las características del lenguaje Java 8 al desarrollar con N Developer Preview, necesita usar el comstackdor Jack. El asistente de proyecto nuevo [Archivo → Nuevo → Proyecto] genera las configuraciones correctas para los proyectos dirigidos al N.


Antes de Android Studio 2.1:

Android aún no es compatible con Java 1.8 (solo admite hasta 1.7), por lo que no puede usar funciones de Java 8 como lambdas.

Esta respuesta brinda más detalles sobre la compatibilidad de Android Studio ; afirma:

Si quieres usar lambdas, una de las características principales de Java 8 en Android, puedes usar gradle-retrolamba

Si desea saber más sobre el uso de gradle-retrolambda , esta respuesta proporciona muchos detalles sobre gradle-retrolambda hacerlo .

Pensé que publicaría una respuesta actualizada para aquellos que buscan algo un poco más actual.

Actualmente, Android y Android Studio admiten un subconjunto de funciones de Java 8. De acuerdo con la documentación de Android ubicada en su sitio web , Google dice:

La compatibilidad con las características del lenguaje Java 8 requiere un nuevo comstackdor llamado Jack. Jack solo es compatible con Android Studio 2.1 y versiones posteriores. Por lo tanto, si desea utilizar las características del lenguaje Java 8, debe usar Android Studio 2.1 para comstackr su aplicación.

Si ya tiene instalado Android Studio, asegúrese de actualizar a la última versión haciendo clic en Ayuda> Buscar actualizaciones (en Mac, Android Studio> Buscar actualizaciones). Si aún no tiene el IDE instalado en su estación de trabajo, descargue Android Studio aquí.

Características de lenguaje Java 8 admitidas y API

Android no es compatible con todas las características del lenguaje Java 8. Sin embargo, las siguientes funciones están disponibles cuando se desarrollan aplicaciones orientadas a Android 7.0 (API nivel 24):

  • Métodos de interfaz predeterminados y estáticos Expresiones Lambda (también disponibles en el nivel 23 de API y menor)
  • Anotaciones repetibles
  • Referencias de métodos (también disponible en el nivel 23 de API y menor)
  • Escriba Anotaciones (también disponible en el nivel 23 de la API y menor)

Además, las siguientes API de lenguaje Java 8 también están disponibles:

Reflexión y API relacionadas con el lenguaje:

  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.Method.isDefault () y Reflection API asociadas con anotaciones repetibles, como AnnotatedElement.getAnnotationsByType (Class)

API de utilidades:

  • java.util.function
  • java.util.stream

Para usar las nuevas características del lenguaje Java 8, también necesita usar la herramienta Jack . Este nuevo toolchain de Android comstack las fonts del lenguaje Java en un bytecode DEX legible por Android, tiene su propio formato de biblioteca .jack y proporciona la mayoría de las características de la herramienta como parte de una sola herramienta: reempaquetado, reducción, ofuscación y multidex.

Aquí hay una comparación de las dos cadenas de herramientas usadas para construir archivos Android DEX:

 Legacy javac toolchain: javac (.java → .class) → dx (.class → .dex) New Jack toolchain: Jack (.java → .jack → .dex) 

Hice esta pregunta hace más de 3 años y, obviamente, las respuestas han cambiado a lo largo de los años. Como muchos de los anteriores ya han respondido, desde algún tiempo atrás, la respuesta fue . Nunca he actualizado la respuesta aceptada porque era la respuesta correcta en ese momento. (No estoy seguro de qué es la política de desbordamiento de stack)

Solo quería agregar otra respuesta para aquellos que todavía buscan este tema. A partir del 17/5/2017, Google también anunció que Kotlin también es un idioma oficial para el desarrollo de Android.

No he encontrado un comunicado de prensa oficial, pero vi algunos de los videos de Google I / O donde se anunció. Aquí hay un enlace a una publicación del blog del equipo de Kotlin sobre el anuncio.

Agregar lo siguiente me solucionó el problema (Android studio 2.3.2):

build.gradle (Proyecto)

 buildscript { repositories { ... jcenter() } dependencies { ... classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY ... } } 

build.gradle (Módulo: aplicación)

 apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda' //PLUGIN android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } // SET JAVA VERSION ... } 

A subset of Java 8 is supported now on Android Studio. Just make the Source and Target Compatibility adjustments from the window below:

File –> Project Structure

Adjustment Window

More information is given in the below link.

https://developer.android.com/studio/write/java8-support.html