UNIVERSIDAD TÉCNOLOGICA DE PANAMÁ FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES Licenciatura en Ingeniería de Sistemas y Computación Desarrollo de Software II “Plataformas J2SE, J2EE, J2ME” Investigación #1 INTEGRANTES Forsythe, Luzmila 8-851-959 Herrera, Alexis 8-844-2167 Muñoz, Alba 8-865-518 Samaniego, Manuel 8-850-487 Villarreal, Alexander 8-843-1762 Grupo: 1IL-112 Prof. Felicita de Krol Fecha de Entrega: 9 de agosto de 2010 ÍNDICE Páginas - Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 - Contenido “Plataformas J2SE, J2EE, J2ME” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Plataforma J2SE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3. Paquetes de Propósito General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5. Utilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Plataformas J2EE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 2.1. Definición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 2.2. Especificaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 2.3. Ventajas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Plataformas J2ME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1. Definición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 3.2. Propósito. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 3.3. Componentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4. Aplicaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 - Cuadro Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 - Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 - Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 INTRODUCCIÓN Java, representa en la programación orientada a objetos uno de los lenguajes que explica mejor este concepto. Su sintáxis, a pesar de que esta basada de lenguajes como C y C++, no conlleva su implementación en una forma tan compleja, pues elimina herramientas de bajo nivel, facilitando así el manejo del lenguaje, permitiendo ejeccutar códigos en sistemas remotos de forma segura y de igual forma ejecutar programas en múltiples sistemas operativos. Dentro del mismo lenguaje, se manejan plataformas que han sido creadas para realizar aplicaciones específicas, y estas aplicaciones estan compiladas en un “bytecode” (código intermedio más abstracto que el código máquina). Y son estas plataformas, en las que debemos pensar en un principio a la hora de crear una aplicación, dependiendo de las necesidades del usuario, así mismo será la plataforma a utilizar. Las plataformas de las cuales hablaremos en el siguiente trabajo investigativo, abarcan la demanda de aplicaciones que se utilizan a nivel mundial, estas son: J2SE, J2EE, J2ME. La plataforma J2SE, es la versión de la plataforma JAVA, en forma estándar y permite crear aplicaciones de tareas comunes y generales. La plataforma J2EE, es la versión “Enterprise”, desarrollada para aplicaciones empresariales, capaz de crear objetos distribuidos EJB's. Finalmente la plataforma J2ME, es orientada a crear aplicaciones para los teléfonos moviles. CONTENIDO “Plataformas J2SE, J2EE, J2ME” 1. PLATAFORMA J2SE 1.1. Definición Java Platform, Standard Edition o Java SE, es una colección de APIs del lenguaje de programación Java útiles para muchos programas de la Plataforma Java. La Plataforma Java 2, Enterprise Edition incluye todas las clases en el Java SE, además de algunas de las cuales son útiles para programas que se ejecutan en servidores sobre workstations. 1.2. Ventajas El utilizar la plataforma J2SE, nos brinda algunas ventajas, entre estas estan: - J2SE es rápido, su tiempo de carga normal se reduce y su rendimiento esta mejorado para 64 bits. - Tiene un funcionamiento más ergonómico. - Reduce el tiempo en el desarrollo, en la codificación y un ahorro en el chequeo de errores. - Las aplicaciones realizadas con J2SE también funciona con 5.0. - Mejora su funcionamiento y tiene mejor monitorización. 1.3. Paquetes de Propósito General • java.lang: El paquete Java java.lang contiene clases fundamentales e interfaces fuertemente relacionadas con el lenguaje y el sistema runtime. Esto incluye las clases raíz que forman la jerarquía de clases, tipos relacionados con la definición del lenguaje, excepciones básicas, funciones matemáticas, Hilos, funciones de seguridad, así como también alguna información sobre el sistema nativo subyacente. • java.io: El paquete java.io contiene clases que soportan entrada/salida. Las clases del paquete son principalmente streams; sin embargo, se incluye una clase para ficheros de acceso aleatorio. Las clases centrales del paquete son InputStream y OutputStream las cuales son clases abstractas base para leer de y escribir a streams de bytes, respectivamente. • java.nio: En J2SE 1.4, el paquete java.nio (NIO o Nueva I/O) fue añadido para soportar I/O mapeada en memoria, facilitando las operaciones I/O cercanas al hardware subyacente con mejor rendimiento. El paquete java.nio suministra soporte para varios tipos de buffer. • java.net: suministra rutinas especiales IO para redes, permitiendo las peticiones HTTP, así como también otras transacciones comunes. • java.text: implementa rutinas de parseo para strings y soporta varios lenguajes legibles por el hombre y parseado específico de la localización. • java.util: Las estructuras de datos que agregan objetos son el foco del paquete java.util. En el paquete está incluida la API Collections, una jerarquía organizada de estructura de datos influenciada fuertemente por considereaciones de patrones de diseño. • java.math: El paquete java.math soporta aritmética multiprecisión (incluyendo operaciones aritméticas modulares) y suministra generadores de números primos multiprecisión usados para la generación de claves criptográficas. Las clases principales de este paquete son: - BigDecimal: suministra números decimales con signo de precisión arbitraria. BigDecimal da al usuario el control sobre el comportamiento de redondeo a través de RoundingMode. - BigInteger: suministra enteros de precisión arbitraria. Las Operaciones con BigInteger no producen overflow o perdida de precisión. Además de las operaciones aritméticas estándar, suministra aritmética modular, y otras operaciones misceláneas. - MathContext: encapsula las configuraciones de contexto las cuales describen ciertas reglas para operadores numéricos. - RoundingMode: una enumeración que suministra ocho comportamientos de redondeo. • Descubrimiento: normalmente empieza con un objeto y llamando al método Object.getClass() para obtener la clase del objeto. El objeto Class tiene varios métodos para descubrir los contenidos de la clase, por ejemplo: - getMethods(): devuelve un array de objetos Method que representan los métodos publicos de la clase o interface. - getConstructors(): devuelve un array de objetos Constructor que representan todos los constructores públicos de la clase. - getFields(): devuelve un array de objetos java/lang/reflect|Field que representan todos los campos públicos de la clase o interface. - getClasses(): devuelve un array de objetos Class representando todas las clases e interfaces públicas que son miembros de la clase o interface. - getSuperclass(): devuelve el objeto Class que representa la superclase de la clase o interface. - getInterfaces():devuelve un array de objetos Class que representan todas las interfaces que se implementan por la clase o la interface. • Streams: Las clases stream siguen el patrón decorator extendiendo la subclase base para añadir características a las clases stream. Las Subclases de las clases base stream son nombradas típicamente por uno de los siguientes atributos: - la fuente/destino de los datos del stream - el tipo de los datos escritos a/leidos del stream - procesamiento adicional o filtrado realizado en los datos del stream Las subclases stream son nombradas usando el patrón naming XxxStreamType donde Xxx es el nombre que describe la característica y StreamType es uno de InputStream, OutputStream, Reader, o Writer. • Sistema de Ficheros: La clase java/io|File representa un path de fichero o directorio en un Sistema de ficheros. Los objetos File soportan la creación, borrado y renombrado de ficheros y directorios y la manipulación de atributos de ficheros tales como solo lectura y tiempo de última vez modificado. Los objetos File que representan directorios pueden usarse para obtener una lista de todos los ficheros y directorios contenidos. La clase java/io|FileDescriptor}} es un descriptor de ficheros que representan una fuente o sumidero (destino) de bytes. Normalmente esto es un fichero, pero puede también ser una consola o un socket de red. Los objetos FileDescriptor se usan para crear streams de File. Se obtienen desde streams File y sockets java.net y sockets de datagrama. • Acceso Aleatorio: La clase RandomAccessFile soporta lectura y escritura de acceso aleatorio de ficheros. La clase usa un puntero a fichero que representa un byte-offset dentro del fichero para la siguiente operación de lectura o escritura. El puntero a fichero se mueve implícitamente leyendo o escribiendo y explícitamente llamando a los métodos java/io|RandomAccessFile|seek(long) o java/io|RandomAccessFile|skipBytes(int). La posición actual del puntero de fichero se devuelve por el método java/io|RandomAccessFile|getFilePointer(). 1.4. Aplicaciones • JAVA: Inicia una Maquina Virtual de Java. La MVJ es un computador abstracto que ejecuta carga y ejecuta programas Java compilados. La MVJ es virtual ya que está implementada en software por encima de una plataforma hardware real y un sistema operativo. Por tanto, la MVJ debe estar implementada en una plataforma particular antes de que los programas se puedan ejecutar sobre esa plataforma. La MVJ proporciona una capa de abstracción entre los programas Java compilados (el bytecode) y la plataforma sobre la que se ejecuta. Esto es importante para asegurar la portabilidad ya que los programas se ejecutan sobre la MVJ, independientemente del hardware sobre el que se está instalada la MVJ. • JAVAC: Programa que transforma el código fuente en bytecode. El bytecode es el lenguaje que ejecuta la Máquina Virtual de Java (MVJ). El compilador de java lee un fichero fuente Java (fichero .java) y traduce el este código a bytecode escribiéndolo en un fichero (o ficheros) .class. Se generan tantos ficheros .class como clases hay en el fichero. Una secuencia de bytecodes representa una serie de instrucciones para la MVJ. • Javadoc: Programa que sirve para generar documentación en formato HTML a partir del fichero con el código fuente o a partir de un paquete. El texto necesario para generar esa documentación se extrae de unos comentarios especiales insertados en el código fuente y que documenta las clases, los métodos, etc. 1.5. Utilidades • Appletviewer: para visualizar applets. • Rmiregistry: para crear un registro de objetos remotos. • Rmic: para generar stubs y skeletons. • Jar: para comprimir o descomprimir ficheros. • Keytool: para gestionar claves y certificados. • Jarsigner: para firmar ficheros jar. 2. PLATAFORMA J2EE 2.1. Definición: Es una plataforma de programación—parte de laPlataforma Java—para desarrollar y ejecutar software de aplicaciones en Lenguaje de programación Java con arquitectura de N niveles distribuida, basándose ampliamente en componentes de software modulares ejecutándose sobre unservidor de aplicaciones. La plataforma Java EE está definida por una especificación. Similar a otras especificaciones del Java Community Process, Java EE es también considerada informalmente como un estándar debido a que los suministradores deben cumplir ciertos requisitos de conformidad para declarar que sus productos son conformes a Java EE; estandarizado por The Java Community Process / JCP. 2.2. Especificaciones Java EE incluye varias especificaciones de API, tales como JDBC, RMI, e-mail, JMS, Servicios Web, XML, etc y define cómo coordinarlos. Java EE también configura algunas especificaciones únicas para Java EE para componentes. Estas incluyen Enterprise JavaBeans,servlets, portlets (siguiendo la especificación de Portlets Java), JavaServer Pages y varias tecnologías de servicios web. 2.3.Ventajas Esta plataforma permite al desarrollador crear una 'aplicación de empresa' portable entre plataformas y escalable, a la vez que integrable con tecnologías anteriores. De igual forma, el servidor de aplicaciones puede manejar transacciones, la seguridad, escalabilidad, concurrencia y gestión de los componentes desplegados, y esto es un avance significativo, puesto que los desarrolladores pueden concentrarse más en la lógica de negocio de los componentes en lugar de en tareas de mantenimiento de bajo nivel. 3. PLATAFORMA J2ME 3.1. Definición Es una especificación de un subconjunto de la plataforma Java orientada a proveer una colección certificada de APIs de desarrollo de software para dispositivos con recursos restringidos. Está orientado a productos de consumo como PDAs, teléfonos móviles o electrodomésticos. 3.2. Próposito Java ME se ha convertido en una buena opción para crear juegos en teléfonos móviles debido a que se puede emular en un PC durante la fase de desarrollo y luego subirlos fácilmente al teléfono. Al utilizar tecnologías Java el desarrollo de aplicaciones o videojuegos con estas APIs resulta bastante económico de portar a otros dispositivos. 3.3. Componentes La edición micro de Java se compone, además del lenguaje, de una máquina virtual, configuraciones, perfiles y paquetes adicionales: • Máquina Virtual: es la base de la plataforma, es el interprete del lenguaje y sobre la cual se han de ejecutar las aplicaciones, también sobre esta máquina virtual corren las configuraciones (CDC y CLDC), las cuales incorporan apis básicas para la creación de aplicaciones y sirven de soporte a los perfiles. Los perfiles incluyen la mayor parte de las clases y apis que se van a utilizar en la programación, como pueden ser instrucciones de entrada y salida o de inicio y terminación de la aplicación. • Paquetes Adicionales: son aquellos que la especificación de la tecnología inalámbrica Java (JSR185) no establece como obligatorios para incorporar en los dispositivos. Ejemplos de esto pueden ser las apis de mensajes inalámbricos (WMAPI) y de multimedia (WMAPI). 3.4. Aplicaciones Entre las principales aplicaciones que se pueden realizar con J2ME, podemos mencionar: • Opera Mini: Opera Mini es el navegador revolucionario para casi cualquier teléfono móvil, comprime y es capaz de accesar a los sitios web, diez veces más rápido. • Mig33: Aplicación de chat para télefonos móviles, con posibilidad de chatear con usuarios de Yahoo y MSN a través de mig, incluyendo otos usuarios de las salas de chat de mig33. • MXit: Es el cliente de Jabber para teléfonos móviles. Capaz de conectar a las aplicaciones de mensajería instantánea preferido, como MSN y ICQ. • Wayfiner: sistema de navegación para tu teléfono móvil desarrollado especialmente para clientes con discapacidad visual. Junto con software de síntesis de voz, como Talks de Nuance Communications o Mobile Speak de Code Factory, Wayfinder Access se convierte en un potente programa audible de navegación a pie. • Litefeeds: es un servicio que nos ofrece de RSS que, además, integra muchas otras funciones que podremos realizar con el contenido que recibimos. Desde la página del programa podemos indicarle cuales serán las fuentes del contenido que queremos recibir, las cuales serán recogidas y comprimidas para ser enviadas al móvil. CUADRO RESUMEN PLATAFORMAS EN JAVA J2SE SIGLAS Java Platform, Standard Edition. J2EE Java Platform, Enterprise Java Platform Micro Edition. Edition. • Javac: Programa que transforma • Aplicaciones Web Java el código fuente en bytecode. • Objetos distribuidos EJBs • Java: Inicia una Máquina Virtual de Java. • Aplicaciones Empresariales APLICACIONES • Javadoc: Programa que sirve para generar documentación en formato HTML. • Opera Mini: navegador web para móviles. • MXit: cliente de Jabber para teléfonos móviles. • Wayfiner: sistema de navegación para clientes con discapacidad visual. • Rmiregistry: Para crear un registro de objetos remotos. • Mobispine: agrupa y agrega feeds RRS al móvil. • Rmic: generar stubs y skeletons. PAQUETES Y CLASES • Mig33: aplicación de chat. • Litefeeds: servicio RSS. • Appletviewer: visualiza applets. • Descubrimiento • Usar por nombre • Arrays y proxies • java.lang • java.lang.ref • java.lang.reflect • java.io - Streams - Acceso aleatorio - Sistema de Ficheros • java.nio • java.math • java.net • java.text • java.util • java.applet • java.beans • java.awt • java.rmi • java.security • java.sql • org.omg.CORBA • javax.swing • javax.swing.text.html.parser J2ME • javax.ejb.* • javax.naming • java.sql • java.transaction.* • javax.xml.* • javax.jms.* • javax.persistence • Information Module Profile (IMP). • Wireless Messaging API (WMA); JSR 120, JSR 205 • Mobile Media API (MMAPI); JSR 135. • Location API for J2ME (JSR-179). • SIP API for J2ME (JSR180). • Security and Trust Services API for J2ME (JSR-177). • Mobile 3D Graphics (JSR184). • J2ME Web Services APIs (WSA), JSR 172. • Bluetooth API (JSR-82, Motorola, Java Partner Site) • J2ME RMI Optional. Package, (RMI OP); JSR 66. • JDBC Optional Package for CDC/Foundation Profile API (JSR-169). CONCLUSIONES Al finalizar, el siguiente trabajo de investigación, hemos podido concluir los siguientes puntos: • J2SE, es la versión estándar de la plataforma JAVA y entre sus ventajas podemos mencionar su rapidez de carga con rendimiento mejorado para 64 bits, y este reduce el tiempo en el desarrollo, en la codificación y un ahorro en el chequeo de errores. • La versión estándar posee funcionamiento más ergonómico y aas aplicaciones realizadas con J2SE también funciona con 5.0. Tiene mejor monitorización. • Entre las aplicaciones más útiles desarrolladas en J2SE estan: Javac, Javadoc, Appletviewer, Rmiregistry y Rmic. • La plataforma J2EE, es aquella versión creada para aplicaciones que necesitan más potencia en su desarrollo, esta incluye todas las clases del Java SE, y además, tiene algunas que son útiles para programas que se ejecutan en servidores de computadores “workstations”. • J2EE, permite al desarrollador crear una 'aplicación de empresa' portable entre plataformas y escalable, a la vez que integrable con tecnologías anteriores. • J2ME es la versión de la plataforma JAVA orientada a los dispositivos móviles. • Debido a la potencia de cálculo baja e interfaces de usuario pobres, se hace necesaria una versión en específico, por lo que J2ME es una versión “reducida” de J2SE. • Se ha hecho muy popular, la creación de juegos con Java ME, pues se puede emular en una PC durante la fase de desarrollo y luego subirlos fácilmente al teléfono. • Algunas aplicaciones populares de JME son: Mig33, Opera Mini, MXit y Litefeeds. BIBLIOGRAFÍA 1. WIKIPEDIA – La Enciclopedia Libre http://es.wikipedia.org/wiki/Java_SE Fecha de Visita: sabado, 7 de agosto 2. MONOGRAFIAS.com - “Apuntes de Java” http://www.monografias.com/trabajos16/java/java.shtml Fecha de Visita: viernes, 6 de agosto 3. JAVA.es – Página Oficial de JAVA Sun Micosystem http://www.java.com/es/download/faq/whatis_j2me.xml Fecha de Visita: sabado, 7 de agosto 4. SLIDESHARE.net – Presentación: “Introducción a la Plataforma JME” http://www.slideshare.net/jimezam/introduccin-a-la-plataforma-j2me Fecha de Visita: sabado, 7 de agosto 5. CIBERAULA Java – “Introducción al J2ME” http://java.ciberaula.com/articulo/introduccion_j2me/ Fecha de Visita: sabado, 7 de agosto 6. DCC.uchile.cl – “Investigación de la Plataforma J2EE y su Aplicación Práctica” http://www.dcc.uchile.cl/~jbarrios/J2EE/ Fecha de Visita: domingo, 8 de agosto