James Gosling

“Java debe ser un territorio neutral, la suiza de la tecnología informática.”

Michael Feldman

“Java es, en muchos sentidos, c++"

Andy Rubin

“Tendré un pie en el listo del móvil y un pie en el futuro, y puedo saltar atrás cuando el siguiente ecosistema emerges. Es un bonito lugar para ser.”

James Gosling

“La imitación es la forma más sincera de adulación —muchas gracias.”

Eagleson's Law

“Cualquier código tuyo que no hayas mirado en los últimos seis meses o más es como si lo hubiese escrito otro”

1

APLICACIONES NATIVAS

Las aplicaciones móviles nativas son las que se desarrollan específicamente para cada sistema operativo, iOS, Android o Windows Phone, adaptando a cada uno el lenguaje con el que se desarrolla: lenguaje Objective-C para iOS, Java para Android, y .Net para Windows Phone.

Es decir, hay que realizar el desarrollo de aplicaciones móviles para cada plataforma. 

Este tipo de aplicaciones se adapta al 100% con las funcionalidades y características del dispositivo obteniendo así una mejor experiencia de uso. Sin embargo, el desarrollo de una aplicación nativo comporta un mayor coste, puesto que si se desea realizar una aplicación multiplataforma se ha de realizar una nueva versión para cada sistema operativo, multiplicando así los costes de desarrollo. 

Algunos ejemplos de aplicación nativa, serían Whatsapp o Facebook. 

Entre las ventajas de este tipo de aplicaciones destacan que aprovechan las funcionalidades del dispositivo y que pueden funcionar sin conexión a Internet.

Además, están presentes en Apple Store y en Google Play, por lo que, hablando en términos de marketing, ganan en visibilidad.

Sin embargo, el desarrollo y las actualizaciones de estas aplicaciones son costosos.

Un ejemplo de app nativa es Whatsapp.

OPEN HANDSET ALLIANCE


La Open Handset Alliance (OHA) es una alianza comercial de 84 compañías que se dedica a desarrollar estándares abiertos para dispositivos móviles. Algunos de sus miembros son Google, HTC, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung, LG, T-Mobile, Nvidia y Wind River Systems.


La OHA se fundó el 5 de noviembre de 2007, liderada por Google con otros 34 miembros entre los que se incluían fabricantes de dispositivos móviles, desarrolladores de aplicaciones, algunos operadores de comunicaciones y fabricantes de chips.

Productos
Al mismo tiempo que se anunciaba la formación de la Open Handset Alliance el 5 de noviembre de 2007, la OHA presentó Android, una plataforma de código libre para teléfonos móviles basada en el núcleo operativo Linux. Una beta del SDK fue lanzada para desarrolladores el 12 de noviembre de 2007. Basado en una licencia de código libre, compite contra otras plataformas móviles propietarias de Apple, Microsoft, Nokia, Palm, BlackBerry (compañía) y Bada.

El primer teléfono comercialmente disponible con Android fue el T-Mobile G1 (también conocido como HTC Dream). Fue aprobado por la FCC el 18 de agosto de 2008, y salió a la venta el 22 de octubre

WEBKIT

WebKit es una plataforma para aplicaciones que funciona como base para el navegador web Safari, Opera, hasta que cambio a Blink, Epiphany, Maxthon, Midori, QupZilla entre otros. Está basado originalmente en el motor de renderizado KHTML del navegador web del proyecto KDE, Konqueror. WebKit logra 100/100 en la prueba Acid3 desde el 26 de marzo de 2008. Desde junio de 2005 es software libre bajo las licencias GNU GPL, GNU LGPL y BSD.

La API de WebKit está desarrollada en Objective-C y posibilita interactuar con un servidor web para recuperar y renderizar páginas web, descargar archivos, y administrar plugins.
Webkit incluye dos frameworks de más bajo nivel: WebCore, un analizador sintáctico y motor de renderizado de HTML basado en KHTML, y JavaScriptCore, un intérprete de JavaScript basado en KJS.
Con los lanzamientos pre-alfa se está incluyendo un depurador de Javascript llamado Drosera.

Historia

