Computacion DSS 2005/1
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 maquina 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 !!!
Arquitecturas de 2 y 3+ capas Servidor de BD cliente Servidor de aplicaciones Servidor web cliente Servidor de BD
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
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
¿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
Portlets y Web services Donde va que Portlets y Web services Servidor de aplicaciones Servidor web Cliente: Browser web Servidor de BD Servidor web y Servidor de aplicaciones Páginas HTML -Java Script -JSP EJB Comunicación por medio de JDBC
Qué necesito para desarrollar programas en Java Hay muchos ambientes de desarrollo (comerciales y gratis) para java Para este curso usaremos lo más sencillo, pero a veces no muy efiente (especialmente si se trata de desarrollar interfaces gráficas) Vamos a necesitar: Un editor de texto El compilador la JVM También llamados JDK o SDK
Cómo se escriben y se corren programas autónomos en Java ? MyProg.class Java VM (java) MyProg.java class { int i,j; public main Java Java compiler (javac) Java source code
Cómo obtengo e instalo java ? se puede obtener de http://java.sun.com/ (ir a downloads) Hay diferentes versiones de java, lo más “sano” es bajar la Ultima versión (version 1.5) Este es un archivo ejecutable para windows (un computador PC estándar) que hay que echar a andar haciendo dobre click sobre él, una vez bajado. Seguir instrucciones....
Afinando la instalación Los archivos que implementan el sistema J2SDK quedan normalmente en un directorio llamado C:\j2sdk1.4.1_01 En el directorio C:\j2sdk1.4.1_01\bin están los programas javac y java La instalación generalmente permite que java pueda ser invocado de cualquier parte pero no javac Solución 1 (fácil pero no elegante) : trabajar siempre en el directorio C:\j2sdk1.4.1_01\bin (es decir, poner ahí todos los programas Solución 2 (no tan fácil pero elegante) : poner el directorio C:\j2sdk1.4.1_01\bin en la variable de ambiente PATH
Qué hace a Java un lenguaje multiplataforma Program’s output P1.java P1.class Java compiler (específico para cada plataforma) javac P1.java Intérprete de Java (específico para cada plataforma) también llamado el JVM java P1
Problema 1 Escribir un programa que instruya al computador para que establezca el siguiente diálogo con una persona (usuario) computador > Hola, ingresa un número: 1234 computador > Mi nímero es 1235 computador > Asi que yo gano esta vez El número es ingresado por el usuario (en azul) puede ser cualquiera pero el computador siempre debe responder con un valor mayor
Mi primer programa en Java public class Programm1 { public static void main(String args[]) { Console consola = new Console(); c.print(”Hola, Ingresa un número : "); int tuNumero; tuNumero = consola.readInt(); consola.print(" Mi numero es "); consola.print(tuNumero+1); consola.println(”Asi que yo gano esta vez !") } Azul: estándar Rojo: Tipos de datos Verde: Variables
Explicaciones del caso Console consola = new Console(); abre una consola en la pantalla del computador desde la cual es posible leer valores que entrega el usuario e imprimir mensajes. Creo un objeto nuevo de timpo consola el cual lo identificará con el nombre consola consola.print(“....”); imprime en la consola la frase encerrada entre las comillas int tuNumero; declara una variable: le pide al computador que reserve memoria para guardar un valor al cual llamará tuNumero durante el programa. Se debe indicar el tipo de valor que se va a guardar tuNumero = consola.readInt(); queda esperando que el usuario ingrese por teclado un número entero en la consola y lo guarda (asigna) en la variable tuNumero consola.rpintln(“...”); igual que print pero se salta a la línea siguiente (lo que venga después quedará en la línea siguiente)
Más explicaciones del caso La consola no es un tipo de objeto que exista en el lenguaje Java !!!! Fue desarrollada para este curso de modo de hacer la lectura/escritura (entrada/salida) de datos hacia/desde un programa más fácil Esto implica que hay que hacer “visible” esta nueva clase de objeto al programa que uno está escribiendo Hay 2 formas: poner todos los archivos que ayudan a definir la clase Console en el mismo directorio (son 4 !!!) Hacer un archivo jar con los 4 archivos y utilizarlo durante la compilación
Problema 2 Escribir un programa que instruya al computador para que establezca el siguiente diálogo con una persona (usuario) comp > Hola, como te llamas ? Nelson comp > Qué año naciste ? 1964 comp > Nelson, tienes más o menos 38 año El computador debe calcular la edad al 31 de Diciembre del 2002
Mi segundo Programa public class Programm2 { public static void main(String args[]) { Console c = new Console(); c.print(”Hola, Como te llamas ?"); String name = c.readString(); c.print(”Qué año naciste ? "); int jahr = c.readInt(); int edad = 2002-jahr; c.println(name+", entonces tienes mas o menos "+ edad+" años "); } Azul: estándar Rojo: Tipos de datos Verde: Variables
Variante 1 del Problema 2 Escribir un programa que instruya al computador para que establezca el siguiente diálogo con una persona (usuario) comp > Qué año naciste ? 1964 comp > Qué mes naciste ? 4 comp > Qué día naciste ? 5 comp > has vivido cerca de xxx dias El computador debe calcular los días que ha vivido hasta al 31 de Diciembre del 2002. Suponga que un año tiene siempre 365 días, y un mes 30 días
Variante 2 del Problema 2 Escribir un programa que instruya al computador para que establezca el siguiente diálogo con una persona (usuario) comp > Qué año naciste ? 1964 comp > Qué mes naciste ? 4 comp > Qué día naciste ? 5 comp > Qué año es hoy ? 2003 comp > Qué mes es hoy ? 3 comp > Qué día es hoy ? 20 comp > has vivido entonces xxx dias El computador debe calcular los días que ha vivido hasta el día de hoy