¿Es posible utilizar 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, puede alguien señalarme cualquier documentación "oficial" que diga que Java 8 es o no es compatible con el desarrollo de Android.
21 answers
Java 8
Android admite todas las características del lenguaje Java 7 y un subconjunto de características del lenguaje Java 8 que varían según la versión de la plataforma.
Para comprobar qué características de java 8 son compatibles
Utilice las características del lenguaje Java 8
Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y desaprovechar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y plugins existentes dependen de la clase Java el formato de archivo debe seguir funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de compilación Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y queríamos compartir esta decisión temprano con ustedes.
El futuro del lenguaje Java 8 Es compatible con Android
Usuarios de Eclipse:
Para los desarrolladores antiguos que prefieren Eclipse, google deja de apoyar Eclipse Android Developer tools
Si ha instalado Java 8 JDK, a continuación, darle una oportunidad, si aparece algún problema intente establecer el compilador como 1.6 en Eclipse desde el menú de la ventana → Preferencias → Java → Compiler . Java 7 también funciona:
Se requiere Java 7 o superior si se dirige a Android 5.0 y más alto.
Instale múltiples JDK e inténtelo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-21 22:22:01
ACTUALIZACIÓN 2017/11/04-Android Studio 3.0 ahora tiene soporte nativo para Java 8. gradle-retrolambda
ya no es necesario. Véase https://developer.android.com/studio/write/java8-support.html
El enlace anterior también incluye instrucciones de migración si está utilizando gradle-retrolambda
. Respuesta original abajo:
Android no soporta Java 8. Solo soporta hasta Java 7 (si tienes kitkat) y todavía no tiene invokedynamic, solo la nueva sintaxis sugar.
Si si quieres usar lambdas, una de las principales características de Java 8 en Android, puedes usar gradle-retrolamba. Es una dependencia de gradle build que integra retrolambda, una herramienta que convierte Java 8 bytecode de nuevo a Java 6/7. Básicamente, si configura el compilador en Android Studio para compilar Java 8 bytecode, permitiendo así lambdas, lo convertirá de nuevo a Java 6/7 bytecode que luego a su vez se convierte en dalvik bytecode. Es un truco para si quieres probar algunas características de JDK 8 en Android en lugar de apoyo oficial.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-03 22:30:29
De hecho, puedes usar gradle-retrolamba
la dependencia de gradle build para usar Java 8 para el desarrollo de Android.
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, un método para traer algunas características Java 8 en Se demostrarán las herramientas de desarrollo de Android, con el objetivo específico de Eclipse IDE . Sin embargo, los pasos que se describirá a lo largo de esta guía también podría adaptarse al nuevo desarrollo de levantamiento de Google entorno, Android Studio. Se basa en la edición comunitaria de popular IntelliJ Idea IDE por JetBrains y ha sido recientemente actualizado a su versión' beta ' por Google a principios de julio de 2014, ligeramente antes de que esta guía fuera escrita. Eclipse permanecerá como el prominente ambiente de desarrollo, al menos por un tiempo, y teniendo en cuenta la hecho de que la mayoría de los proyectos de Android han sido desarrollado usando Eclipse, un método para traer nuevas características de Java 8 como expresiones lambda en ADT parece ser muy útil para los desarrolladores.
El desarrollo de Android se basa en una implementación personalizada de Java llamada Proyecto Apache Harmony que fue terminado en 2011. La mayoría la sintaxis de Java comúnmente utilizada en el desarrollo de Android es Java 6 (v1.6) y Java 7 (v1.7) también está parcialmente soportado en la edición KitKat (Android 4.4.+). Por lo tanto, Java 8 características como lambda expresiones no se puede usar directamente en el Desarrollo de aplicaciones Android sin aplicando algunos ajustes en las herramientas de desarrollo. Por suerte, estos construcciones son básicamente algunas mejoras de 'azúcar sintáctico' que dar a los desarrolladores las deficiencias de cosas como 'clases anónimas' y se pueden traducir a clases Java 6 o Java 7.
Un enfoque reciente para traducir un código fuente Java 8 a Java inferior las versiones se llaman RetroLambda . Esta biblioteca hace ejecución de desarrolladores Código Java 8 con expresiones lambda en Java 7 o incluso inferior. Desafortunadamente, las características de Java 8 que no sean expresiones lambda no son apoyado por RetroLambda por ahora, pero el concepto de expresiones lambda es el salto más grande en la plataforma Java 8 y es una gran herramienta para Desarrolladores de Android de todos modos.
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 compilaciones basadas en Gradle se implementen en Java o Android Proyecto. Sin embargo, el desarrollador solo menciona la integración de este plugin en el entorno de Android Studio. Los detalles se pueden encontrar en su Página de GitHub:
Https://github.com/evant/gradle-retrolambda
Usando estas infraestructuras dentro de un desarrollo basado en Eclipse el medio ambiente no puede ser abordado directamente pero es factible y lo será demostrado a lo largo de esta guía.
Preparación
Esta guía asume 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 versión 23.0.2 de ADT reciente parece tener problemas como la creación de carpetas de diseño. Los detalles sobre este problema se pueden encontrar en la siguiente enlace:
Http://code.google.com/p/android/issues/detail?id=72591
Los pasos de esta guía se darán para una máquina de desarrollo Windows 8.1, 64-bit pero se pueden adaptar fácilmente a otras plataformas. El nuevo sistema de construcción Gradle
se utilizará para los procesos de construcció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. Se deben seguir los pasos que se indican a continuación para instalar
- Vaya a la página de vista previa de acceso anticipado de 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
- Ir a la página de la última versión 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
- Añadir JDK 8 carpeta de inicio y carpeta JDK 8
bin
a su variable%PATH%
- Crear una nueva variable de entorno
JAVA_HOME
con el valor de la ruta de acceso de la carpeta de inicio JDK 8 - Crear una nueva variable de entorno
JAVA8_HOME
de nuevo con el valor de la ruta de acceso de la carpeta de inicio JDK 8 - Crear una nueva variable de entorno
JAVA7_HOME
con el valor de la ruta de acceso de la carpeta de inicio JDK 7 - Abra una ventana de terminal y ejecute el comando
java -version
y verifique que Java 8 esté funcionando - Corre
javac -version
comando en la misma ventana y verificar que el compilador Java JDK 8 también está en funcionamiento
Ahora, ADT-22.6.2 debe descargarse 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, por ejemplo,
D:\adt
- Defina una nueva variable de entorno llamada
ANDROID_HOME
con el valor de la ruta de acceso de su carpeta de instalación de ADT, p. ej.D:\adt\sdk
- Agregue sus carpetas
Andoid SDK Platform Tools
yAndoid SDK Tools
, por ejemplo,D:\adt\sdk\tools
yD:\adt\sdk\platform-tools
, a su variable%PATH%
- Cree un acceso directo al IDE de Eclipse 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
yAndroid Support Library
solamente. Desmarque todo lo demás e instale estos dos paquetes.
Si todo va bien, ADT estará listo y funcionando.
La instalación de las siguientes herramientas también es muy recomendable:
Eclipse Kepler Java 8 Support: Hace que Eclipse reconozca las nuevas extensiones de sintaxis de Java 8 y te hace deshacerte de los molestos
red dots
en tu editor de código Java. Puede ser instalado a través deHelp -> Install New Software
en Eclipse. Introduzca http://download.eclipse.org/eclipse/updates/4.3-P-builds / en el campoWork with
y continuar instálalo.Nodeclipse / Enide Gradle: Se utiliza principalmente para resaltar palabras clave de lenguaje Groovy. Groovy se utiliza como el DSL para los scripts de compilación de Gradle. Este plugin se puede instalar a través de
Eclipse Marketplace
. Sin embargo, Eclipse dentro de ADT-22.6.2 no viene junto conEclipse Marketplace Client
. Por lo tanto, primero tendrá que instalarEclipse Marketplace Client
mediante la herramientaInstall New Software
en Eclipse. Introduzca http//: download.eclipse.org/mpc/kepler/ en el campoWork with
y continúe instalándolo. Después de instalarEclipse Marketplace Client
, puede buscarNodeclipse/Enide Gradle
en elEclipse Marketplace Client
e instalarlo.-
Genymotion Virtual Device: Es un gran reemplazo del predeterminado
Android Virtual Device
que viene junto con ADT. AVD es molesto y engorroso y sigue estrellándose sin razón. Genymotion te hace preparar VD de Android usandoCyanogenMod
imágenes que son ejecutadas por Oracle VirtualBox. Su licencia de usuario único es gratuita y se puede descargar desde http://www.genymotion.com . Solo un login es requerido 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,
Podría considerarse como un dispositivo Android completamente desarrollado que se ejecuta en un ordenador personal basado en x86 o x64. Con el fin de utilizar servicios de Google como Google PlayStore
en este dispositivo virtual, una imagen gapps
para el La versión de Android que utiliza debe ser flasheada en el dispositivo. Una imagen adecuada gapps
para el dispositivo puede descargarse 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 el propio SDK de Android, pero se recomienda encarecidamente su instalación por separado. La instalación de la misma podría llevarse a cabo siguiendo estos pasos:
Ir al sitio web de Gradle: http://www.gradle.org/
Haga clic
Downloads
- En
Previous Releases
elija la versión 1.10 y descargue gradle-1.10-all.zip o gradle-1.10-bin.zip - Descomprimir su contenido en una carpeta, por ejemplo,
D:\adt\gradle
- Define una nueva variable de entorno llamada
GRADLE_HOME
con el valor de la ruta de acceso de tu carpeta de instalación de Gradle, por ejemplo,D:\adt\gradle
- Agrega tu carpeta de binarios de Gradle, por ejemplo,
D:\adt\gradle\bin
, a tu variable%PATH%
- Abrir a ventana de terminal y ejecute el comando
gradle -v
y verifique que esté funcionando Si ha llegado a este punto con éxito, significa que está listo para crear su primera aplicación para Android utilizando 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 se indican a continuación para obtener una idea sobre el uso de expresiones lambda en Android Developer Herramientas:
- Ejecute Eclipse IDE y cree una nueva aplicación para Android seleccionando
File -> New -> Other -> Android -> Android Application Project
- Rellene el formulario que aparece como se muestra a continuación:
- Simplemente haga clic en el botón
Next
en los siguientes formularios y haga clic en el botónFinish
en el último. Espere hasta que ADT termine de cargar el proyecto - Haga clic con el botón derecho en el proyecto y seleccione
New -> Folder
y nómbrelobuilders
- Haga clic con el botón derecho en la carpeta
gen (Generated Java Files)
y elimínela. Gradle generará los mismos archivos para nosotros pronto y los agregaremos a la carpeta projects build path. The
gen ' creada por el constructor Ant predeterminado ya no es necesario y los artefactos bajo esa carpeta serán obsoletos -
Cree los siguientes archivos por lotes en la carpeta
builders
:- gradle_build.cmd
- gradle_post_build.cmd
- gradle_clean.cmd
-
Rellene estos archivos por lotes, como sigue:
Gradle_build.cmd:
Gradle_post_build.cmd:
Gradle_clean.cmd:
- Deseleccionar
Project -> Build Automatically
opción de menú - Haga clic derecho en el proyecto y seleccione
Properties -> Builders
y anule la selección de todos los constructores predeterminados proporcionados por ADT - Haga clic en el botón
New
en la misma ventana y seleccioneProgram
y haga clicOK
- Aparecerá una nueva ventana de configuración del constructor. Rellene sus pestañas de la siguiente manera:
Main
Pestaña de la configuración del nuevo Constructor
Refresh
Pestaña de la configuración del nuevo Constructor
Environment
Pestaña de la configuración del nuevo Constructor
Build Options
Pestaña del nuevo Constructor Configuración
- Crea el segundo constructor llamado
Gradle_Post_Build
que usagradle_post_build.cmd
como su programa. Todas las demás configuraciones de este constructor deben ser exactamente las mismas que las del constructor creado anteriormente. Este constructor será responsable de copiar los artefactos creados por el proceso de compilación en la carpetabin
. - Crea el tercer constructor llamado
Gradle_Cleaner
que usagradle_clean.cmd
como su programa. SoloRun the builder
en la pestaña final se debe establecer comoDuring a Clean
. Todo otras configuraciones de este constructor deben ser exactamente las mismas con el primer constructor. Este constructor será responsable de limpiar los artefactos creados por el proceso de construcción como su nombre indica.
Nuevos constructores del Proyecto HelloLambda
- Haga clic derecho en el proyecto y seleccione
Export
- Seleccione
Android -> Generate Gradle Build Files
y haga clic enNext
- Seleccione el proyecto en la siguiente ventana y haga clic en
Finish
- Vaya a su carpeta raíz del proyecto y eliminar los archivos
gradlew
ygradlew.bat
. También eliminargradle
carpeta - Vuelva a Eclipse y seleccione la opción de menú
Project -> Clean
. Rellene el formulario que aparece de la siguiente manera:
Clean Project
Ventana
- Haga clic en
OK
y espere hasta que se complete el proceso de limpieza - Agregue el fragmento de código Java que se muestra a continuación justo después de la llamada a la función
setContentView
en suMainActivity
clase:
- Cambie el comienzo del archivo
build.gradle
hasta la secciónsourceCompatibility
de la siguiente manera:
- Haga clic con el botón derecho en el proyecto y seleccione la opción
Properties -> Java Compiler
y establezca todos los niveles de cumplimiento en Java 8. Esto hará que Eclipse reconozca nuevas construcciones de Java 8 como expresiones lambda. - Haga clic en
No
en la ventana de notificación - haga clic Derecho en el proyecto y seleccione
Build project
. Eclipse comenzará construyendo el proyecto.
Proceso de construcción
-
Haga clic derecho en el proyecto y vaya a
Properties -> Java Build Path
. Agregue las siguientes carpetas a la ruta de compilación (también se muestra en la imagen de abajo):build\source\buildConfig\debug
build\source\r\debug
Eclipse ahora podrá reconocer los archivos R.java
y buildConfig.java
y no mostrará ningún red dots
que denote errores relacionados con los archivos fuente de la proyecto.
- Cree un nuevo
Run Configuration
para su plataforma de destino Android haciendo clic derecho en el proyecto y luego seleccionandoRun As -> Run Configurations
. Por ejemplo, esta aplicación de demostración se ve como se muestra a continuación en el Genymotion VD:
Aplicación HelloLambda
Puede observar en la ventana LogCat
que el fragmento de código con una expresión lambda simple funciona correctamente
Fuente: Usando Java 8 Lambda Expresiones en Android Developer Tools
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-08 12:45:57
Siga este enlace para nuevas actualizaciones. Utilice las características del lenguaje Java 8
Antigua respuesta
A partir de Vista previa de Android N lanzamiento soporte Android limitado características de Java 8 ver Características del lenguaje Java 8
Para comenzar a usar estas funciones, debe descargar y configurar Android Studio 2.1 y Android N Preview SDK, que incluye el requerido Jack cadena de herramientas y actualizado Complemento de Android para Gradle. Si aún no ha instalado Android N Preview SDK, consulte Configurar para desarrollar para Android N.
Características y API compatibles del lenguaje Java 8
Actualmente, Android no admite todas las funciones del lenguaje Java 8. Sin embargo, las siguientes funciones ahora están disponibles al desarrollar aplicaciones objetivo de la vista previa de Android N:
Métodos de interfaz por defecto y estáticos
Lambda expresiones (también disponibles en el nivel de API 23 y versiones anteriores)
Referencias de métodos (también disponible en API nivel 23 y versiones anteriores)
Hay algunas características adicionales de Java 8 que son compatibles con Android, puede ver detalles completos de Características del lenguaje Java 8
Actualización
Nota: Android N basa su implementación de expresiones lambda en clases anónimas. Este enfoque les permite estar al revés compatible y ejecutable en versiones anteriores de Android. Probar expresiones lambda en versiones anteriores, recuerde ir a su construir.gradle, y establece compileSdkVersion y targetSdkVersion a 23 o menos.
Actualización 2
Ahora Android studio 3.0 es compatible con la versión estable Las bibliotecas Java 8 y las características del lenguaje Java 8 (sin el compilador Jack).
Android utiliza un Java que se ramifica fuera de Java 6.
A partir de la versión 19 del SDK de Android, puedes usar las características de Java 7 haciendo esto. No hay soporte completo para Java 8 (todavía).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-21 23:40:56
Sí, Android es compatible con Java 8 Ahora (24.1.17)
Ahora es posible
Pero necesitará que la rom de su dispositivo se ejecute en java 1.8 y habilite "jackOptions" para ejecutarla. Jack es el nombre del nuevo compilador de Android que ejecuta Java 8
Https://developer.android.com/guide/platform/j8-jack.html
Añade 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 todavía no acepta la sintaxis de java 8 después de comprobar, y no se puede elegir un compilador de Android Studio ahora. Sin embargo, puede usar el plugin scala si necesita un mecanismo de programación funcional en su cliente Android.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-24 18:37:10
Android es compatible oficialmente con Java 8 a partir de Android N.
Los anuncios de características están aquí , el anuncio del lenguaje Java 8 es:
Compatibilidad mejorada con el lenguaje Java 8 - Estamos muy contentos de traer las características del lenguaje Java 8 a Android. Con el compilador Jack de Android, puedes ahora utilice muchas características populares del lenguaje Java 8, incluyendo lambdas y más, en las versiones de Android tan atrás como Gingerbread. Novedad ayuda a reducir el código repetitivo. Para ejemplo, lambdas puede reemplazar clases internas anónimas al proporcionar oyentes de eventos. Algunos Java 8 características del idioma like como métodos predeterminados y estáticos, flujos y interfaces funcionales are también están disponibles en N y superiores. Con Jack, estamos deseando seguir el lenguaje Java más de cerca manteniendo la compatibilidad con versiones anteriores.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-10 05:09:54
Native Java 8 llega a Android! ¡Por fin!
Elimine el plugin Retrolambda y el bloque retrolambda de cada módulo construir.archivo gradle:
Para deshabilitar Jack y cambiar a la cadena de herramientas predeterminada, simplemente elimine jackOptions bloquea desde la compilación de tu módulo.gradle file
Para comenzar a usar las funciones compatibles del lenguaje Java 8, 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 ahora son compatible de forma nativa con Android:
- Expresiones Lambda
- Referencias del método
- Escriba anotaciones (actualmente la información de anotaciones de tipo no está disponible en tiempo de ejecución, sino solo en tiempo de compilación);
- Repitiendo anotaciones
- Métodos de interfaz predeterminados y estáticos (en el nivel de API 24 o superior, no admite ejecución instantánea tho);
También desde el nivel de API min 24, las siguientes API de Java 8 son disponible:
- java.útil.stream
- java.útil.función
- java.lang.Interfaz funcional
- java.lang.anotación.Repetible
- java.lang.reflejar.Elemento anotado.getAnnotationsByType (Class)
- java.lang.reflejar.Método.IsDefault ()
Agregue estas líneas a la compilación de su módulo de aplicación.gradle para informar al proyecto del nivel de idioma:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Deshabilite el soporte para las características del lenguaje Java 8 agregando lo siguiente a tu gradle.propiedades archivo:
android.enableDesugar=false
¡Has terminado! ¡Ahora puedes usar java8 nativo!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-27 04:03:16
Podemos Usar Java 8 usando:
-
En construcción.gradle (Project: myProject) añadir lo siguiente
classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
-
En construcción.gradle (Module: MyModule) añadir lo siguiente
apply plugin: 'me.tatarka.retrolambda' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-03 12:31:21
Android Studio 3.0 comenzó a proporcionar soporte integrado para algunas de las características del lenguaje Java 8, que son:
- Expresiones Lambda
- Referencias del método
- Escriba anotaciones (la información está disponible en tiempo de compilación, pero no en tiempo de ejecución)
- Repitiendo anotaciones
- Métodos de interfaz por defecto y estáticos
También a partir del nivel de API 24, las siguientes API de Java 8 son disponible:
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, el soporte de try-with-resources
se extendió a todos los niveles de API de Android.
Se promete agregar más características de Java 8 en el futuro.
Para comenzar a usar las características del lenguaje Java 8 compatibles, actualice el plugin a 3.0.0-alpha1 (o superior) y añadir lo siguiente a su construcción del módulo.gradle archivo:
android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
Para más detalles visita:
https://developer.android.com/studio/write/java8-support.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-05 10:52:10
Cuando hice esta pregunta hace casi 2 años la respuesta realmente era "oficialmente" no, pero como señaló la respuesta de ekcr1, puede obtener 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 "preview", así que nunca seguí este camino.
Hoy, creo que la respuesta "oficial" sigue siendo no, y aunque retrolamba todavía parece un buen camino a seguir, hay otra opción para aquellos dispuesto a ir por una ruta algo "no oficial" puede tomar, a saber, Kotlin.
Hoy Kotlin alcanzó la 1.0.0. Para aquellos que no están familiarizados con Kotlin, se puede encontrar más información en su sitio web que se encuentra aquí:
O mira este video de utube de una charla dada por Jake Wharton
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-16 00:47:23
Últimas noticias:
Google anuncia que con Android N y Android Studio 2.1+, la plataforma será compatible con Java 8. También se lanzó la versión estable de studio 2.1.
Por fin podemos usar expresiones lambda. No más filtro de lista en for loop. Horeeey.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-27 07:56:38
Agregue esta compilación de configuración.gradle y sincronización gradle:
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
// or
//sourceCompatibility 1.8
//targetCompatibility 1.8
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-15 09:59:36
Google acaba de anunciar que Java 8 será compatible de forma nativa con Android y que la cadena de herramientas Jack dejará de existir:
Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y desaprovechar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y complementos existentes que dependen del formato de archivo de clase Java deberían continuar funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de compilación Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y queríamos compartir esta decisión temprano con ustedes.
Más información aquí: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-15 07:38:24
Sí. Vamos a utilizar Java 8 pronto!
Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y desaprovechar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y complementos existentes que dependen del formato de archivo de clase Java deberían continuar funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de compilación Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y quería compartir esta decisión temprano con usted.
Https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-16 06:18:33
Escribí una respuesta similara una pregunta similar en Stack Overflow, pero aquí hay parte de esa respuesta.
Android Studio 2.1:
La nueva versión de Android Studio (2.1) es compatible con las funciones de Java 8. Aquí hay un extracto de la Android Developers blogspot post :
... La versión de Android Studio 2.1 incluye soporte para el nuevo compilador de jack y soporte para Java 8.
...
Utilizar Características del lenguaje Java 8 al desarrollar con la vista previa del desarrollador N, debe usar el compilador Jack. El Asistente para Nuevo Proyecto [Archivo→ Nuevo→ Proyecto] genera las configuraciones correctas para los proyectos dirigidos a 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 da más detalles sobre la compatibilidad de Android Studio ; es estados:
Si quieres usar lambdas, una de las principales características de Java 8 en Android, puedes usar gradle-retrolamba
Si desea saber más sobre el uso gradle-retrolambda
, esta respuesta da muchos detalles sobre cómo hacerlo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:10
Pensé que publicaría una respuesta actualizada para aquellos que buscan algo un poco más actual.
Actualmente Android y Android Studio son compatibles con un subconjunto de características de Java 8. De acuerdo con la documentación de Android ubicada en su sitio web, Google dice:
El soporte para las características del lenguaje Java 8 requiere un nuevo compilador llamado Jack. Jack solo es compatible con Android Studio 2.1 y versiones posteriores. Entonces, si desea usar las características del lenguaje Java 8, debe usa Android Studio 2.1 para crear tu aplicación.
Si ya tienes instalado Android Studio, asegúrate de actualizar a la última versión haciendo clic en Ayuda > Buscar actualizaciones (en Mac, Android Studio > Buscar actualizaciones). Si aún no tienes el IDE instalado en tu estación de trabajo, descarga Android Studio aquí.
Características y API compatibles del lenguaje Java 8
Android no admite todas las características del lenguaje Java 8. Sin embargo, las siguientes características están disponibles al desarrollar aplicaciones dirigidas a Android 7.0 (nivel de API 24):
- Métodos de interfaz predeterminados y estáticos Expresiones Lambda (también disponibles en el nivel de API 23 y versiones anteriores)
- Anotaciones repetibles
- Referencias de métodos (también disponibles en el nivel de API 23 y versiones anteriores)
- Escriba anotaciones (también disponible en el nivel de API 23 y versiones anteriores)
Además, las siguientes API del lenguaje Java 8 también están disponibles:
API relacionadas con la reflexión y el lenguaje:
- java.lang.Interfaz funcional
- java.lang.anotación.Repetible
- java.lang.reflejar.Método.IsDefault () y API de reflexión asociadas con anotaciones repetibles, como Elemento anotado.getAnnotationsByType (Class)
Api de utilidad:
- java.útil.función
- java.útil.corriente
Para usar las nuevas características del lenguaje Java 8, debe también use la cadena de herramientas Jack . Esta nueva cadena de herramientas de Android compila las fuentes del lenguaje Java en el código DEX legible para Android, tiene su propio.jack library, y proporciona la mayoría de las características de la cadena de herramientas como parte de una sola herramienta: reempaquetado, reducción, ofuscación y multidex.
Aquí hay una comparación de las dos cadenas de herramientas utilizadas para construir archivos Android DEX:
Legacy javac toolchain: javac (.java → .class) → dx (.class → .dex) New Jack toolchain: Jack (.java → .jack → .dex)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-13 22:12:14
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 arriba ya han respondido, desde hace algún tiempo, la respuesta se convirtió en Sí . Nunca he actualizado la respuesta aceptada porque era la respuesta correcta en ese momento. (No estoy seguro de cuál es la política de desbordamiento de pila en eso)
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 es también es un lenguaje oficial para el desarrollo de Android.
No he encontrado un comunicado de prensa oficial, pero sí he visto algunos de los videos de Google I/O donde se anunció. Aquí hay un enlace a un blog post del equipo Kotlin sobre el anuncio.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-18 11:13:26
Agregar lo siguiente solucionó el problema para mí (Android studio 2.3.2):
Construir.gradle (Proyecto)
buildscript {
repositories {
...
jcenter()
}
dependencies {
...
classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
...
}
}
Construir.gradle (Módulo: app)
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
...
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-02 17:18:35
Ahora se admite un subconjunto de Java 8 en Android Studio. Simplemente haga los ajustes de compatibilidad de Origen y Destino desde la ventana de abajo:
Archivo Structure > Estructura del proyecto
Más información en el siguiente enlace.
Https://developer.android.com/studio/write/java8-support.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-03 21:47:44
La forma más fácil
Puede habilitar el soporte de Java 1.8 para Android Project.
-
Estructura abierta del Proyecto
Ya sea presionando Ctrl + Shift + Alt + S
O
File > Project Structure
Actualizar la Compatibilidad de Origen y la Compatibilidad de destino a 1.8 en el cuadro de diálogo Estructura del proyecto como se muestra (haga clic en Archivo > Proyecto Estructura).
Nota: La compatibilidad con Java 1.8 se puede habilitar para Android Studio 3.0.0 o superior. Véase Documentación para más información.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-12 07:59:12