Primera Parte
1. ¿Qué es el Software Libre?

2. ¿Qué es Software Open Source?

3. Diferencias entre Software Libre y
   Open Source


               Expositor
               Bayron Guevara
               Digital Sense S.A. de C.V.
               Fundador y Presidente
               www.digitalsensehn.com
¿Qué es el Software Libre?
 Es aquel que garantiza las
 siguientes libertades o
 principios:
0. Usar el programa con cualquier propósito
1. Estudiar el funcionamiento del software y
   modificarlo
2. Distribuir copias del software
3. Mejorarlo y hacer públicas esas mejoras
 No debe confundirse con el software
 gratuito, ya que el software libre puede ser
 distribuido comercialmente
¿Qué es el Software Libre?
Richard Stallman creó el
concepto y fundó en 1985 la
Free Software Foundation,
una organización dedicada a
difundir este movimiento.      Richard Stallman

La idea detrás del Software Libre es que el
software    debería     considerarse    un
patrimonio de la humanidad, construido
mediante un esfuerzo comunitario.
Existen varias licencias compatibles con
esta ideología.
¿Qué es Software Open Source?
Es aquel que se distribuye junto
con su código fuente y otro
material de apoyo.
Surge a partir de la necesidad de las
empresas de promover mejoramiento
continuo de sus productos de software a
través de la colaboración y aportaciones de
sus usuarios.
La OSI es una organización dedicada a
promocionarlo y la responsable de licenciar
un producto como Open Source.
Debe considerarse más como un método de
desarrollo, que como una filosofía o ética.
Diferencias entre Software Libre y
            Open Source
Software Libre                     Open Source
Garantiza las libertades de uso,   Únicamente garantiza acceso
copia, modificación y              libre al código fuente
distribución del software.
Se basa en una ideología y         Utilizado como una
filosofía                          metodología de desarrollo de
                                   software
Licencias deben ser                Sus licencias pueden
compatibles con la GPL             restringir su distribución y
                                   forma de ejecución
El copyleft impide que los         No es obligatorio el uso del
redistribuidores de software       copyleft.
libre lo modifiquen con el
objetivo de hacerlo privativo.
Las libertades del software libre No todo Open Source
implican que también se trata     necesariamente es Software
de producto Open Source.          Libre.
Diferencias entre Software Libre y
           Open Source
Ejemplos de software considerados
exclusivamente Open Source:
 ●       Sencha Framework. Desarrollo de
     aplicaciones web en dispositivos móviles.
 ●      eZ Publish. Sistema Web de
     Administración de Contenido (CMS).
Muchas gracias por su atención.
Segunda Parte
1. Principales Plataformas Móviles

2. Ventajas y Libertades de Android

3. Fundamentos de Desarrollo de
   Apps para Android


               Expositor
               Bayron Guevara
               Digital Sense S.A. de C.V.
               Fundador y Presidente
               www.digitalsensehn.com
Principales Plataformas Móviles
Hasta la fecha se han desarrollado multitud de
plataformas para dispositivos móviles como son
los smartphones y los tablets. Sin embargo, son
contadas las que han alcanzado una verdadera
aceptación:
Principales Plataformas Móviles
Principales Plataformas Móviles

 Desarrollado por Apple y es utilizado en el iPad,
iPhone y iPod. Fue lanzado en junio de 2007 y
actualmente su última versión estable es la 4.3.

 Su SDK llamado Xcode únicamente está disponible
para el sistema operativo OS X.

Características principales:
●   Núcleo basado en Darwin BSD
●   Plataforma de Hardware: ARM
●   Multitarea a partir de versión 4
●   Más de 200,000 apps disponibles
Principales Plataformas Móviles
   BlackBerry OS
Principales Plataformas Móviles
        BlackBerry OS

 Desarrollado por RIM (Research in Motion) para los
dispositivos BlackBerry.

 Fue introducido en 1999, llegando a ser exitoso por
la cobertura de sus servicios de e-mail y mensajería
instantánea, así como su teclado especialmente
diseñado para escribir con los pulgares.

 Entre los nuevos modelos figuran el BlackBerry
Storm (touchscreen), el Torch y el Bold 9700

 Todo el S.O. y las aplicaciones pre-instaladas son
software completamente privativo.
Principales Plataformas Móviles
           BlackBerry OS

