Héctor Álvarez

Taller tecnologías móviles

Introducción a tecnologías móviles

Esquema de la clase

  • Brevísima historia de la informática móvil
  • Estado actual
  • Alternativas al desarrollo nativo
  • Introducción a Flutter

Ley de Moore y la miniaturización

La ley de moore nos menciona que a cada dos años se duplican la cantidad de transistores en un chip.

Gordon Moore, Cofundador de Intel.

Gordon Moore, Cofundador de Intel.

Ley de Moore y la miniaturización

La computadora eniac

Computador Eniac, encargado de calcular tablas balísticas (1943/45).

Ley de Moore y la miniaturización

La computadora eniac

Raspberry pi zero 2 W, Computador de una sola placa (SBC).

Ley de Moore y la miniaturización

La computadora eniac

Michigan Micro Mote (M3), 2018.

Ley de Moore y la miniaturización

Gracias a la miniaturización de transistores, podemos crear dispositivos más complejos con menor tamaño.

Lo que alguna vez utilizaba habitaciones completas, hoy lo llevamos en nuestros bolsillos (con creces).

Primeros computadores portables

  • TRS-80
  • Atari Portfolio
  • Apple Newton
  • Palm Pilot
  • Psion Series 5

Primeros computadores portables

El TRS-80, Creado en 1980 por Sharp, poseía 1.9KB de RAM y dos procesadores de 4 bits, Contenía un interprete de basic. Podía guardar datos en cassettes e imprimir mediante extensiones de hardware.

Primeros computadores portables

El Atari Portfolio fue lanzado en 1989 por Atari, contaba con un procesador 80C88 (x86) a 4.9152 MHz y 128KB de RAM operaba con una versión recordada de MS-DOS (dipDOS). Poseía un dock para agregar conectividad y contaba con tarjetas flash de 128kb para almacenar datos.

Primeros computadores portables

Apple Newton es una PDA (Personal Digital Assistant) creada por Apple en 1993, Operaba con Newton OS y se programaba sólo con NewtonScript.

Primeros computadores portables

Palm Pilot es una PDA Icónica creada en 1997 por Palm inc. 16Mhz y 512 KB RAM. Operaba con PalmOS se programaba en C y Quartus Forth.

Primeros computadores portables

Psion Series 5 es una PDA creada por Psion PLC en 1997, poseía un procesador a 18Mhz y 4MB de RAM se programaba en OPL (Open Programming Language) y utilizaba EPOC32 como SO.

Primeros computadores portables

El avance tecnológico permitió la miniaturización de las computadoras, permitiéndonos llevar estos dispositivos con nosotros.

Estos dispositivos estaban creados para realizar pocas funciones y su conectividad estaba limitada a 'docks' o periféricos extensores de cada empresa en particular, limitando su interoperabilidad y autonomía.

Teléfonos programables

  • Nokia 7650
  • Nokia E72
  • Symbian OS (EPOC32)
  • Iphone
  • HTC Dream (Android)

Teléfonos programables

El Nokia 7650 es considerado el primer 'Smartphone', lanzado entre el 2001 y 2002 poseía un Procesador ARM-9 a 104Mhz, RAM de 4MB y 16MB de almacentamiento. Utilizaba el sistema operativo Symbian OS.

Teléfonos programables

Terminal Nokia E72 creada por Nokia en 2009, procesador ARM11 a 600Mhz, 128MiB RAM y 256MB de almacenamiento, utilizaba Symbian OS v9.3.

Teléfonos programables

Symbian OS fue un sistema operativo diseñado para dispositivos móviles, basado en EPOC32.

El sistema operativo era compatible con una gran cantidad de dispositivos, como lo es Android en la actualidad.

Teléfonos programables

Por su gran proliferación, fue un sistema con una gran cantidad de desarrolladores, se brindaban SDKs para programar con C/C++ y Java (J2ME).

J2ME fue muy popular gracias a su compatibilidad con distintos dispositivos, aunque contaba con muchas limitaciones.

Symbian OS 1998-2012

Teléfonos programables

Iphone, creado por Apple en 2007, de 412Mhz, 128MB RAM y hasta 16GB de almacenamiento; utilizaba iPhone OS.

Teléfonos programables

A mediados del 2007 se lanza al mercado el iPhone, teléfono inteligente de Apple, llevando la computación móvil a otro nivel.

Contaba con gran capacidad de almacenamiento, un procesador potente para un dispositivo de esas características, conectividad multi banda, Bluetooth y Wifi.

Su SDK bien integrado lo hacía un dispositivo fácil de programar.

Su sistema operativo implementó la 'tienda de aplicaciones', que permitía distribuir fácilmente las aplicaciones.

Teléfonos programables

HTC Dream, creado por HTC en el 2008. Terminal con teclado deslizable, CPU de 528 Mhz y 192 MB RAM y 256MB Almacenamiento. Operaba con Android 1.0

Teléfonos programables

Un año después de la salida del primer iPhone, aparece el primer smartphone con el sistema operativo Android, de Google.

El dispositivo era ligeramente inferior al iPhone en algunos aspectos, pero puso al sistema Android en el Radar para futuras colaboraciones.

Android hoy en día es el sistema operativo móvil más usado, ya que posee soporte para distintos dispositivos y cooperaciones con distintos fabricantes.

