Java TM MicroEdition -Conceptos Básicos-



Documentos relacionados
INTRODUCCIÓN A LA PROGRAMACIÓN DE DISPOSITIVOS MÓVILES

Capítulo 5 Introducción al Desarrollo de Aplicaciones Móviles usando J2ME

J2ME (Java to Micro Edition)

Programación para sistemas en red IV. Conceptos básicos II

J2ME ENTORNO DE EJECUCIÓN. Un entorno de ejecución determinado de J2ME se compone entonces de una selección de:

Sebastián García Galán

Programación para sistemas en red IV. Tomar información desde la pantalla

DIRECCIÓN REGIONAL DE EDUCACIÓN PUNO INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO MACUSANI

Implementación de tecnologías móviles para celular en una biblioteca universitaria

J2ME Programando un cronómetro para nuestro celular

Taller de Programación de Dispositivos Móviles. José Miguel Rubio L. Oficina

1. INTRODUCCIÓN Y OBJETIVOS

>> Programación de dispositivos móviles.

Sistema Web con Acceso a Bases de Datos Multiplataforma a Través de Teléfonos Celulares

Lic. Sofia J. Vallejos

Visualización y modelado de elementos geográficos en dispositivos móviles. Capítulo 5: Aplicaciones cliente

Moving Java into mobile phones

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificar problemas y proponer soluciones integrando las tecnologías emergentes en Internet.

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

Uso de excepciones en Java

Tópicos Selectos de Programación

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Unidad I. Introducción a la programación de Dispositivos Móviles (Continuación )

Sebastián García Galán

Java, JavaME y el entorno Eclipse - Ejercicios

JAVA PARA PRINCIPIANTES

Tema 2. El lenguaje de programación Java (Parte 1)

Taller de Sistemas de Información 3. J2ME Java 2 Micro Edition

Programación para sistemas en red IV. Manejo de gráficos

Objetivo de aprendizaje del tema

Desarrollo de Servicios Web con JBuilder

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Programación Orientada a Objetos con Java

Java en 2 horas. Rodrigo Santamaría

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Programación Orientada a Objetos. Java: Excepciones

Entidad Formadora: Plan Local De Formación Convocatoria 2010

Tema 1. Introducción a JAVA

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

INTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Tecnologías de Programación Web Dr. Diego C. Martínez. Depto de Cs e Ing. de la Computación Universidad Nacional del Sur.

Digifort Mobile Manual Version 1.0 Rev. A

Programador en Plataforma Java y XML

Elementos léxicos del lenguaje de programación Java

Repaso de las características más importantes de la programación Java y su adaptación a Android

Mejor tecnología para aplicación práctica NOMAD

Formación a distancia de EXPERTO EN PROGRAMACIÓN EN JAVA

EXPERTO EN DESARROLLO DE APLICACIONES PARA DISPOSITIVOS MÓVILES

Utilización de J2ME sobre Linux en plataformas embebidas

ESCUELA POLITÉCNICA DEL EJÉRCITO

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Universidad ORT - Arquitectura de Software. Requisitos

Scientia Et Technica ISSN: Universidad Tecnológica de Pereira Colombia

Programación Orientada a Objetos. Java: Excepciones

Tema 2: La Tecnología Java

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Computación III. Objetivo de aprendizaje del tema

Capitulo 4. JavaFX. Se da a conocer la plataforma de desarrollo JavaFX, los niveles en el cual se encuentra

Instrucciones para la instalación de IBM SPSS Data Access Pack para Linux

ACCESS CONTROL. Aplicación para control y gestión de presencia. (Versión. BASIC) 1 Introducción. 2 Activación del programa

Programació de jocs per mòbils amb J2ME.

Introducción a la Programación en Java. Page 1

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

Login y Password. Elección de directorios confidenciales

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Capitulo 1: Plataforma Android

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

LABORATORIO 2. La biblioteca a nivel de usuario semso (semáforos Sistemas Operativos) brinda las siguientes primitivas:

Ejercicio 1 (3 puntos).-

Manual del Protocolo XML-RPC de Mensajería Negocios