El código que se convertiría en WebKit se inició en 1998 como parte de un proyecto KDE de renderizado HTML denominado KHTML y del motor JavaScript de KDE (KJS). El nombre del proyecto y 'WebKit' fueron creados en 2002, cuando Apple Inc. creó un «fork» (bifurcación) de KHTML y KJS. Los desarrolladores de Apple explicaron en un correo electrónico a los desarrolladores de KDE que estos motores permiten un desarrollo más fácil que otras tecnologías por el hecho de ser pequeños (menos de 140.000 líneas de código), diseñados limpiamente y compatibles con las normas. KHTML y KJS fueron portados a Mac OS X con la ayuda de una biblioteca adaptada y renombrada como WebCore y JavaScriptCore. JavaScriptCore se anunció en un correo electrónico a una lista de correo de KDE en junio de 2002, junto con la primera versión de los cambios de Apple.

¿QUÉ ES UNA ACTIVITY?

El término Activity (actividad) es de los primeros que debemos entender a la perfección en Android, ya que es de lo más básico y se usa muchísimo en las aplicaciones.
Podemos decir que todas las pantallas de una aplicación son una “activity”. Más adelante vamos a ver que existen algunas variaciones, pero por ahora digamos que todas lo son. Es decir, que si una aplicación tiene cinco pantallas, tiene 5 “Actividades” o activities.

Las activities están conformadas por dos partes: la parte lógica y la parte gráfica.
La parte lógica es una archivo .java que es la clase que se crea para poder manipular, interactuar y colocar el código de esa actividad.
La parte gráfica es un XML que tiene todos los elementos que estamos viendo de una pantalla declarados con etiquetas parecidas a las del HTML, es decir, que el diseño de una aplicación en Android se hace similar a una página web; XML es un primo de HTML.

Resumiendo, una actividad está conformada por la parte lógica (un archivo Java) y la parte gráfica (un archivo XML).

Adentrando más en el tema, ya sabemos que tenemos un archivo .java, esto quiere decir que tenemos una clase principal, al ser una actividad extiende de la clase Activity (por eso el nombre) que nos proporciona Android para crear actividades con sus métodos asignados.

ACERCA DE LAS APP.


Desde la perspectiva de un usuario, puede ser difícil percibir la diferencia entre un sitio web y una aplicación web. Según el Diccionario Oxford en línea, nos enteramos que una aplicación es "un programa o conjunto de programas para ayudar al usuario de un ordenador para procesar una tarea específica".
Una aplicación (también llamada App) es simplemente un programa informático creado para llevar a cabo o facilitar una tarea en un dispositivo informático. Cabe destacar que aunque todas las aplicaciones son programas, no todos los programas son aplicaciones. Existe multitud de software en el mercado, pero sólo se denomina así a aquel que ha sido creado con un fin determinado, para realizar tareas concretas. No se consideraría una aplicación, por ejemplo, un sistema operativo, ni una suite, pues su propósito es general.

USOS Y CLASIFICACIÓN DE LAS APP.
Las aplicaciones nacen de alguna necesidad concreta de los usuarios, y se usan para facilitar o permitir la ejecución de ciertas tareas en las que un analista o un programador han detectado una cierta necesidad. Pero las aplicaciones también pueden responder a necesidades lúdicas, además de laborales (todos los juegos, por ejemplo, son considerados aplicaciones). Se suele decir que para cada problema hay una solución, y en informática, para cada problema hay una aplicación.

Naturalmente, el campo de las aplicaciones es tan extenso, y las funciones tan dispares, que se han creado numerosas clasificaciones, según varios criterios. Así, por ejemplo, dependiendo del uso que se le vaya a dar, podemos tener aplicaciones profesionales o personales. También podemos hablar de aplicaciones para Windows, Linux, Android, Apple, PC, móvil, según el sistema operativo o la plataforma que vayamos a usar. Según su finalidad, pueden ser de entretenimiento, de negocios, empresariales, de sonido, gráficas, de edición, web, didácticas... e incluso según la rama de las ciencias en el que se usen podemos decir que hay aplicaciones de ingeniería, de telecomunicaciones, matemáticas... y un largo etcétera.



BYTECODE JAVA

El bytecode Java es el tipo de instrucciones que la máquina virtual Java espera recibir, para posteriormente ser compiladas a lenguaje de máquina, mediante un compilador JIT a la hora de su ejecución. Usualmente es el resultado de utilizar un compilador del lenguaje de programación Java (como javac), pero puede ser generado desde otros compiladores.
El bytecode un código intermedio más abstracto que el código máquina. Habitualmente es tratado como un archivo binario que contiene un programa ejecutable similar a un módulo objeto, que es un archivo binario producido por el compilador cuyo contenido es el código objeto o código máquina.
El bytecode recibe su nombre porque usualmente cada código de operación tiene una longitud de un byte, si bien la longitud del código de las instrucciones varía. Cada instrucción tiene un código de operación entre 0 y 255 seguido de parámetros tales como los registros o las direcciones de memoria. Esta sería la descripción de un caso típico, si bien la especificación del bytecode depende ampliamente del lenguaje.


