¿Existen diferencias importantes entre la programación en Android y Java simple?

Sí. Hablaré como alguien que aprendió Java mucho antes de ingresar a Android:

  • El sistema GUI es completamente diferente de lo que proporciona el JDK.
  • Las mejores prácticas son casi completamente diferentes para multihilo y concurrencia. Las aplicaciones de Android requieren una toma de decisiones especial y un enfoque especial que es ajeno a los programas normales de Java. Mire la serie de videos Patrones de rendimiento de Android de Google en YouTube para manejar esto.
  • La vida útil de un proceso JVM es drásticamente diferente . Las aplicaciones Java generalmente esperan estar activas hasta que se cierren. Android puede matar su aplicación prácticamente en cualquier momento si no está en primer plano, y el desarrollador debe esperar que esto suceda.
  • Casi todo de J2EE no está disponible.
  • Tiene un tamaño de almacenamiento dinámico muy limitado en la mayoría de los dispositivos Android.
  • La programación de aplicaciones conectadas de alta calidad para Android requiere suponer que la red puede no estar disponible, o puede ser increíblemente lenta, e incluso puede desaparecer en cualquier momento, lo cual es atípico para la mayoría de los programadores de Java.
  • Los desarrolladores de Android deben estar muy preocupados por minimizar el tamaño de las dependencias de la biblioteca, lo cual no es una preocupación común para la mayoría de las aplicaciones Java.
  • Hay una forma completamente diferente de implementar la localización en Android.
  • Un dispositivo Android en sí puede cambiar las “configuraciones” en cualquier momento, la más común es la orientación de la pantalla. Reaccionar a estos cambios correctamente requiere atención especial.
  • Los dispositivos Android tienen una gran variedad de pantallas de diferentes tamaños físicos, dimensiones de píxeles y tamaños de píxeles (densidad). Los desarrolladores tienen que hacer todo lo posible para observar estas diferencias.
  • Las API de Android evolucionan rápidamente con cada nueva versión de Android, y los desarrolladores tienen que mantenerse al día con eso. La tecnología Core Java itera extremadamente lentamente en comparación

Este artículo compara las interfaces de programación de aplicaciones (API) y las máquinas virtuales (VM) del lenguaje de programación Java y el sistema operativo Android.

Si bien la mayoría de las aplicaciones de Android están escritas en un lenguaje similar a Java, existen algunas diferencias entre la API de Java y la API de Android, y Android no ejecuta el código de bytes de Java por una máquina virtual Java (JVM) tradicional, sino por una máquina virtual Dalvik en versiones anteriores de Android y Android Runtime (ART) en versiones más nuevas, que compilan el mismo código que Dalvik ejecuta en ejecutables de formato ejecutable y enlazable (ELF) que contienen código de máquina.

El código de bytes de Java en archivos Java Archive (JAR) no es ejecutado por dispositivos Android. En cambio, las clases Java se compilan en un formato de código de bytes patentado y se ejecutan en Dalvik (o una versión compilada de las mismas con ART más reciente), una máquina virtual especializada (VM) diseñada para Android. A diferencia de las máquinas virtuales Java, que son máquinas de pila (arquitectura basada en pila), la máquina virtual Dalvik es una máquina de registro (arquitectura basada en registro).

Dalvik tiene algunos rasgos que lo diferencian de otras máquinas virtuales estándar: [1]

La VM fue diseñada para usar menos espacio.

El grupo constante se ha modificado para usar solo índices de 32 bits para simplificar el intérprete.

El código de bytes estándar de Java ejecuta instrucciones de pila de 8 bits. Las variables locales deben copiarse ao desde la pila de operandos mediante instrucciones separadas. En cambio, Dalvik usa su propio conjunto de instrucciones de 16 bits que funciona directamente en variables locales. La variable local es comúnmente elegida por un campo de registro virtual de 4 bits.

Debido a que el código de bytes cargado por la máquina virtual Dalvik no es código de bytes Java y debido a la forma en que Dalvik carga las clases, es imposible cargar paquetes de biblioteca como archivos JJAR. Se debe usar un procedimiento diferente para cargar las bibliotecas de Android, en el que el contenido del archivo dex subyacente se debe copiar en el área de almacenamiento interno privado de la aplicación antes de cargarlo. [2]