SISTEMA LOGÍSTICO DE ACCESO DE TERCEROS A LA RED (SL-ATR)

P r e g u n t a s m á s F r e c u e n t e s :

SISTEMA LOGÍSTICO DE ACCESO DE TERCEROS A LA RED (SL-ATR)

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Instalación del Software Magaya

Manual de Referencia. Manual de instalación rápida SQL

Desarrollo de software para móviles con Java 2 Microedition

JAVA EE 5. Arquitectura, conceptos y ejemplos.

PROGRAMACIÓN DE JUEGOS PARA MÓVILES CON J2ME

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Centro de intermediación

SISTEMA DE APRENDIZAJE PARA DISPOSITIVOS MÓVILES. AUTORES Carlos Manso Pérez Patricia Martín Gutiérrez TUTORA Carmen Quintano Pastor

JAVA SE STANDARD EDITION

Un breve resumen del lenguaje Java

Desarrollo de Aplicaciones Móviles. Java

Introducción a la programación orientada a objetos

BANCO DE REACTIVOS DE OPCIÓN MÚLTIPLE

Descripción del Sistema: Arbutus Windows Server

1. Visión general de RMI

Visor de presupuestos en Android

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:

2. Estructura de un programa en Java

Transcripción:

Java TM MicroEdition -Conceptos Básicos- Pontificia Universidad Javeriana Computación Móvil 2008/01 Historia Enero 15, 1991: Green Project : Qué hacer a cerca de tanta variedad de dispositivos electrónicos? 1999: Java se subdivide en: Java 2 Enterprise Edition. (J2EE) Java 2 Standard Edition. (J2SE) Java 2 Micro Edition (J2ME) 2001: Primeros teléfonos móviles con soporte J2ME. Cerca de 1 Millón de descargas de Java EE.

Historia 2002: 78% de las ejecuciones de J2EE son más efectivas para el desarrollo y despliegue de WS. Segunda versión de Mobile Information Device Profile (MIDP). 2005: 4.5 millones de desarrolladores usan Java 2.5 billones de dispositivos con Java. 700 millones de teléfonos móviles con soporte Java 2006: Las tecnologías Java SE y ME son relanzadas como Open Source. Acerca de la Plataforma JME Plataforma creada para manejar las restricciones asociadas con la construcción de aplicaciones en dispositivos pequeños. Existe un proceso de estandarización de los componentes, especificados en JSR (Java Specification Request). JME se basa en stack = configuración + profile(s) + APIs opcionales.

Acerca de la Plataforma JME Una configuración provee el más básico conjuntos de librerías y las capacidades de la máquina virtual para un amplio rango de dispositivos. Un profile es un conjunto de APIs (UI, Almacenamiento permanente) que soportan un restringido rango de dispositivos. Paquetes opcionales con un conjunto de APIs(Bluetooth,Multimedia, Mobile 3D) de tecnología específica. Acerca de la Plataforma JME

Acerca de la Plataforma JME La plataforma se ha dividido en dos configuraciones básicas: Configuración para dispositivos pequeños llamado Connected Limited Device Profile (CLDC). Configuración para dispositivos de mayor capacidad llamado Connected Device Profile (CDC). CLDC Especificación CLDC 1.1 (JSR 30/139). Requisitos: Al menos 160-192 KB de memoria total disponible para la plataforma Java. Un procesador de 16/32 bits. Entre 8 a 32 MHz. Bajo consumo de energía. Conectividad de red: Inalámbrica, conexiones intermitentes y limitado ancho de banda.

CLDC Es necesario disponer de una máquina virtual especial: KVM (Kilo Virtual Machine). Es suficiente una cantidad de memoria total para las aplicaciones JAVA entre 160 KB y 512 KB. (RAM + Flash) Hasta 2MB incluyendo el perfil y paquetes opcionales. Velocidad de red de 9600(normalmente) o menos. CLDC 1.1 Los paquetes y algunas de las clases que se soportan en CLDC 1.1 son: java.lang.thread java.lang.string java.lang.boolean java.lang.byte java.lang.short java.lang.integer