Características principales:
●   Arquitectura de Hardware: ARM, Xscale
●   Programado en C++
●   Kernel basado en Java
●   Desarrollo de apps en Java
●   Multitarea
Principales Plataformas Móviles
Principales Plataformas Móviles

Usado en los smartphones de Nokia. Se ha
convertido en la plataforma móvil más utilizada a
nivel mundial con más de 400 millones de
dispositivos vendidos. El lanzamiento más reciente
se llama Symbian Anna y esta disponible en los
smartphones N8, E7, X7 entre otros.

Aunque cierta parte del código fuente esta licenciado
bajo la Eclipse Public License, compatible con la
GNU GPL; la mayor parte del código se encuentra
bajo una licencia propietaria llamada SFL.
Principales Plataformas Móviles

Características principales:
●   Arquitecturas de Hardware: ARM y x86
●   Qt como interfaz de usuario
●Desarrollo nativo de apps en C++ estándar,
alternativamente se puede usar Phyton, Java ME o
Adobe Flash
●   Usa un micro-kernel llamado EKA2
●   Multitarea y protección de memoria
Principales Plataformas Móviles
Android
Principales Plataformas Móviles
    Android
 Esta compuesto por el Sistema Operativo, las
herramientas de desarrollo y los dispositivos que lo
ejecutan. Es la plataforma con mayor crecimiento
haciendo que los analistas esperen que se convierta
en la #1 del mercado en los próximos años.

 Fue desarrollado inicialmente por Android Inc. que
posteriormente fue comprada por Google en 2005.
Actualmente su desarrollo esta a cargo de la Open
Handset Alliance (OHA), un grupo de empresas de
software, fabricantes de dispositivos móviles y
operadores, y que es liderado por Google.
Principales Plataformas Móviles
    Android
 La primera versión fue lanzada en octubre de 2008 en
el T-Mobile G1. Recientemente el S.O. ha sido
fragmentado en versiones para smartphones y
versiones para tablets (conocidas bajo el nombre de
Honeycomb). No obstante Google ha prometido
integrar estas versiones con el lanzamiento de Android
4 (Ice Cream Sandwish) al final de este año.

  Aunque su código fuente completo ha sido
liberado en las versiones para smartphones bajo la
Licencia Apache -aprobada por la FSF-, el código
fuente de las versiones para tablets únicamente
está disponible para los miembros del OHA. Sin
embargo, Google anunció liberarlo como parte del
lanzamiento de Android 4.
Principales Plataformas Móviles
      Android
Principales características
●   Núcleo Linux 2.6
●   Arquitectura de Hardware: ARM, MIPS y x86
●   Desarrollado de apps en C++ y Java
●Soporte de CPUs multi-core y aceleramiento
gráfico por hardware
●   Android Market con más de 250,000 apps
Ventajas y Libertades de Android
●   Completamente Software Libre, no utiliza
    componentes privativos
●   Aprovecha las últimas tecnologías de los dispositivos
    móviles.
●   Es la plataforma con más crecimiento de mercado
●   Flexibilidad para reemplazar cualquier aplicación
    nativa por aplicaciones de terceros.
●   Implementado en multitud de dispositivos de
    diferentes fabricantes
●   Las aplicaciones no necesitan estar firmadas
    digitalmente para acceder a todas las capacidades
●   Comunidad más grande de desarrolladores
●   El costo de subir apps gratuitas en Android Market es
    casi cero, solamente se paga una cuota de inscripción
    de $25.
Desarrollo de Apps para Android




   Arquitectura de componentes del Sistema Operativo
Desarrollo de Apps para Android
  Podemos escribir nuestras aplicaciones Android
en Java o C++. Para ejecutar apps en Java,
Android posee su propia implementación de la
JVM llamada Dalvik, la cual utiliza sus propias
librerias y APIs y esta diseñada para correr
múltiples instancias eficientemente.

Herramientas de Desarrollo
Para comenzar a desarrollar en Android,
necesitamos las siguientes herramientas:
●   Android SDK
●   IDE (Entorno Integrado de Desarrollo)
●   Plugin ADT para el IDE
Desarrollo de Apps para Android
    Características destacadas de las Apps
●   Acceso al hardware, incluyendo cámara, GPS y
    acelerómetro.
●   Servicios de Fondo. Permiten ejecutar procesos
    en segundo plano, mientras estas usando una
    aplicación interactiva.
