¿Qué es Java? Java es Introducción a Java Ø Ø Ø Ø Un lenguaje de programación Un entorno de desarrollo Un entorno de ejecución de aplicaciones Un entorno de despliegue de aplicaciones Utilizado para desarrollar, tanto applets como aplicaciones Introducción a Java. POO 2004 1 Lenguajes Orientados a Objetos n Herramientas n n n Compilador de Java Javac Generador de Documentación Javadoc Depurador de programas Entorno de ejecución con Maquina Virtual (JVM) n n JRE Independencia de Plataforma Introducción a Java. POO 2004 4 Facilitar un entorno interpretado para: 1. w Software para dispositivos electrónicos inteligentes (e.g. televisión). w Desarrollar un entorno de operación portable, seguro, y eficiente . 1993 Internet y Worl Wide Web Reorientación hacia WWW 1995 Java y distribución gratuita Integración en los navegadores comerciales 2. n 5 Aumentar la velocidad de desarrollo Generar código portable Permitir al usuario ejecutar más de una hebra a la vez. Soportar cambios dinámicos en tiempo de ejecución. Proporcionar más seguridad. Las siguientes características cumplen los objetivos: n Introducción a Java. POO 2004 Strings, procesos, I/O, propiedades del sistema (fecha, hora), Applets, API de red, Seguridad, JDBC Objetivos de Java 1991 Proyecto Green (Sun) n Leguaje de programación Java Bibliotecas (o JavaCore) 3 Historia de Java n 2 ¿Qué es Java? La sintaxis de Java es similar a C++ en expresiones y sentencias de control de flujo. Las expresiones OO es similar en -protección de acceso a clases -constructores y declaración de métodos Java es similar a SmallTalk en: - Modelo de objetos: herencia simple, acceso a objetos por referencias - Compilación a bytecode interpretable - Memória dinámica y recolector de basuras Introducción a Java. POO 2004 Introducción a Java. POO 2004 n La máquina virtual Java (JVM). Garbage collection. Seguridad de código Introducción a Java. POO 2004 6 1 ¿Qué es el lenguaje Java? La máquina virtual de Java Lenguaje de programación orientado a objetos n n n n n n Encapsulación, herencia y polimorfismo Interpretado Independiente de la arquitectura y portable Fuertemente tipado Gestión automática de la memoria (recogida de basura) Gestión de excepciones, concurrencia (multihilo) Programming API n Proporciona las especificaciones de hardware. Lee bytecodes independientes de la plataforma. Se puede emular por software o implementar en Hardware. Se implementa con la herramienta de desarrollo de Java. Introducción a Java. POO 2004 9 La máquina virtual de Java STATIC ( variables de clase) Java Exam Pila (STACK) (local variables) main() e Programming API JVM Platform Interface Introducción a Java. POO 2004 Windows JVM Platform Interface Windows UNIX UNIX 8 Proporciona definiciones para: n n n n n n El conjunto de instrucciones (equivalente al de una CPU) Los registros del sistema. El formato de los archivos de clases. La pila. El Garbage-collector. El área de memoria. Los bytecodes deben mantener las especificaciones de tipo. Gran parte de la verificación de tipo, se realiza en el proceso de compilación. Cualquier intérprete compatible con Java, debe ser capaz de ejecutar cualquier programa con archivos Introducción a Java. POO 2004 de clase, definidos en las especificaciones de la 10JVM. La memoria reservada que no se va a utilizar más, se tiene que liberar. En otros lenguajes (como C++, PASCAL), la liberación de memoria es responsabilidad del programador. El lenguaje Java proporciona un thread, que rastrea las operaciones de reserva de memoria. El Garbage Collector: Verifica y libera memoria que no se necesita. Se ejecuta automáticamente. Question Instance setAnswer() aQuestion q Introducción a Java. POO 2004 Web Browser Browser Programming API El recolector de basuras Question Monticulo (HEAP) (instance variables) Exam Instance .class La máquina virtual de Java Una máquina imaginaria implementada mediante la emulación por software en una máquina real. El código para la máquina virtual Java se almacena en archivos . class, cada uno de los cuales contiene, al menos, el código para una clase pública. La JVM: n Platform Interface 7 La máquina virtual de Java n Java Bytecode java JVM n .java javac Núcleo del lenguaje sencillo extendido mediante una serie de bibliotecas (paquetes) Introducción a Java. POO 2004 Java Source 11 Introducción a Java. POO 2004 12 2 Bibliotecas de clases de Java (packages) Evolución de Java Java IO util awt applet lang net Package lang Clases con funcionalidades básicas, arrays, cadenas de caracteres, Entrada/salida, excepciones, hilos Package util Utilidades (números aleatorios, vectores, propiedades del sistema) Package net Package applet Desarrollo de aplicaciones ejecutables en navegadores Package awt y swing Desarrollo de interfaces gráficas de usuario Etcétera, Conectividad y trabajo con redes: Introducción a Java. POO 2004 sockets, URL etcétera, ... 13 Entorno de desarrollo Java editor Interprete Inicio Clases Clasesjava java (.java) (.java) Leer instrucción javac Øedita HolaMundo.java para codificar la clase HolaMundo con un método main compilador javac bytecodes (.class) 14 Cómo realizar una aplicación Java Máquina virtual Java Clases Clasesjava java (.java) (.java) Introducción a Java. POO 2004 Cargador de clases Biblioteca Clases Java Øjavac HolaMundo.java Crea HolaMundo.class Analizar instrucción aplicación Hola Mundo. Ejecutar instrucción bytecodes (.class) java Intérprete JVM (.zip) > java HolaMundo Introducción a Java. POO 2004 15 Introducción a Java. POO 2004 Instalación gratuita de un JDK (o SDK) Consideraciones www.javasoft.com java.sun.com •Sólo se puede definir una clase pública por fichero fuente. •Si el fichero .java contiene una clase pública entonces debe tomar el mismo nombre de la clase. •La compilación correcta de un fichero .java genera en el mismo directorio un fichero llamado de la misma forma con extensión . class Introducción a Java. POO 2004 16 17 jdk1.5.0 Introducción a Java. POO 2004 18 3 Aplicación HolaMundo desde consola Variables del Sistema (W98: autoexec.bat) class HolaMundo { public static void main(String[] args) { System.out.println(“Hola Mundo”); } } >> edita edita HolaMundo.java HolaMundo.java >> javac javac HolaMundo.java HolaMundo.java PATH : Se debe incluir en PATH la ruta a javac, por ejemplo, c:\jdk1.5.0\bin CLASSPATH: Se debe incluir en CLASSPATH la ruta al directorio de clases. También se puede indicar en el interprete: java HolaMundo –cp c:\DirectorioDeClases Sugerencia: >>java java HolaMundo HolaMundo Hola Hola Mundo. Mundo. Invoca Invocaelelmétodo métodomain main()()de dela laclase claseHolaMundo HolaMundo Introducción a Java. POO 2004 19 Variables del Sistema en W2000 o XP JDK de SUN (presente en cualquier entorno de desarrollo) Comerciales (existen versiones de evaluación) Jbuilder de Borland, www.borland.com/jbuilder Visual J++ de Microsoft Visualage de IBM, integrado en WebSphere Entornos gratuitos recomendados: JCreator Eclipse, de IBM 21 Introducción a Java. POO 2004 22 Indicación de un JDK en JCreator Descarga de JCreator Introducción a Java. POO 2004 20 Entornos de Desarrollo Panel de Control /Sistema/ Opciones Avanzadas/ Variables de Entorno Introducción a Java. POO 2004 Introducción a Java. POO 2004 23 Introducción a Java. POO 2004 24 4 Creación de un WorkSpace con JCreator Introducción a Java. POO 2004 Creación de un Proyecto con JCreator 25 Creación de una Clase con JCreator Introducción a Java. POO 2004 27 Ejecutable en múltiples plataformas Fácil de distribuir n Seguridad n Soporte para interacción con el usuario: Introducción a Java. POO 2004 Aplicaciones n n Programas habituales sin ningún tipo de restricción Ejecución con el intérprete de códigos de byte Applets n n w Gráficos n w Tipos de datos arbitrarios w Descarga el servidor Introducción a Java. POO 2004 28 Aplicaciones y applets Lenguaje de programación adecuado para Internet n 26 Nuestro primer programa: Hola Mundo Java e internet n Introducción a Java. POO 2004 29 Programas escritos en Java cuyo código reside en el servidor WWW y que sólo pueden ejecutarse tras ser descargados por un navegador que incorpore Java o en un visualizador especial Se llaman a partir de páginas HTML Tienen limitaciones debido a razones de seguridad w Acceso a sistema de ficheros w Ejecución de otras aplicaciones w Conexiones Introducción a Java. POO 2004 30 5 Modelo de proceso WWW Pulsar enlace WWW con Java Decoficar URL Pulsar enlace Decodificar URL Buscar datos Buscar datos y applets Mostrar Texto & Imágenes Mostrar texto, imágenes y ejecutar Introducción a Java. POO 2004 31 Funcionamiento Java Compilador <APPLET code = "nombre.class"> Introducción a Java. POO 2004 32 Cómo realizar un applet Java Codigos de byte editor Navegador + Java > edita HolaMundoApplet.java Define el método paint() Clases Clasesjava java (.java) (.java) > edita HolaMundoApplet.html Invoca el applet compilador javac Navegador Máquina (Netscape Virtual Explorer) Java Introducción a Java. POO 2004 HolaMundoEnApplet.html Fichero Fichero HTML HTML bytecodes (.class) Navegador o appletviewer 33 Introducción a Java. POO 2004 34 Realización del applet con JCreator Cómo realizar un applet Java <HTML> <HTML> <HEAD> <HEAD> </HEAD> </HEAD> <CENTER> <CENTER> <APPLET <APPLET code=HolaMundoEnApplet code=HolaMundoEnApplet.class" .class" width width == "500" "500" height height== "300" "300" >> </APPLET> </APPLET> </CENTER> </CENTER> </HTML> </HTML> editor > javac HolaMundoApplet.java HolaMundoEnApplet.java import import java.awt.*; java.awt.*; import import java.applet.*; java.applet.*; public public class class HolaMundoEnApplet HolaMundoEnApplet extends extends Applet Applet {{ public public void void init() init() {{ resize resize(150, (150, 125); 125); }} public public void void paint paint(( Graphics Graphics gg )) {{ g.drawLine g.drawLine(10, (10, 10, 10, 100, 100, 10); 10); g.drawString g.drawString(( "Hola "Hola Mundo!",30,30); Mundo!",30,30); g.drawLine (10, 50, g.drawLine (10, 50, 100, 100, 50); 50); }} }} Introducción a Java. POO 2004 35 Introducción a Java. POO 2004 36 6 Realización del applet con JCreator Introducción a Java. POO 2004 Visualización en AppletViewer 37 Introducción a Java. POO 2004 38 Visualización en navegadores Introducción a Java. POO 2004 39 7