CLDC 1.1 java.lang.long java.lang.float java.lang.double java.lang.character java.util.vector java.util.hashtable CLDC 1.1 java.io.inputstream java.io.outputstream java.io.datainputstream java.io.dataoutputstream java.io.reader java.io.writer

Profiles(Perfiles) El Perfil para Dispositivos de Información Móvil(MIDP) define las clases para las aplicaciones que se ejecutan en teléfonos personales y Pocket PC de poca capacidad. Incorpora clases para ciertas acciones extendiendo las capacidades de una configuración, para completar su funcionalidad y el uso de los elementos que proporciona un dispositivo. Profiles(Perfiles) Los perfiles tienen sus pros y sus contras. Pros? Contras? El principal perfil y el más utilizado es MIDP. MIDP se basa en CLDC. MIDP no permite acceder al S.O., x? Aplicaciones elaboradas basándose en el perfil MIDP se conocen como MIDlets. MIPD provee: Entorno de Ejecución MIDlet Interfaz de usuario Entorno de Red Almacenamiento Persistente (+-)

MIDP 2.0 Requisitos: Memoria: Mínimo 128KB de RAM 8 KB en memoria no volátil donde los MIDlets pueden colocar información. Pantallas de 94*54 pixels. Capacidad de ingreso de datos (variada) y de conexión de red. Ventajas: WORA: Write Once, Read Anywhere. Security: Sandbox KVM. MIDP 2.0

MIDP 2.0 Cada MIDlet debe extender de javax.microedition.midlet.midlet. La constructora no tiene argumentos. Conceptualmente los MIDlets son similares a los applets. Pueden ser descargados. Ejecutan en el entorno del dispositivo. Se deben tener una implementación por los métodos que controlan el ciclo de vida de la aplicación. MIDP 2.0 Ciclo de vida: Un MIDlet durante su ciclo de vida (crea/destruye) puede atravesar por diferentes estados. Los estados son: DETENIDO: Mantiene los recursos mínimos y admite notificación asincrónica, se encuentra en espera. MIDlet creado pero todavía no se ha ejecutado por primera vez el método startapp(). Provocado por llamadas a los métodos pauseapp() o notifypaused().

MIDP 2.0 ACTIVO: Estado de ejecución que se entra después de la ejecución inicial del método startapp(). Se puede estar en este estado por la recuperación mediante la llamada al método resumerequest() al estar en una pausa. DESTRUIDO: Estado provocado por la invocación de los métodos destroyapp() o notifydestroyed(). Al estar en este estado no podrá realizar ninguna transacción a otro estado, finaliza el MIDlet. MIDP 2.0

MIDP 2.0 Ciclo de Construcción: Editar código fuente Compilar Distribución: (Aplicación) MIDlets+Clases+Recursos+Manifiesto: JAR Manifiesto: Describe el contenido del archivo (versión de CLDC y MIDP, nombre, versión y vendedor). Descriptor de la aplicación(*.jad): información similar como la del manifiesto (+MIDlet-Jar-Size, MIDlet-Jar-URL), archivo externo. Algunas veces usado para la instalación. MIDP 2.0

Interfaz de usuario: MIDP 2.0 Obj: Escribir una vez y correr en cualquier lugar. WORA es falso: Diferentes tamaños de pantalla. Colores diferentes. Diferentes capacidades de entrada. MIDP 2.0 Abstracción (Método preferido) Especifica una interfaz de usuario en términos abstractos. Descubrir (Juegos) Aplicación aprende acerca del dispositivo. Tamaño de la pantalla (escalable).

MIDP 2.0 UI: Vista desde arriba. La clase de la UI es javax.microedition.lcdui La pantalla del dispositivo se representa por un Display(getDisplay()). Display(Base) Canvas: (Descubrir/Juegos) Screen: (Abstracción) MIDP 2.0 Cambiar el contenido del display: setcurrent(). Secuencia típica: Mostrar una pantalla. Esperar una entrada. Decidir cual es la siguiente pantalla. Repetir.

Herramientas / Kits de desarrollo Sun s MIDP reference Implementation Sun J2ME Wireless Toolkit IDE: Netbeans + Mobility Pack IBM WebSphere Sun Java Wireless Toolkit