●   SQLite. Puedes usar esta librería para
    almacenar y acceder datos de tu app mediante
    consultas SQL.
●   Datos compartidos y comunicación entre
    aplicaciones. Una aplicación puede requerir
    acceso a la base de datos privada de otra app y
    enviarse mensajes entre si durante su ejecución
Desarrollo de Apps para Android
    Componentes de Aplicaciones
    Son los bloques esenciales de construcción de
    una aplicación Android. Los tipos de
    componentes son:
●   Actividades. Corresponden a una única pantalla
    de la interfaz de usuario de nuestra app.
●    Servicios. Se ejecutan en segundo plano. No
    poseen UI, en su lugar muestran notificaciones y
    abren Actividades
●   Proveedores de Contenido. Sirven como
    almacenamiento compartido entre aplicaciones,
    por ejemplo, el directorio de contactos.
Desarrollo de Apps para Android
    Componentes de Aplicaciones
●   Intentos (en inglés Intents). Permiten el paso de
    mensajes dentro y entre aplicaciones. Pueden
    estar dirigidas a una Actividad o Servicio
    especifico, o a todo el sistema en el caso de una
    solicitud de un servicio.
●   Destinarios de broadcast (en inglés broadcast
    receivers). Responden a las solicitudes de
    servicio de los intentos. Son útiles cuando
    necesitas que tu aplicación ejecute
    determinadas acciones en respuesta a ciertos
    eventos.
Desarrollo de Apps para Android
Recursos
Casi siempre es una buena práctica mantener
recursos que no son código de programación
fuera del mismo, por ejemplo, imágenes, colores,
traducciones, UI.
Android trae por defecto un Administrador de
Recursos que dinámica y automáticamente carga
los recursos cuando los referenciamos desde
nuestro código.
Cuando desarrollamos para Android utilizaremos
frecuentemente los recursos ya que nos permiten
implementar más facilmente apps que se adaptan
automáticamente a las especificaciones de los
dispositivos.
Desarrollo de Apps para Android
Implementando una Interfaz de Usuario
El método más sencillo de implementar un UI es
través del editor visual que trae incorporado el
plugin ADT de Eclipse, el cual automáticamente
genera el correspondiente recurso XML.
Desarrollo de Apps para Android




                        Ciclo de Vida de
                        las Actividades
Muchas gracias por su atención.

