Intruccion a la plataforma Java Nelson Baloian Binaria S.A.
Programa de Charlas Introducción ¿ Qué #*@ es java ? (historia) ¿ Qué se puede hacer con java ? ¿ dónde se usa ?
Programa de Charlas La arquitectura por capas ¿ Qué es la arquitectura por capas ? ¿ Por qué se usa ? ¿ Como la implementa java (J2EE) ? Su principal competidor: .NET La arquitectura por capas implementada en la CGE
Programa de Charlas Introducción a la programación orientada al objeto con Java Las clases Herencia Ejemplos: Programas stand alone Apples Servlets JSP JDBC EJB
Programa de Charlas XML como estándar para el intercambio de información entre aplicaciones Los Web Services Herramientas de apoyo al desarrollo Los IDE (eclipse, NetBeans) Composer Director
Historia de Java A principios de los 90’s se diseña un lenguaje de programación para la programación de dispositivos “caseros” con las siguientes características Independiente de la plataforma Seguro Confiable Orientado al objeto
Independiente de la plataforma No importa qué CPU o sistema operativo se esté usando debería funcionar IGUAL ! Esto implicaba que la única solución plausible era un lenguaje interpretado: Compilación Máquina Virtual de Java Código fuente Bytecode Ejecución del programa Programa1.java Programa1.class
¿Qué es la máquina virtual de Java? Es un sistema operativo que corre sobre otro sistema operativo (por ejemplo windows, linux, MacOS) Existe una diferente para cada sistema operativo pero todas hacen exactamente lo mismo Es capaz de entender código Java compilado y traducirlo en instrucciones propias del sistema operativo sobre el cual corre Máquina Virtual Java Código Java Sistema Operativo Hardware
¡¡¡ La a virtual puede estar en cualquier parte !!! Corriendo directamente sobre el sistema operativo (linux, windows) Para correr aplicaciones stand alone Integrada a un browser web Para correr applets Integrada a un servidor web o Para correr servlets o EJB Integrada en un dispositivo móvil (relojes, teléfonos, etc..)
Seguro, Confiable, OO Seguro Confiable Orientado al Objeto Que no permitiera virus ni caballos de Troya Confiable Que el estilo de programación evitara la introducción de errores en la programación (comparado con C) Orientado al Objeto Es el paradigma que está mas en boga para la programación
La web y Java La programación de aplicaciones y sistemas basados en la web toma mucha importancia Ubicuidad: se puede acceder de cualquier lugar Seguridad: cortafuegos, normalmente el port 80 es el único que recibe requerimientos desde afuera (que es el port donde se atienden los requerimientos web) Las características de Java hacen de éste el lenguaje ideal para la programacìón en la web !!!
¿Qué tipos de programa puedo desarrollar con JAVA ? Todos los archivos java definen una clase Una clase es la definición de un nuevo tipo de objeto, pero según cómo se programe, este “objeto” podrá ejecutarse en determinados ambientes Programas stand-alone Programas autónomos como cualquier otro Se compilan con el compilador de Java y se ejecutan con la máquina virtual (JVM, JRE)
¿Qué tipos de programa puedo desarrollar con JAVA ? Applets Programas que generalmente se bajan desde un sitio Web y se ejecutan dentro de un browser, en el contexto de una página web Para ejecutarlos se necesita que el browser contenga la máquina virtual de Java , en la actualidad (casi) todos lo tienen Java Script Es la versión script de los appets, en el sentido que es código que se ejecuta en el browser. El código viene escrito entre medio del código HTML una página
¿Qué tipos de programa puedo desarrollar con JAVA ? Servlets: Programas que extienden la funcionalidad de un servidor Web Generan dinámicamente código Html que envían al browser que los invocó El servidor Web debe contener la maquina virtual de Java (ejemplo, TOMCAT) JSP (java server pages) Es la versión script de los servlets El código viene directamente escrito en la página web entre medio del código HTML
¿Qué tipos de programa puedo desarrollar con JAVA ? Enterprise Java Beans Pequeños trozos de código que se ejecutan en un servidor de aplicaciones asociado a un servidor Web Independizan el código del “negocio” del de la atención Proveen un conjunto de funciones que facilitan y hacen más eficiente el desarrollo de una aplicación en el contexto de un servidor Web Existen 3 tipos distintos que se usan para diferentes funciones
¿Qué tipos de programa puedo desarrollar con JAVA ? Web Services Se usan para programar funciones al estilo RPC (remote procedures call) Siguen el protocolo SOAP para comunicación de aplicaciones e intercambio de datos en formato XML Se contactan directamente a través de un servidor web
¿ Cómo siguió la historia ? El desarrollo de aplicaciones basadas en la web ha tomado cada vez más importancia El esquema cliente-servidor fue remplazado por la arquitectura de n-capas, donde el cliente se trata de mantener lo más “delgado” posible El mayor peso de la aplicación (tanto en el desarrollo como en la ejecución) recae sobre el servidor
La arquitercura por capas El desarrollo de aplicaciones basadas en la web ha tomado cada vez más importancia El esquema cliente-servidor fue reeplazado por la arquitectura de n-capas, donde el cliente se trata de mantener lo más “delgado” posible El mayor peso de la aplicación (tanto en el desarrollo como en la ejecución) recae sobre el servidor
Arquitecturas de 2 y 3+ capas Servidor de BD cliente Servidor de aplicaciones Servidor web cliente Servidor de BD
Inconvenientes de las arquitecturas de 2 capas Aplicaciones monolíticas difíciles de mantener Toda la inteligencia está en el cliente Los servidores son sólo servidores de datos (se puede contrarrestar en cierta medida con el uso intensivo de SP) Mayor tráfico No se sabe qué recursos tiene el cliente Los clientes son en general poco seguros Distribución del código que cambia Poca reusabilidad del código No está orientado al desarrollo de componentes
Ventajas del esquema de n-capas Clara separación de las funciones de control de la interfaz y presentación de datos con la lógica de la aplicación Reusabilidad de componentes Independencia de la interfaz del cliente y la arquitectura de datos Mejores posibilidades de balancear la carga Uso de protocolos abiertos
J2EE Es un conjunto de especificaciones que implementan una arquitectura abierta de n-capas Incluye muchos elementos que se habían desarrollado en forma “independiente” anteriormente Interoperabilidad gracias a XML y SOAP
J2EE icluye Acceso a bases de datos (JDBC) Utilización de directorios distribuidos (JNDI) Acceso a métodos remotos (RMI, CORBA, SOAP) Funciones de correo electrónico
Diagrama de la Arquitectura J2EE
Los principales elementos de la arquitectura J2EE Cliente Puede ser un programa “stand alone”, un applet dentro de un browser o el browser mismo que contacta un sevlet, un jsp o un web service Contenedor web Contiene (y sabe como hacerlos correr) las páginas html, los servlets, JSP y web services Contenedor de aplicaciones Contiene y administra a los EJB Servidor de base de datos
J2EE en sistemas de la CGE Servidor de aplicaciones Servidor web Cliente: Browser web Servidor de BD Informix Servidor web y de aplicaciones Websphere Páginas HTML Con Java Script Y JSP EJB Comunicación por medio de JDBC
Portlets y Web services Qué más podría haber Portlets y Web services Servidor de aplicaciones Servidor web Cliente: Browser web Servidor de BD Informix Servidor web y de aplicaciones Websphere Páginas HTML -Java Script -JSP EJB Comunicación por medio de JDBC
Caracteríticas de .NET Opera sobre windows 2000 SQL server como motor de bases de datos ASP (active server pages) COM (arquitectura de componentes) Data Acces Objects (activeX) ADO para conexión a base de datos
J2EE vs .NET Ambos tienen los mismos elementos En .NET uno compra el paquete completo, no solo la arquitectura sino que los componentes también .NET es más fácil de aprender, más rápido de desarrollar J2EE es abierto
¿Qué es orientación a objeto ? Es solo una manera de organizar el código. No es que ahora se puedan hacer cosas que antes no se podían !!! Los datos que usa un programa se organizan en objetos Los objeos son una colección de variables asociadas a métodos Métodos que modifican las variables o “estado” de un objeto Métodos que retornan valores que reflejan el “estado” del objeto (valor de sus variables)
¿Por qué orientación al objeto ? Una estrategia para poder desarrollar programas más grandes, más libres de errores y en menos tiempo: Software engineering
Java Viene con muchas clases de objetos definidos Vector: un arreglo de objetos sin límite String: para manejar strings FileReader, File Writer, RandomAccessFile: para manejar archivos HashTable: para mantener tablas de hashing Socket: para establecer comunicaciones Etc.
Algunas clases estan definidas a medias!!! La idea es que el programador las completa Applets Servlets Threads EJB (hay varias clases distintas) Etc..
Cómo se define una clase nueva Definir una nueva clase básicamente significa Definición de las variables que contendrá un objeto Definición de los métodos que se le podrán aplicar a un objeto de esta clase La definición de una clase debe ir en un archivo llamado Classname.java Por convención, el nombre de las clases debe empezar con mayúscula Console String Clock Student
Ejemplo: una clase Clok Las variables son las posiciones de los punteros: segundero, minutero y horario Los métodos son para poner los valores y preguntar “¿qué hora es?” Establecer valores de los punteros Preguntar la hora
Dado un nombre preguntar el teléfono El libro telefónico Las variables son listas de números y nombres Los métodos son para registrar un nuevo par (nombre,número), preguntar el teléfono dado un nombre, cambiar un teléfono o borrar un par Poner nuevo par (nombre, número) Cambiar el número dado un nombre Borrar un par (nombre, número) Dado un nombre preguntar el teléfono
El registro de un estudiante Las variables son los datos relevantes del estudiante (nombre, edad, dirección, etc..) Los métodos son para establecer valores y recuperar estos datos Poner valores Name: Sakano Tepe Address: Musashino-shi. Year Born: 1977 Recuperar valores
Clases y objetos Todo objeto es de una cierta clase La clase define el tipo de objeto, esto es: Qué variables contiene Qué métodos pueden ser aplicados a un objeto de esta clase Objecto A de clase clock Clase Clock Objecto B de clase clock
Diseño de los métodos (1) Clock A = new Clock( ); Clock A; A = new Clock(); A.setTime(15,35,45); int i = A.getHour( ); String s = A.getTime() Crea un nuevo objeto Clock Pone los valores en 15, 35 y 45 recupera el valor del puntero horario recupera un String con hh:mm:ss
Diseño de los métodos (2) Phonebook B = new Phonebook( ); B.addEntry(“Simón Vera”,422596160); long l = B.getNumber(“Simón Vera” ); Crea un libro de teléfonos vacío Dados nombre y número como parámetros crea un entry Simón Vera 422596160 Simón Vera Dado un nombre como parámetro recupera el número 422596160
La clase Clock Un Clock tendrá tres variables (attributes, campos) int hours int minutes int seconds Cada vez que se cree un nuevo objeto Clock sus tres variables valdrán 0 (medianoche) El método setTime() va a poner una nueva hora. Este método requerirá tres parámetros: hh, mm, ss También tendremos 3 métodos que retornarán el valor de cada puntero (por ejemplo El método getTime() retorna un String con la hora en el formato hh:mm:ss
Escribamos el archivo Clock Escribamos el archivo Clock.java, compilémolos y usémolos en un programa Clock A = new Clock( ); A.setTime(15,30,20); int h = A.getHour( ); int m = A.getMinutes(); int s = A.getMinutes(); String s = getTime(); hours minutes seconds 15 30 20 Por convención, los nombres de variables y metodos empiezan minúscuas Clock.java ProgramClock1 ProgramClock2