Sun Java Wireless Toolkit MSA: Mobile Service Architecture Base del código import javax.microedition.lcdui.*; // Paquete para el manejo de la UI en un MIDlet import javax.microedition.midlet.midlet; // Paquete para usar el perfil MIDlet public final class clasepersonal extends MIDlet implements CommandListener { /** * Crea la forma donde se despliega la calculadora */ protected void startapp() { /** * Mètodo de destrucción de la aplicación */ protected void destroyapp(boolean unconditional) { /** * Método de pausa de la aplicación */ protected void pauseapp() { public void commandaction(command c, Displayable d) { /** * Extraer el número en el tipo primitivo adecuado de una caja de texto * * @param t la caja de texto donde se va a sacar el número * @param type la cadena de caracteres con el argumento numérico * @throws NumberFormatException */ private double getnumber(textfield t, String type) throws NumberFormatException { // final de la clase

Base del código /** El num max de caracteres. */ private static final int NUM_SIZE = 5; /** Botón de salir */ private final Command exitcmd = new Command("Salir", Command.EXIT, 2); /** Botón de Operar */ private final Command calccmd = new Command("Operar", Command.SCREEN, 1); /** Caja de texto donde se recibe el primer argumento */ private final TextField t1 = new TextField(null, "", NUM_SIZE, TextField.DECIMAL); /** Caja de texto donde se recibe el segundo argumento */ private final TextField t2 = new TextField(null, "", NUM_SIZE, TextField.DECIMAL); /** Caja de texto donde se despliega el resultado */ private final TextField tr = new TextField("Resultado", "", NUM_SIZE, TextField.UNEDITABLE); /** Un grupo de selección con las opciones funcionales de la calculadora*/ private final ChoiceGroup cg = new ChoiceGroup("", ChoiceGroup.POPUP, new String[] { "sumar", "restar", "multiplicar", "dividir", null); /** Ventana de alerta para el despliegue de errores */ private final Alert alert = new Alert("Error", "", null, AlertType.ERROR); /** Indica si la aplicación esta inicializada */ private boolean isinitialized = false; Base del código protected void startapp() { if (isinitialized) { return; Form f = new Form("Ejemplo de una calculadora"); f.append(t1); f.append(cg); f.append(t2); f.append(tr); f.addcommand(exitcmd); f.addcommand(calccmd); f.setcommandlistener(this); Display.getDisplay(this).setCurrent(f); alert.addcommand(new Command("Back", Command.SCREEN, 1)); isinitialized = true;

Base del código /** * Acciones asociados a los eventos de los botones. * @param c nombre del objeto * @param d forma de despliegue que contiene el objeto donde se desarrolla la acción. */ public void commandaction(command c, Displayable d) { if (c == exitcmd) { destroyapp(false); notifydestroyed(); return; double res = 0.0; try { double n1 = getnumber(t1, "uno"); double n2 = getnumber(t2, "dos"); switch (cg.getselectedindex()) { case 0: res = n1 + n2; break; case 1: res = n1 - n2; break; case 2: res = n1 * n2; break; case 3: res = n1 / n2; break; default: catch (NumberFormatException e) { return; catch (ArithmeticException e) { alert.setstring("división por cero"); Display.getDisplay(this).setCurrent(alert); return; /* * El resultado */ String res_str = Double.toString(res); if (res_str.length() > tr.getmaxsize()) { tr.setmaxsize(res_str.length()); tr.setstring(res_str); Base del código

Base del código private double getnumber(textfield t, String type) throws NumberFormatException { String s = t.getstring(); if (s.length() == 0) { alert.setstring("no " + type + " Argument"); Display.getDisplay(this).setCurrent(alert); throw new NumberFormatException(); double n; try { n = Double.parseDouble(s); catch (NumberFormatException e) { alert.setstring(type + " argument fuera del rango."); Display.getDisplay(this).setCurrent(alert); throw e; return n; Bibliografía http://www.java.com/en/javahistory/timelin e.jsp http://www.java.com/en/javahistory/video.j sp http://ils.unc.edu/blaze/java/javahist.html