De la misma forma que iPhone OS (iOS actualmente), posee un mercado centralizado de aplicaciones y su SDK lo hace fácil para empezar a programar.

Estado actual

Estado actual

Actualmente el mercado está dominado por Android e iOs (70% del mercado dominado por Android mientras que iOs alrededor del 28%).

Cada sistema operativo tiene su propio ecosistema de desarrollo y se programan con lenguajes completamente diferentes.

Android:
Lenguajes: Java, Kotlin, C/C++, etc.
Disponibilidad: Windows, GNU/Linux, macOS.

iOS:
Lenguajes: Objetive-C, Swift, etc.
Disponibilidad: macOS

Alternativas al desarrollo nativo

Para desarrollar aplicaciones móviles podemos encontrar una gran variedad de alternativas, cada una con sus ventajas y desventajas.

Model

Compile to native

Interpreted (JavaScript)

MVC/MVP/MVVM

Android SDK(Java, Kotlin)
iOS SDK (Objective-C, Swift)

Titanium, Cordova, PhoneGap, Ionic, ...

Reactive

Flutter, ReasonML

React Native, NativeScript

Alternativas al desarrollo nativo

Alternativas al desarrollo nativo

Alternativas al desarrollo nativo

Ionic Framework, nace en el año 2013, en un principio unía el framework AngularJS y Cordova.

Es de fácil introducción ya que solo es necesario un poco de conocimiento HTML y Javascript. Actualmente soporta múltiples frameworks como Angular, VueJS y React.

Es muy útil para reutilizar componentes ya creados en los framework mencionados anteriormente.

Cómo desventaja podemos observar que su rendimiento no es el mejor ya que muchos componentes son “renderizáados” como páginas web utilizando webview.

Alternativas al desarrollo nativo

Alternativas al desarrollo nativo

React native, nace el año 2015 y utiliza los mismos principios que el framework Ionic, aunque con leves diferencias y mejoras.

React native contiene elementos que otorgan un mayor rendimiento en comparación a Ionic, ya que no ejecuta toda la app en un webview, sino que es un híbrido entre componentes gráficos nativos y lógica interpretada.

Sólo el código Javascript es interpretado por su motor interno y todas las llamadas a componentes gráficos se realizan por un render, lo que ayuda bastante al rendimiento y fluidez de la aplicación.

Alternativas al desarrollo nativo

Introducción a Flutter

Introducción a Flutter

Flutter lanza su versión estable 1.0 a fines del 2018 (las versiones alpha podían obtenerse desde mayo del 2017).

Flutter nos permite desarrollar aplicaciones multiplataforma realmente nativas.

Se desarrolla con el lenguaje de programación Dart, desarrollado por el mismo Google. Por lo que para crear aplicaciones con flutter, el primer paso es revisar las bases de Dart.

Su entorno de desarrollo la hacen de los frameworks más rápidos para poder desarrollar una aplicación, gracias al hot reload de DartVM (en modo debug).

Introducción a Flutter

Introducción a Flutter

Algunas características de Flutter.

Rápido desarrollo:

Gracias al “hot reload”, puedes debuggear la aplicación más rápido y ver tus cambios aplicados en un par de segundos.

Puedes refrescar la aplicación sin perder el estado actual de lo que estás observando y/o realizar el hot reload reiniciado los estados de toda la aplicación.

Introducción a Flutter

Algunas características de Flutter.

Diseño de interfaces:

Podemos realizar múltiples diseños de interfaces, ya sea utilizando Material Design, Cupertino (iOS) o crear un diseño propio, esto sin bajar el rendimiento de la aplicación.

En Flutter cada componente es un Widget (o bloque de interfaz).

Introducción a Flutter

Algunas características de Flutter.

Rendimiento de aplicación nativa:

Flutter al momento de generar una aplicación para su distribución (release), compila el código dart a código máquina (directo al procesador sin VMs ni interpretes).

Para desarrollar (debug), utiliza la máquina virtual de Dart para realizar hot reload y ver nuestros cambios sin necesidad de volver a recopilar.

Introducción a Flutter

Dart es un lenguaje de programación grado por Google y lanzado el 2013. Tiene una sintaxis parecida a C, Kotlin y TypesScript; es un lenguaje de programación orientado a objetos con recolector de basura (Garbage Collector) similar a Java.

Es utilizado para desarrollar aplicaciones FrontEnd (web), aplicaciones de servidor (Backend), de escritorio y móviles.

Introducción a Flutter

Dart posee la particularidad que puede utilizarse en múltiples ambientes (versatilidad):

Web: Dart puede transpilarse a JavaScript para realizar aplicaciones frontend (AngularDart)

Standalone: Un programa en Dart puede ser interpretado por el interprete de Dart como si de Python (aplicaciones de terminal y lado del servidor).

Snapshots: Dart puede generar un snapshot con los datos esenciales para ejecutarse en la máquina virtual de Dart (DartVM). Similar a un ByteCode en Java.

Nativo: Un programa en Dart se puede compilar a código máquina, lo que permite ejecutarlo sin interpretes y compartirlo como un binario optimizado para el CPU.

Enlaces importantes

Para instalar Flutter es necesario descargar Android Studio y el SDK de Dart desde los siguientes enlaces:

https://developer.android.com/studio

https://docs.flutter.dev/get-started/install

Instalar primero Android Studio, luego seguir los pasos del “get started” de Flutter (se destinará una clase para su instalación).