TALLER DE
APLICACIONES MÓVILES
SEMANA 3
ESCUELA DE INGENIERÍA Y CONSTRUCCION
Director: Marcelo Lucero
ELABORACIÓN
Experto disciplinar: Javier Miles
Diseño instruccional: Felipe Molina
VALIDACIÓN
Experto disciplinar: Andrés del Alcázar
Jefa de Diseño Instruccional: Alejandra San Juan Reyes
EQUIPO DE DESARROLLO
AIEP
AÑO
2021
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 2
Tabla de contenido
Aprendizaje esperado de la semana .................................................................. 4
Introducción ....................................................................................................... 4
1. Características de lenguajes de programación..................................................... 5
Objective-C .....................................................................................................................6
Swift ...............................................................................................................................7
Java ...............................................................................................................................7
Kotlin ..............................................................................................................................7
JavaScript .......................................................................................................................7
TypeScript .......................................................................................................................8
C# ..................................................................................................................................8
C en aplicaciones móviles .................................................................................................8
2. Definición de compilador .............................................................................. 9
Javac ..............................................................................................................................9
Kotlinc ..........................................................................................................................11
cpp ...............................................................................................................................14
gcc ...............................................................................................................................14
javascript ......................................................................................................................14
3. Java byte-code y JVM ................................................................................ 15
4. Java byte-code, DEX, Dalvik y DVM ........................................................... 17
5. DVM vs ART ............................................................................................... 18
Conclusiones .................................................................................................... 19
Referencias ...................................................................................................... 20
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 3
Aprendizaje esperado de la semana
Ejecutan programa básico mediante máquina virtual, considerando lenguajes de
programación y compiladores para dispositivos móviles.
Introducción
• ¿Qué lenguaje de programación debería utilizar?
• ¿Qué necesito para mi ambiente de desarrollo?
• ¿Qué es un archivo compilado?
Estas son interrogantes que dan continuidad a la lección de la semana
anterior. Ya conoces cómo está compuesto a nivel lógico los sistemas
operativos Android, y cuáles son los componentes que intervienen para su
ejecución en un dispositivo. Ahora falta tu imaginación e investigación, para
conocer cómo se instala un sistema operativo en un dispositivo Android, lo
cual no forma parte como objetivo del curso. Diversos son los lenguajes de
programación, y debemos seleccionar el lenguaje que de solución a la
problemática del cliente. En esta semana, podrás profundizar aún más en
relación con los lenguajes de programación, y cómo funcionan.
En este documento, podrás reconocer qué lenguaje seleccionar, para el
desarrollo de aplicaciones.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 4
1. Características de lenguajes de programación
Para la escritura en un computador, nada más se necesita un editor de texto,
que simplemente toma la entrada desde teclado, y permite guardarlo en un
archivo. Por ejemplo, de acuerdo con la siguiente imagen, el comando more
(Windows 10, GNU/Linux, Unix), se utiliza para ver el contenido de un archivo,
paginando (mostrando por página), el contenido del archivo. Pero además,
existe la redirección de entrada con el símbolo “<”, y redirección de salida,
con el símbolo “>”. Lo anterior, quiere decir que: “con el símbolo >, la salida
por defecto que era por teclado, ahora es hacia un archivo. Posteriormente,
lo leo desde el archivo, por medio de la redirección de entrada, con el
símbolo <, el cual indica que la lectura ya no es por teclado, sino que desde
un [Link]”.
Ilustración 1: M ILES, J. (2021). E SCRIBIENDO Y LEYENDO UN ARCHIVO .
En definitiva, para poder escribir un código fuente, nada más necesitas un
programa para escribir en un archivo. Por ejemplo: Si utilizas Windows, puede
ser un bloc de notas, y si utilizas MacOS, entonces puedes utilizar TextEdit. En
ambos casos, debes tener la precaución de guardar los archivos en formato
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 5
estándar, para que sea legible desde cualquier editor o visualizador (ej:
comando more).
En la medida que fue avanzando la tecnología, fueron apareciendo nuevos
editores de texto, como por ejemplo VIM o EMACS (GNU).
Muchas funcionalidades fueron apareciendo en posteriores versiones de
otros productos, haciéndolos visualmente más atractivos, atajos de teclado,
autocompletar código, colores para código fuente, etc.
Existen lenguajes de programación dinámicamente tipados en donde una
variable puede adoptar valores de distinto tipo (Por ejemplo en PHP, sería $a
= 1; ). Nótese que no se ha especificado el tipo de dato, y da igual si es “1”
como texto, o bien 1 como numérico. La mayoría de lenguajes de “tipado
dinámico”, son lenguajes interpretados, como por ejemplo, Python, Ruby y
PHP.
Otros lenguajes de programación, son definidos como de tipado estático, o
estáticamente tipado. Esta separación se suele confundir con la diferencia
entre lenguajes fuertemente tipados y lenguajes débilmente o no tipados.
(Meijer & Drayton, 2004).
Objective-C
Es un lenguaje de programación orientado a objetos creado a partir del
lenguaje C, para que implementase un modelo de objetos parecido al de
Smalltalk. Es un tipo de lenguaje de tipado dinámico y estático (Kochan, 2013)
La Compañía Apple lanzó el iPhone SDK 2.0, aproximadamente el año 2008,
en donde aparece un nuevo nicho de mercado para los desarrolladores, el
desarrollar en iOS. A lo largo de los años, el lenguaje ha ido creciendo en
cuanto a funcionalidades, al igual que otros lenguajes, como la inclusión de
“literals”, manejo de memoria más simple, entre otros.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 6
Swift
En el año 2014, la compañía Apple presenta un lenguaje de programación
multiparadigma, orientado al desarrollo de aplicaciones para iOS y macOS,
con lo cual los desarrolladores tendrían que aprender un nuevo lenguaje, el
cual elimina la gestión insegura de punteros, manteniendo la interacción con
Objective-C y C.
En un principio, fue presentado como lenguaje propietario, sin embargo, a
partir de la versión 2.2, pasó a ser de código abierto, bajo Licencia Apache
2.0.
Java
De acuerdo con (Oracle Corp.), Java es un lenguaje de programación
multiplataforma, el cual cuenta con un ambiente de desarrollo (Java
Development Kit), y un entorno de ejecución de programas compilados,
llamado JRE (Java Runtime Environment), el cual cuenta con el JVM (Java
Virtual Machine), clases del núcleo de la plataforma Java y bibliotecas de la
plataforma Java de soporte.
Kotlin
Kotlin, es un lenguaje de programación considerado como de tipado
estático, el cual es capaz de ejecutarse sobre la máquina virtual de Java y
que también puede ser compilado como código fuente de JavaScript. Es
desarrollado principalmente por Jetbrains.
JavaScript
Es un lenguaje de programación interpretado, el cual consiste en ejecutar las
instrucciones directamente, sin previa compilación. Está ajustado al estándar
ECMAScript.
Javascript, se define a sí mismo, como orientado a objetos, el cual está
basado en prototipos, es débilmente tipado y dinámico.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 7
Su intérprete, viene incluido en cualquier navegador que haya sido creado
bajo el estándar ECMAScript, y hoy en día se utiliza para el desarrollo
“FrontEnd” (Lo que ve el usuario), y el código se ejecuta en el computador
del usuario.
Es un lenguaje muy potente, tan así, que se han creado programas en
JavaScript, que al ejecutarse, se transforma en un servidor, como es el caso
de NodeJS el cual incluye otros elementos como V8 de Google, el cual es un
motor de código abierto para JavaScript y WebAssembly.
TypeScript
Es un lenguaje de programación de código abierto y libre, desarrollado por
Microsoft. Principalmente es de la misma familia de JavaScript, con la
diferencia en que añade tipos estáticos y objetos basados en clases. Es
utilizado principalmente para el desarrollo de aplicaciones JavaScript que
serán ejecutados en el lado del cliente, servidor, o en algunas extensiones
para NodeJS.
TypeScript es una extensión de la sintaxis JavaScript, por tanto cualquier
código JavaScript funciona sin problemas. Utilizando un compilador de
TypeScript se traduce a código JavaScript original.
C# (C-Sharp)
Es un lenguaje de programación multiparadigma desarrollado por Microsoft,
como parte de su plataforma .NET, el cual actualmente se encuentra
aprobado como un estándar ECMA-334 e ISO/IEC 23270.
La sintaxis, deriva de C y C++, y utiliza los modelos de objetos de la plataforma
.NET. Es muy similar a Java.
C en aplicaciones móviles
Existen desarrolladores que desean crear sus aplicaciones en un lenguaje de
programación como C; Como hemos visto anteriormente, muchos de los
lenguajes provienen de C, por lo cual también es posible desarrollar
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 8
nativamente en este lenguaje, por medio del NDK, el cual es una colección
de bibliotecas que son similares al SDK(Vistos en la lección anterior). Sin
embargo, están escritos en lenguaje de programación C en vez de Java.
1. Definición de compilador
Javac
Para escribir un lenguaje en Java, basta con un editor de texto (mencionados
anteriormente), y escribir el código necesario. De acuerdo a la siguiente
ilustración, de cómo sería un código fuente en Java.
Ilustración 2: M ILES, J. (2021). CÓDIGO FUENTE EN J AVA .
Posteriormente, puedes guardar el archivo en una carpeta, el nombre del
archivo, será [Link], como demuestra la siguiente ilustración.
Recuerda que si estás utilizando IOS, puedes utilizar TextEdit, procurando
guardar como texto sin formato.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 9
Miles, J. (2021). Guardar archivo sin formato.
Con el paso anterior, ya has creado un archivo Java, con su respectivo
código fuente. Ahora, el proceso será de compilar el archivo Java, con el JDK
(Java Development Kit), el cual es el entorno de desarrollo (el que software
que contiene el archivo que compila). (Miles Avello)
Para ello, debes descargar desde [Link] (debes tener una cuenta
creada), desde el siguiente link:
[Link]
[Link]
Para el desarrollo de este curso, utilizaremos el último reléase, de la versión 8.
(Oracle Inc., 02).
Una vez descargado e instalado, agrega la ruta a las variables de entorno
del sistema (PATH DEL SISTEMA), para que puedas llamar el comando de
compilación, sin llamar la ruta completa. En la siguiente ilustración, se
demuestra el uso de javac (Java Compiler), y de java (para ejecutar el
archivo .class generado).
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 10
Ilustración 3: M ILES, J. (2021). COMPILACIÓN Y EJECUCIÓN DE UN ARCHIVO J AVA .
Kotlinc
Como el punto anterior, necesitamos del compilador de kotlin, llamado
kotlinc (Kotlin Compiler), el cual puede ser descargado desde (Kotling
Foundation, 2021).
De acuerdo con las instrucciones, simplemente descargas el archivo zip
desde la página oficial indicada en la bibliografía, y luego lo descomprimes
en una carpeta, como indica la siguiente imagen:
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 11
Ilustración 4: M ILES, J. (2021). C ARPETA KOTLIN DESCOMPRIMIDA .
Ilustración 5: M ILES, J. (2021). CÓDIGO FUENTE KOTLIN HOLA MUNDO .
Procura dejar el archivo fuente dentro de la carpeta que descomprimiste,
para no tener que utilizar la ruta completa
Ilustración 6: M ILES, J. (2021). G UARDAR CODIGO FUENTE DESDE BLOC DE NOTAS.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 12
Para compilar el archivo, debes ejecutar el compilador que está dentro de la
carpeta bin. Para ello, desde una consola, ingresa a la carpeta en donde se
encuentra el archivo KT creado previamente, y compila por medio del
comando: “ bin\kotlinc [Link] ”
Ilustración 7: MILES, J. (2021). COMPILACIÓN DE CÓDIGO FUENTE KOTLIN.
Una vez que se haya ejecutado, kotlin descargará automáticamente las
dependencias para poder compilar el proyecto (Procura tener 1G disponible
para la instalación).
Ilustración 8: M ILES, J. (2021). R ESULTADOS DE COMPILACIÓN Y EJECUCIÓN .
Una vez finalizada la compilación, verás que has creado tu primer archivo
ejecutable para Windows ([Link]), simplemente ejecuta el archivo
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 13
[Link] como la ilustración anterior, y estará listo tu primer “HOLA
MUNDO”, programado en kotlin, utilizando el compilador.
Cpp
Es un compilador para C++ (C plus plus), el cual en algún lenguaje de
programación habrás visto cómo autoinrementar una variable contador
como:
int i=0;
i++;
Pues dado lo anterior C++, es el incremento del lenguaje C. Vale decir, es ua
extensión del lenguaje C.
gcc
GCC, es un acrónimo para (GNU Compiler Collection ), el cual es un conjunto
de compiladores creados por el proyecto GNU. Es software libre y es
distribuido por la Free Software Foundation (FSF), bajo la licencia general
pública GPL.
Javascript
Para utilizar este lenguaje, simplemente abre un block de notas, y escribe las
instrucciones JS, entre las etiquetas <script></script>.
Por ejemplo:
-Abre un block de notas.
-Escribe el siguiente código:
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 14
Ilustración 10: M ILES, J. (2021). SCRIPT H OLA M UNDO .
- Guarda el archivo en el escritorio, con el nombre [Link]
(Recuerda cambiar el tipo de archivo desde txt a todos los archivos).
- Abre el archivo, con un navegador, haciendo doble click sobre él.
- Como has podido apreciar, no tuviste que compilar previamente el código
fuente, y se interpretó directamente desde el navegador.
2. Java byte-code y JVM
El proceso de compilación de un archivo .java, transforma este archivo, en
un archivo .class, el cual es llamado como Java Byte-code, que es el archivo
“compilado”, el cual es interpretado y ejecutado por la JVM o Java Virtual
Machine.
Si tienes instalado el JDK (Java Development Kit), entonces dirígete a la
carpeta de instalación, dentro de la carpeta bin, y busca el archivo
[Link]. Dicho archivo, te permite monitorear los procesos que está
ejecutando la máquina virtual de java.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 15
I LUSTRACIÓN 9: MILES, J. (2021). A CCEDIENDO A LA CONSOLA DE JAVA.
Una vez que accediste a la consola, te puedes conectar a algún proceso de
Java que esté en ejecución
I LUSTRACIÓN 10: M ILES, J. (2021). CONSOLA DE JAVA.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 16
I LUSTRACIÓN 11: M ILES, J. (2021). MONITOREO DE P ROCESOS JVM.
3. Java byte-code, DEX, Dalvik y DVM
Si abrieras un archivo apk, te encontrarías con muchos archivos, dentro de los
cuales, están los “[Link]”, que contienen el código de la aplicación.
Estos archivos dex, poseen el código que es capaz de ser ejecutado por
Android, y están especialmente diseñados para la máquina virtual Dalvik. Este
código es muy similar a los byte-code en donde hemos visto, son utilizados en
la máquina virtual Java como “[Link]”. Un conjunto de clases (archivos
class), pueden ser empaquetados en archivos JAR, para ser distribuidos y
ejecutados.
La gran diferencia entre estas dos máquinas virtuales es que la máquina Java
tiene una arquitectura basada en pila, mientras que la máquina Dalvik tiene
una arquitectura basada en registros.
La Máquina Virtual Dalvik (DVM), permite ejecutar aplicaciones programadas
en Java; Sin embargo, no está diseñado para ello, dado que incurriría en
problemas de licenciamiento. Muchos programas escritos en Java (al menos
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 17
hasta la versión 5), son capaces de ser ejecutados sobre esta máquina virtual.
Esta máquina virtual, es de bajo consumo energético, lo cual es indispensable
en un dispositivo móvil.
4. DVM vs ART
La Máquina virtual Dalvik, como hemos mencionado, fue diseñado
específicamente para dispositivos móviles y se utilizó hasta Android 4.4
(Versión KitKat). A partir de esta versión, ART se introdujo como JIT (Just Int
Time), el cual es un componente del entorno de ejecución que mejora el
rendimiento de aplicaciones Java, y posteriormente en Android 5.0 (Lollipop)
ART reemplazó completamente a Dalvik.
La principal diferencia clara entre DVM y ART es que este último, utiliza la
compilación AOT (Ahead Of Time) o Compilación anticipada, la cual consiste
en el acto de transformar un código fuente en byte-code, mientras que DVM
usa la compilación JIT.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 18
Conclusiones
De acuerdo con (WindowsCentral, 2011), Windows 11 ejecuta aplicaciones
nativas de Android, lo cual el desarrollo de este tipo de aplicaciones, nos abre
un mundo para el desarrollo de aplicaciones móviles, extendiendo el
mercado a este segmento de los computadores personales.
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 19
Referencias Bibliográficas
Android Developers. (s. f.). [Link]. Recuperado 17 de agosto de 2021, de
[Link]
Aprende Java Classes en 1 hora (y cinco minutos). (2020, mayo 25).
Cómo configurar las opciones para desarrolladores en el dispositivo. (s. f.).
[Link]. Recuperado 17 de agosto de 2021, de
[Link]
Eclipse Packages. (s. f.). [Link]. Recuperado 17 de agosto de 2021, de
[Link]
Endicott, S. (2021, julio 6). Don’t wait until Windows 11 — here’s how to run
Android apps on your PC right now. Windows Central.
[Link]
android-apps-your-pc-right-now
Install Android Studio. (s. f.). [Link]. Recuperado 17 de agosto de 2021,
de [Link]
Ionic. (s. f.). Cross-platform mobile app development: Ionic framework.
[Link]. Recuperado 17 de agosto de 2021, de
[Link]
Java SE Development Kit 8 - Downloads. (s. f.). [Link]. Recuperado 17 de
agosto de 2021, de
[Link]
Kotlin command-line compiler. (s. f.). [Link]. Recuperado 17 de agosto
de 2021, de [Link]
Meijer, E. (s. f.). Static typing where possible, dynamic typing when needed: The
end of the cold war between programming languages. [Link]. Recuperado
17 de agosto de 2021, de
[Link]
ter/RDL04/papers/[Link]
Nieto, J. G. (2019, octubre 22). APKOnline, un emulador de Android online
gratuito para probar apps y juegos desde el navegador. [Link];
Xataka Android. [Link]
emulador-android-online-gratuito-para-probar-apps-juegos-navegador
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 20
No title. (s. f.). [Link]. Recuperado 17 de agosto de 2021, de
[Link]
React Native. (s. f.). [Link]. Recuperado 17 de agosto de 2021, de
[Link]
Strobel, S., & Uhl, T. (1996). GNU Emacs. En Linux Unleashing the Workstation in Your PC
(pp. 287-324). Springer US.
Visual Studio Code - code editing. Redefined. (2016, abril 14). [Link].
[Link]
Vue Native. (s. f.). [Link]. Recuperado 17 de agosto de 2021, de [Link]
[Link]/
Taller de Aplicaciones Móviles • Semana 3 – Hola Mundo 21