Como es el caso del sistema de clase Java SE, la clase de sistema Android permite recuperar las propiedades del sistema. Sin embargo, algunas propiedades obligatorias definidas con la máquina virtual Java no tienen significado o tienen un significado diferente en Android. Por ejemplo:

La propiedad .version de Java devuelve 0 porque no se usa en Android.

Java .specification.version invariablemente devuelve 0.9 independientemente de la versión de Android utilizada.

Java .class.version invariablemente devuelve 50 independientemente de la versión de Android utilizada.

user.dir tiene un significado diferente en Android.

user.home y las propiedades no existen en Android.

Biblioteca de clases [editar]

Las versiones actuales de Android usan el último lenguaje Java y sus bibliotecas (pero no marcos de interfaz gráfica de usuario (GUI) completos), no la implementación Apache Harmony Java, que usaban las versiones anteriores. El código fuente de Java 8 que funciona en la última versión de Android, puede funcionar en versiones anteriores de Android.

Paquete Java.lang [editar]

Por defecto, el flujo de salida predeterminado System.out y System.err no genera nada, [3] y se alienta a los desarrolladores a usar la clase Log, que registra las cadenas en la herramienta LogCat. [4] Esto ha cambiado al menos desde HoneyComb, y ahora también salen a la consola de registro.

Gráficos y biblioteca de widgets [editar]

Android no utiliza el kit de herramientas de la ventana abstracta ni la biblioteca Swing. Las interfaces de usuario se crean utilizando objetos View. Android usa un marco similar a Swing, basado en Vistas en lugar de JComponents. Sin embargo, los widgets de Android no son JavaBeans: el contexto de la aplicación de Android se debe proporcionar al widget en la creación.

Mirar y sentir [editar]

La biblioteca de widgets de Android no admite una arquitectura de aspecto y conexión conectables. La apariencia de los widgets de Android debe estar integrada en los widgets. Sin embargo, existe una capacidad limitada para establecer estilos y temas para una aplicación. [5]

Administrador de diseño [editar]

A diferencia de Swing, donde los administradores de diseño se pueden aplicar a cualquier widget de contenedor, el comportamiento del diseño de Android está codificado en los contenedores. [6]

Paquete Java.beans [editar]

Android incluye solo un pequeño subconjunto del paquete java.beans (PropertyChangeEvent y clases relacionadas).

Ver también [editar]

Android (sistema operativo)

Java (lenguaje de programación)

More Interesting

¿Hacer una aplicación de Android significa tener una startup?

¿Es posible desarrollar una aplicación de Android como WhatsApp en PHP?

¿Alguien se ha enriquecido con solo desarrollar aplicaciones de Android?

¿Originalmente Android pretendía ser una interfaz de pantalla táctil?

¿Qué MacBook comprar en 2017 para el desarrollo de Android?

¿Hay alguna forma de convertir un código de Java a una aplicación de Android sin reescribirlo?

No soy un programador profesional, conozco poco PHP, HTML, Javascript, CSS. Quiero aprender el desarrollo de aplicaciones de Android. ¿Cuánto tiempo llevará aprenderlo?

¿Cómo ganan dinero las aplicaciones gratuitas de Android en Google Play Store?

¿Dónde se almacena la base de datos SQLite en un dispositivo Android?

¿Cuáles son algunas aplicaciones increíbles que puedo instalar en mi teléfono Android?

¿Cómo las aplicaciones como MusiXmatch y / o Shazam logran reproducir letras con tanta precisión?

¿Cuál es la mejor manera de mejorar las descargas de una aplicación de Android con un presupuesto de $ 100?

Soy un desarrollador de Android. ¿Qué lenguaje de programación debo aprender para asegurar un mejor crecimiento?

¿Cuál es el costo inicial para crear una aplicación de Android? La aplicación es un lugar para vender y comprar artículos, registrar usuarios y registrar vendedores, y necesitaría un panel para administrar todo esto.

¿Cuál es la mejor API y protocolo que se utilizará para desarrollar una aplicación de chat de Android que permita la transmisión de audio junto con las opciones de chat?