FUNCIONAMIENTO.
Como código intermedio, se trata de una forma de salida utilizada por los implementadores de lenguajes para reducir la dependencia respecto del hardware específico y facilitar la interpretación. Menos frecuentemente se utiliza el bytecode como código intermedio en un compilador. Algunos sistemas, llamados traductores dinámicos o compiladores just-in-time traducen el bytecode a código máquina inmediatamente antes de su ejecución para mejorar la velocidad de ejecución.

Los programas en bytecode suelen ser interpretados por un intérprete de bytecode (en general llamado máquina 
virtual, dado que es análogo a un ordenador). Su ventaja es su portabilidad: el mismo código binario puede ser ejecutado en diferentes plataformas y arquitecturas. Es la misma ventaja que presentan los lenguajes interpretados. Sin embargo, como el bytecode es en general menos abstracto, más compacto y más orientado a la máquina que un programa pensado para su modificación por humanos, su rendimiento suele ser mejor que el de los lenguajes interpretados. A causa de esa mejora en el rendimiento, muchos lenguajes interpretados, de hecho, se compilan para convertirlos en bytecode y después son ejecutados por un intérprete de bytecode. Entre esos lenguajes se encuentran Perl, Gambas, PHP y Python. En el caso de Java se suele trasmitir como bytecode a la máquina receptora, que utiliza un compilador just-in-time para compilar el bytecode en código máquina nativo antes de su ejecución, ahorrando así procesos de interpretación.

PLAY STORE


Google Play Store (anteriormente Android Market) es una plataforma de distribución digital de aplicaciones móviles para los dispositivos con sistema operativo Android, así como una tienda en línea desarrollada y operada por Google. Esta plataforma permite a los usuarios navegar y descargar aplicaciones (desarrolladas mediante Android SDK), juegos, música, libros, revistas y películas. También se pueden adquirir dispositivos móviles como ordenadores Chromebook, teléfonos inteligentes Nexus, Google Chromecast, entre otros.

Las aplicaciones se encuentran disponibles de forma gratuita, así como también con costo. Pueden ser descargadas directamente desde un dispositivo con Android a través de la aplicación móvil Play Store. Es posible también instalar estas aplicaciones directamente y sin necesidad de una computadora, en dispositivos con sistema operativo BlackBerry 10.

En marzo de 2012, con la fusión de Android Market con Google Music, el servicio fue renombrado a Google Play, como resultado de la nueva estrategia de distribución digital de Google. En julio de 2013, se anunció que Google Play había sobrepasado un millón de aplicaciones publicadas y se habían registrado más de 50 mil millones de descargas.


CLASIFICACIÓN DE APLICACIONES.
Google Play, al igual que su competidor App Store tiene sistema de clasificación por edades pero desde el 8 de junio de 2015 las apps son clasificadas por sistemas de clasificación por edades de diferentes regiones y países, siempre y cuando no sean sobrescritas por normas como ESRB o PEGI.

Para todos: contenido sin restricciones de edad (Equivale a 4+ de app store)
Madurez baja: recomendado para mayores de 6 o 7 años (equivale a 9+ de app store)
Madurez media: Recomendado para mayores de 12 años (equivale a 12+ de app store)
Madurez alta: Recomendado para mayores de 17 años (equivale a 17+ de app store)

INTERFAZ.
Google Play tiene un acceso fácil y rápido a sus aplicaciones. Las aplicaciones son creadas por desarrolladores de todo el mundo y posteriormente puntuadas por los usuarios de Android.
El menú tiene las siguientes opciones:

Mostrado: avanza por los iconos de la parte superior para ver las aplicaciones mostradas.
Aplicaciones: examina todas las aplicaciones o busca aplicaciones por categorías.
Juegos: examina todos los juegos o busca juegos por categorías.
Búsqueda: busca aplicaciones en Google Play.
Mis descargas: visualiza las aplicaciones que están instaladas en el dispositivo.

Las categorías de juegos y aplicaciones del menú principal proporcionan submenús para que la búsqueda sea más sencilla. Los usuarios tienen la posibilidad de valorar las aplicaciones mediante un sistema similar a YouTube, con una escala del 1 al 5, también ofrece la posibilidad de poner comentarios sobre la aplicación. La novedad de la nueva versión de Google Play es también la posibilidad de añadir capturas de pantalla de su aplicación.