Cuando Android llegó por primera vez en 2008, era un poco monótono en comparación con iOS en el iPhone / iPad de Apple. Pero, con bastante rapidez, a través de una variedad de ofertas de teléfonos que tocaron la fibra sensible de los consumidores prácticos y conscientes de los precios, así como a medida que los que están conscientes de la moda y los conocedores de la tecnología, el número de usuarios de Android se disparó.
Para muchos, incluido yo mismo, desarrollar para Android es el pasatiempo y negocio más gratificante, sin excepción.
Armar rápidamente un prototipo de una idea, refinarlo y luego decidir ejecutar con él y conectarlo a una aplicación completa, es una experiencia muy emocionante y gratificante. Cualquier programación puede ser divertida, he estado programando toda mi vida, pero crear para Android es de alguna manera extraordinariamente gratificante.
Definir exactamente por qué es así es bastante difícil. Quizás sea el hecho de que la plataforma es gratuita y abierta. Puede distribuir sus aplicaciones sin necesidad de permiso de una gran corporación controladora, nadie puede detenerte. Y al mismo tiempo, tiene mercados masivos bien establecidos y controlados por empresas, como Amazon Appstore y Google Play.
Sin embargo, es más probable que la razón por la que desarrollar para Android proporcione tal sensación es la naturaleza de los propios dispositivos. Son profundamente personales. Se puede desarrollar aplicaciones que interactúan con la vida de las personas, que educan, entretienen, cuentan una historia, y así sucesivamente, y está allí en su bolsillo listo para usar: en el hogar, en el lugar de trabajo o de vacaciones.
Ciertamente puede construir algo más grande para el escritorio, pero sabiendo que miles (o millones) de personas llevan su trabajo en sus bolsillos y compartirlo con amigos es más que un rumor.
El desarrollo de aplicaciones ya no se considera geek, nerd o solitario. De hecho, el desarrollo para Android se considera altamente valioso y los desarrolladores mas exitosos son muy admirados, incluso venerados.
Si todas estas cosas esponjosas y espirituales no significan nada para ti, también está bien; Desarrollar para Android puede ganarte la vida o incluso hacerte rico. Con el crecimiento continuo de la propiedad de dispositivos, el aumento continuo de CPU y GPU potencia, y la evolución incesante del propio sistema operativo Android, la necesidad para los desarrolladores de aplicaciones profesionales solo va a crecer.
En resumen, los mejores desarrolladores de Android y, lo que es más importante, Android los desarrolladores con las mejores ideas y la mayor determinación tienen una mayor demanda que nunca. Nadie sabe quiénes son estos futuros desarrolladores de aplicaciones de Android, y puede que ni siquiera hayan escrito su primera línea de código todavía.
Entonces, ¿por qué no todos son desarrolladores de Android? Obviamente, no todos compartirán mi entusiasmo por la emoción de crear software que puede ayudar a mejorar la vida de las personas, pero supongo que, debido a que estás leyendo esto, podrías estar interesado.
El primer tropiezo del principiante
Desafortunadamente, para quienes comparten mi entusiasmo, hay una especie de pared de vidrio. en el camino del progreso que frustra a muchos aspirantes a desarrolladores de Android. Android pide a los aspirantes a desarrolladores que elijan entre tres lenguajes de programación para
hacer aplicaciones. Todos los libros de Android, incluso los dirigidos a los llamados principiantes, asumen que los lectores tienen al menos un nivel intermedio de Kotlin, C ++ o Java, y la mayoría necesita un nivel avanzado. Por lo tanto, el conocimiento de programación de bueno a excelente se considera un requisito previo para aprender Android.
Desafortunadamente, aprender estos lenguajes en un contexto completamente diferente al de Android a veces puede ser un poco desalentador si lo que quieres es comenzar a construir tu app de un millón de dólares YA y mucho de lo que aprende no es directamente transferible
en el mundo de Android tampoco. Podrías ver por qué los principiantes en Android suelen posponer.
No tiene por qué ser así. Y es por eso que he decidido comenzar con una serie de posts donde he colocado cuidadosamente todos los temas relacionados con Kotlin tomaría un grueso y pesado tomo para principiantes exclusivo de Kotlin, y los rediseñó en tres aplicaciones de varios capítulos y más de una docena de miniapps rápidas, comenzando desde una aplicación de notas simple, progresando a una aplicación de dibujo genial y una aplicación de base de datos.
Si quieres convertirte en un desarrollador profesional de Android, o simplemente quieres tener más divertido al aprender Kotlin y Android, esta serie de posts te ayudará.
Como trabajan Kotlin y Android
El kit de desarrollo de software (SDK) de Android está escrito en gran parte en Java, porque Kotlin es el nuevo chico en la cuadra; pero cuando le decimos a Android Studio que convierta nuestro código Kotlin en una aplicación que funcione, se fusiona con Java del SDK en una forma intermedia antes de convertirse en un formato llamado código DEX, que el dispositivo Android usa para convertirlo en un aplicación. Esto es perfecto para nosotros como desarrolladores, pero vale la pena conocerlo (y, quizás, es bastante interesante) para saber qué está sucediendo detrás de escena.
Ya sea que haya programado su aplicación en Kotlin o Java, el código DEX resultante es el mismo. Sin embargo, existen algunas ventajas significativas al trabajar con Kotlin. Kotlin lleva el nombre de una isla cerca de San Petersburgo, Rusia. Kotlin es muy similar a el lenguaje Swift de Apple, por lo que aprender Kotlin ahora le resultará muy útil para aprender el desarrollo de iPhone / iPad.
Kotlin es el lenguaje más sucinto y, por lo tanto, es el menos propenso a errores, lo cual es ideal para principiantes. Kotlin es también el lenguaje más divertido, principalmente porque la concisión significa que puede obtener resultados más rápido y con menos código. Google considera a Kotlin como un idioma oficial de Android (de primera clase). Hay algunas otras ventajas de Kotlin que lo hacen menos propenso a errores y menos propenso a cometer errores que causen fallas. Descubriremos los detalles de estas ventajas a medida que avancemos.
Muchas de las aplicaciones más avanzadas, innovadoras y populares se codificaron con Kotlin. Algunos ejemplos incluyen Kindle, Evernote, Twitter, Expedia, Pinterest y Netflix. Antes de comenzar nuestra búsqueda de Android, debemos comprender cómo funcionan juntos Android y Kotlin. Después de escribir un programa para Android, ya sea en Java o Kotlin, hacemos clic en un botón y nuestro código se transforma en otra forma, una forma que es entendida por Android. Esta otra forma se llama Dalvik Executable, o código DEX, y el proceso de transformación se llama compilación. Cuando la aplicación se instala en un dispositivo, el sistema operativo transforma nuevamente el código DEX en un estado ejecutable optimizado.
Android es un sistema complejo, pero no es necesario comprenderlo a profundidad para poder comenzar a crear aplicaciones increíbles.
Para comenzar, solo necesitamos comprender los conceptos básicos. Android se ejecuta en una versión especialmente adaptada del sistema operativo Linux. Entonces, lo que el usuario ve de Android es solo una aplicación que se ejecuta en otro sistema operativo.
Android es un sistema dentro de un sistema. El usuario típico de Android no ve el sistema operativo Linux y lo más probable es que ni siquiera sepa que está allí.
Uno de los propósitos de esto es ocultar la complejidad y diversidad del hardware y software en el que se ejecuta Android, pero, al mismo tiempo, exponer todas sus funciones útiles. La exposición de estas características funciona de dos formas:
- Primero, el propio sistema operativo debe tener acceso completo al hardware, que lo hace.
- En segundo lugar, este acceso debe ser amigable para los programadores y fácil de usar, y se debe a la interfaz de programación de aplicaciones (API) de Android.
El API De Android
La API de Android es una interfaz que facilita hacer cosas excepcionales. Se podría establecer una analogía simple con una máquina, tal vez un automóvil. Cuando presionas el acelerador, suceden un montón de cosas debajo del capó. No necesitamos entender la combustión o las bombas de combustible, porque algún ingeniero inteligente ha creado una interfaz para nosotros; en este caso, una interfaz mecánica: el pedal del acelerador.
Por ejemplo, la siguiente línea de código probablemente parece un poco intimidante, pero sirve como un buen ejemplo de cómo la API de Android nos ayuda:
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
Una vez que sepa que esta única línea de código busca satélites disponibles en el espacio, se comunica con ellos en sus órbitas alrededor de la Tierra y luego recupera su latitud y longitud precisas en la superficie del planeta, se vuelve fácil vislumbrar el poder y la profundidad de la API de Android.
Ese código parece un poco desafiante, incluso alucinante, ¡pero imagínese tratando de hablar con un satélite de otra manera! La API de Android tiene un montón de código que ya ha sido escrito para que lo usemos como queramos. La pregunta que debemos hacernos es la siguiente: ¿cómo usamos todo este código para hacer cosas interesantes? O, para enmarcar la pregunta para que se ajuste a la analogía anterior: ¿cómo encontramos y manipulamos los pedales, el volante y, lo más importante, el techo corredizo de la API de Android?
La respuesta a esta pregunta es el lenguaje de programación Kotlin y el hecho de que Kotlin fue diseñado para ayudar a los programadores a manejar la complejidad, evitar errores y avanzar rápidamente. Veamos más profundamente en Kotlin y la programación orientada a objetos (OOP).
Kotlin es orientado a objetos
Kotlin es un lenguaje orientado a objetos. Esto significa que utiliza el concepto de objetos de programación reutilizables. Si esto suena a jerga técnica, otra analogía ayudará.
Kotlin nos permite a nosotros y a otros (como el equipo de desarrollo de la API de Android) escribir código que se puede estructurar en función de cosas del mundo real, y aquí está la parte importante: se puede reutilizar. Entonces, usando la analogía del automóvil, podríamos hacer la siguiente pregunta: si un fabricante fabrica más de un automóvil en un día, ¿rediseñan cada parte de cada automóvil que sale de la línea de producción?
La respuesta, por supuesto, es no. Obtienen ingenieros altamente capacitados para desarrollar exactamente los componentes correctos, pulidos, refinados y mejorados a lo largo de los años. Luego, esos mismos componentes se reutilizan una y otra vez, además de mejorarse ocasionalmente. Si va a ser quisquilloso con mi analogía, puede señalar que cada uno de los componentes del automóvil aún debe construirse a partir de materias primas utilizando materiales de la vida real. Ingenieros o robots. Esto es cierto.
Lo que hacen los ingenieros de software cuando escriben su código es construir un plano para un objeto. Luego creamos un objeto a partir de su plano usando código y una vez que tenemos ese objeto, podemos configurarlo, usarlo, combinarlo con otros objetos y más. Además, podemos diseñar planos nosotros mismos y hacer objetos a partir de ellos. A continuación, el compilador transforma (fabrica) nuestra creación personalizada en código DEX.
¡Listo! Tenemos una aplicación para Android. En Kotlin, un plano se llama clase. Cuando una clase se transforma en una “cosa” de trabajo real, la llamamos objeto o instancia de la clase.
Entonces, algunos ingenieros de software inteligentes en Android HQ escriben un programa bastante complejo que puede hablar con satélites y, como resultado de esto, en una sola línea de código, podemos obtener nuestra ubicación en la superficie del planeta. Agradable. La mayor parte de la API de Android está escrita en otro lenguaje (Java), pero esto no nos importa ya que tenemos acceso completo a la función (codificada en Java) mientras usamos el Kotlin más sucinto. Android Studio y el compilador de Kotlin manejan las complejidades detrás de la escena.
Los ingenieros de software han considerado cómo pueden hacer que este código sea útil para todos los programadores de Android que desean crear aplicaciones increíbles que utilicen la ubicación de los usuarios para hacer cosas interesantes. Una de las cosas que hacen es crear funciones, como convertir la ubicación del dispositivo en el mundo en una simple tarea de una línea.
Entonces, la única línea de código que vimos anteriormente pone en acción muchas más líneas de código que no vemos ni necesitamos ver. Este es un ejemplo del uso del código de otra persona para hacer nuestro código infinitamente más simple.