Exposición 20 aniversario linux

  • 1.
    Primera Parte 1. ¿Quées el Software Libre? 2. ¿Qué es Software Open Source? 3. Diferencias entre Software Libre y Open Source Expositor Bayron Guevara Digital Sense S.A. de C.V. Fundador y Presidente www.digitalsensehn.com
  • 2.
    ¿Qué es elSoftware Libre? Es aquel que garantiza las siguientes libertades o principios: 0. Usar el programa con cualquier propósito 1. Estudiar el funcionamiento del software y modificarlo 2. Distribuir copias del software 3. Mejorarlo y hacer públicas esas mejoras No debe confundirse con el software gratuito, ya que el software libre puede ser distribuido comercialmente
  • 3.
    ¿Qué es elSoftware Libre? Richard Stallman creó el concepto y fundó en 1985 la Free Software Foundation, una organización dedicada a difundir este movimiento. Richard Stallman La idea detrás del Software Libre es que el software debería considerarse un patrimonio de la humanidad, construido mediante un esfuerzo comunitario. Existen varias licencias compatibles con esta ideología.
  • 4.
    ¿Qué es SoftwareOpen Source? Es aquel que se distribuye junto con su código fuente y otro material de apoyo. Surge a partir de la necesidad de las empresas de promover mejoramiento continuo de sus productos de software a través de la colaboración y aportaciones de sus usuarios. La OSI es una organización dedicada a promocionarlo y la responsable de licenciar un producto como Open Source. Debe considerarse más como un método de desarrollo, que como una filosofía o ética.
  • 5.
    Diferencias entre SoftwareLibre y Open Source Software Libre Open Source Garantiza las libertades de uso, Únicamente garantiza acceso copia, modificación y libre al código fuente distribución del software. Se basa en una ideología y Utilizado como una filosofía metodología de desarrollo de software Licencias deben ser Sus licencias pueden compatibles con la GPL restringir su distribución y forma de ejecución El copyleft impide que los No es obligatorio el uso del redistribuidores de software copyleft. libre lo modifiquen con el objetivo de hacerlo privativo. Las libertades del software libre No todo Open Source implican que también se trata necesariamente es Software de producto Open Source. Libre.
  • 6.
    Diferencias entre SoftwareLibre y Open Source Ejemplos de software considerados exclusivamente Open Source: ● Sencha Framework. Desarrollo de aplicaciones web en dispositivos móviles. ● eZ Publish. Sistema Web de Administración de Contenido (CMS).
  • 7.
    Muchas gracias porsu atención.
  • 8.
    Segunda Parte 1. PrincipalesPlataformas Móviles 2. Ventajas y Libertades de Android 3. Fundamentos de Desarrollo de Apps para Android Expositor Bayron Guevara Digital Sense S.A. de C.V. Fundador y Presidente www.digitalsensehn.com
  • 9.
    Principales Plataformas Móviles Hastala fecha se han desarrollado multitud de plataformas para dispositivos móviles como son los smartphones y los tablets. Sin embargo, son contadas las que han alcanzado una verdadera aceptación:
  • 10.
  • 11.
    Principales Plataformas Móviles Desarrollado por Apple y es utilizado en el iPad, iPhone y iPod. Fue lanzado en junio de 2007 y actualmente su última versión estable es la 4.3. Su SDK llamado Xcode únicamente está disponible para el sistema operativo OS X. Características principales: ● Núcleo basado en Darwin BSD ● Plataforma de Hardware: ARM ● Multitarea a partir de versión 4 ● Más de 200,000 apps disponibles
  • 12.
  • 13.
    Principales Plataformas Móviles BlackBerry OS Desarrollado por RIM (Research in Motion) para los dispositivos BlackBerry. Fue introducido en 1999, llegando a ser exitoso por la cobertura de sus servicios de e-mail y mensajería instantánea, así como su teclado especialmente diseñado para escribir con los pulgares. Entre los nuevos modelos figuran el BlackBerry Storm (touchscreen), el Torch y el Bold 9700 Todo el S.O. y las aplicaciones pre-instaladas son software completamente privativo.
  • 14.
    Principales Plataformas Móviles BlackBerry OS Características principales: ● Arquitectura de Hardware: ARM, Xscale ● Programado en C++ ● Kernel basado en Java ● Desarrollo de apps en Java ● Multitarea
  • 15.
  • 16.
    Principales Plataformas Móviles Usadoen los smartphones de Nokia. Se ha convertido en la plataforma móvil más utilizada a nivel mundial con más de 400 millones de dispositivos vendidos. El lanzamiento más reciente se llama Symbian Anna y esta disponible en los smartphones N8, E7, X7 entre otros. Aunque cierta parte del código fuente esta licenciado bajo la Eclipse Public License, compatible con la GNU GPL; la mayor parte del código se encuentra bajo una licencia propietaria llamada SFL.
  • 17.
    Principales Plataformas Móviles Característicasprincipales: ● Arquitecturas de Hardware: ARM y x86 ● Qt como interfaz de usuario ●Desarrollo nativo de apps en C++ estándar, alternativamente se puede usar Phyton, Java ME o Adobe Flash ● Usa un micro-kernel llamado EKA2 ● Multitarea y protección de memoria
  • 18.
  • 19.
    Principales Plataformas Móviles Android Esta compuesto por el Sistema Operativo, las herramientas de desarrollo y los dispositivos que lo ejecutan. Es la plataforma con mayor crecimiento haciendo que los analistas esperen que se convierta en la #1 del mercado en los próximos años. Fue desarrollado inicialmente por Android Inc. que posteriormente fue comprada por Google en 2005. Actualmente su desarrollo esta a cargo de la Open Handset Alliance (OHA), un grupo de empresas de software, fabricantes de dispositivos móviles y operadores, y que es liderado por Google.
  • 20.
    Principales Plataformas Móviles Android La primera versión fue lanzada en octubre de 2008 en el T-Mobile G1. Recientemente el S.O. ha sido fragmentado en versiones para smartphones y versiones para tablets (conocidas bajo el nombre de Honeycomb). No obstante Google ha prometido integrar estas versiones con el lanzamiento de Android 4 (Ice Cream Sandwish) al final de este año. Aunque su código fuente completo ha sido liberado en las versiones para smartphones bajo la Licencia Apache -aprobada por la FSF-, el código fuente de las versiones para tablets únicamente está disponible para los miembros del OHA. Sin embargo, Google anunció liberarlo como parte del lanzamiento de Android 4.
  • 21.
    Principales Plataformas Móviles Android Principales características ● Núcleo Linux 2.6 ● Arquitectura de Hardware: ARM, MIPS y x86 ● Desarrollado de apps en C++ y Java ●Soporte de CPUs multi-core y aceleramiento gráfico por hardware ● Android Market con más de 250,000 apps
  • 22.
    Ventajas y Libertadesde Android ● Completamente Software Libre, no utiliza componentes privativos ● Aprovecha las últimas tecnologías de los dispositivos móviles. ● Es la plataforma con más crecimiento de mercado ● Flexibilidad para reemplazar cualquier aplicación nativa por aplicaciones de terceros. ● Implementado en multitud de dispositivos de diferentes fabricantes ● Las aplicaciones no necesitan estar firmadas digitalmente para acceder a todas las capacidades ● Comunidad más grande de desarrolladores ● El costo de subir apps gratuitas en Android Market es casi cero, solamente se paga una cuota de inscripción de $25.
  • 23.
    Desarrollo de Appspara Android Arquitectura de componentes del Sistema Operativo
  • 24.
    Desarrollo de Appspara Android Podemos escribir nuestras aplicaciones Android en Java o C++. Para ejecutar apps en Java, Android posee su propia implementación de la JVM llamada Dalvik, la cual utiliza sus propias librerias y APIs y esta diseñada para correr múltiples instancias eficientemente. Herramientas de Desarrollo Para comenzar a desarrollar en Android, necesitamos las siguientes herramientas: ● Android SDK ● IDE (Entorno Integrado de Desarrollo) ● Plugin ADT para el IDE
  • 25.
    Desarrollo de Appspara Android Características destacadas de las Apps ● Acceso al hardware, incluyendo cámara, GPS y acelerómetro. ● Servicios de Fondo. Permiten ejecutar procesos en segundo plano, mientras estas usando una aplicación interactiva. ● SQLite. Puedes usar esta librería para almacenar y acceder datos de tu app mediante consultas SQL. ● Datos compartidos y comunicación entre aplicaciones. Una aplicación puede requerir acceso a la base de datos privada de otra app y enviarse mensajes entre si durante su ejecución
  • 26.
    Desarrollo de Appspara Android Componentes de Aplicaciones Son los bloques esenciales de construcción de una aplicación Android. Los tipos de componentes son: ● Actividades. Corresponden a una única pantalla de la interfaz de usuario de nuestra app. ● Servicios. Se ejecutan en segundo plano. No poseen UI, en su lugar muestran notificaciones y abren Actividades ● Proveedores de Contenido. Sirven como almacenamiento compartido entre aplicaciones, por ejemplo, el directorio de contactos.
  • 27.
    Desarrollo de Appspara Android Componentes de Aplicaciones ● Intentos (en inglés Intents). Permiten el paso de mensajes dentro y entre aplicaciones. Pueden estar dirigidas a una Actividad o Servicio especifico, o a todo el sistema en el caso de una solicitud de un servicio. ● Destinarios de broadcast (en inglés broadcast receivers). Responden a las solicitudes de servicio de los intentos. Son útiles cuando necesitas que tu aplicación ejecute determinadas acciones en respuesta a ciertos eventos.
  • 28.
    Desarrollo de Appspara Android Recursos Casi siempre es una buena práctica mantener recursos que no son código de programación fuera del mismo, por ejemplo, imágenes, colores, traducciones, UI. Android trae por defecto un Administrador de Recursos que dinámica y automáticamente carga los recursos cuando los referenciamos desde nuestro código. Cuando desarrollamos para Android utilizaremos frecuentemente los recursos ya que nos permiten implementar más facilmente apps que se adaptan automáticamente a las especificaciones de los dispositivos.
  • 29.
    Desarrollo de Appspara Android Implementando una Interfaz de Usuario El método más sencillo de implementar un UI es través del editor visual que trae incorporado el plugin ADT de Eclipse, el cual automáticamente genera el correspondiente recurso XML.
  • 30.
    Desarrollo de Appspara Android Ciclo de Vida de las Actividades
  • 31.
    Muchas gracias porsu atención.