SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
Introducción al lenguaje Java

                                    Programación Orientada a Objetos
                                             Facultad de Informática


                                                               Juan Pavón Mestras
                                        Dep. Sistemas Informáticos y Programación
                                                   Universidad Complutense Madrid




   ¿Qué es Java?

          brewed coffee
          la bebida preferida de los programadores
          (al menos en USA)




Juan Pavón Mestras
Facultad de Informática UCM, 2004           Java                                    2
Historia de Java

          Abril 1991: Proyecto Green (Sun) software para dispositivos
          electrónicos inteligentes y televisión interactiva. Se trataba de
          desarrollar un entorno de operación fiable, portable y eficiente.
                 El resultado: Lenguaje Oak (James Gosling)

          Principio 1994: El equipo se reduce ante el escaso crecimiento
          del mercado PDA y STB, y tras perder acuerdos con Time-
          Warner y 3DO, se reorienta hacia WWW:
                 Los requisitos del software son los mismos en WWW

          1994: WebRunner (luego HotJava): navegador Web escrito en
          Java
          23 mayo 1995 (SunWorld ‘95): Anuncio de la release alpha de
          Java
                 Java se distribuye gratuitamente

          Finales 1995: Primera integración Netscape+Java


Juan Pavón Mestras
Facultad de Informática UCM, 2004                   Java                      3




   ¿Qué es Java?

          Un lenguaje de programación orientado a objetos
          desarrollado por Sun Microsystems
                 Encapsulación, herencia y polimorfismo
                 Fuertemente tipado
                 Gestión automática de la memoria (recogida de basura)
                 Soporte para concurrencia (multihilo)
                 Gestión de excepciones
                 Constructores independientes de la arquitectura del
                 procesador




Juan Pavón Mestras
Facultad de Informática UCM, 2004                   Java                      4
¿Qué es Java?

          … acompañado por un conjunto de bibliotecas
          (packages, conjuntos de clases)
                 Desarrollo de interfaces gráficas de usuario (AWT, Swing)
                 Conectividad (sockets, RMI, IDL, JDBC)
                 Utilidades (Vector, Stack, Hashtable, Date, etc.)
                 Funciones matemáticas
                 Gráficos 2D y 3D
                 Interacción y multimedia (Media, JMF, Speech, Animation,
                 Collaboration, Telephony)
                 Etcétera, etcétera, ...




Juan Pavón Mestras
Facultad de Informática UCM, 2004                 Java                       5




   ¿Qué es Java?

          Apropiado para Internet
                 Ejecutable en múltiples plataformas
                 Fácil de distribuir
                 Seguridad
                 Soporte para interacción con el usuario:
                   • Gráficos
                   • Tipos de datos arbitrarios
                   • Descarga el servidor




Juan Pavón Mestras
Facultad de Informática UCM, 2004                 Java                       6
¿Qué es Java?

          Según Sun:

                 Sencillo, Orientado a objetos, y Familiar
                 Robusto y Seguro
                 Independiente de la arquitectura y portable
                 Alto rendimiento
                 Interpretado, Concurrente, y Dinámico




Juan Pavón Mestras
Facultad de Informática UCM, 2004                  Java                                      7




   Arquitectura de Máquina Virtual Java

             Código fuente Java
                                                                     Cargador
                                                                     de clases



                             1                                     Verificador
                                        Internet                   De ByteCode
  Compilador
    Java                                                                          Just-in-
                                                      Intérprete                   time
                                                                                 Compiler
                                 2
                                                      Run time
                                                      Environ
  Java ByteCode                     3                  ment
                                                                      Hardware
                                                                                       Linux
(código máquina de
                                        Java2c
                                                                                       Solaris
      la MVJ)                                                                         Windows
Juan Pavón Mestras
                                                   Java
                                                                                      MacOS 8
Facultad de Informática UCM, 2004
Java e Internet

          Un nuevo paradigma de software
                 Software bajo demanda:
                   • El software se carga de la red
                           • cuando es necesario
                           • lo que es estrictamente necesario
                           • sin necesidad de instalación
                   • Se puede controlar el uso del software
                 No hacen falta actualizaciones software individuales
                   • Las versiones nuevas reemplazan a las anteriores de forma
                     invisible
                 No hay problemas de configuración específicos del HW
                   • Codifica una vez, ejecuta en varias plataformas




Juan Pavón Mestras
Facultad de Informática UCM, 2004                        Java                    9




   La máquina virtual de Java (MVJ)

          Java se ejecuta en un computador simulado
                 Portabilidad
                 Protección
                 Para portar todo el código Java, portar la MVJ
          Otras arquitecturas de MV:
                 UCSD P-system, Apple Newton, Smalltalk, Emacs, ...
          La máquina virtual Java es sofisticada:
                 Multihilo (Threads)
                 Recogida de basura




Juan Pavón Mestras
Facultad de Informática UCM, 2004                        Java                    10
La máquina virtual de Java (MVJ)

          Entorno de compilación y ejecución tradicional

                                    Programa
                                     Programa
                                      fuente                Biblioteca
                                                            Biblioteca
                                       fuente


                                    Compilador            Compilador



                                       .obj                       .lib


                                                Enlazador



                                                Ejecutable
Juan Pavón Mestras
Facultad de Informática UCM, 2004                              Java      11




   La máquina virtual de Java (MVJ)

          Intérpretes


                                                      Inicio



                                                 Leer instrucción



                                              Analizar instrucción



                                              Ejecutar instrucción



Juan Pavón Mestras
Facultad de Informática UCM, 2004                              Java      12
La máquina virtual de Java (MVJ)

          El intérprete de bytecodes de Java

            Clases java
            Clases java
              (.java)
               (.java)                                                  Máquina virtual Java
                                                                                 Inicio
                javac
                                                                                  Leer
                                                                               instrucción

             bytecodes                      Cargador
              (.class)                       de clases                          Analizar
                                                                               instrucción


                                                                                Ejecutar
                                            Biblioteca                         instrucción
                                            Clases Java
                                              (.zip)

Juan Pavón Mestras
Facultad de Informática UCM, 2004                               Java                           13




   La máquina virtual de Java (MVJ)

          Compilador Just-In-Time (JIT)

                              Clases java
                              Clases java
                                (.java)
                                 (.java)


                                    javac



                               bytecodes                                            Código
                                                             JIT                    Máquina
                                (.class)
                                                                                     Nativo


                                                          Biblioteca
                                                          Clases Java
                                                            (.zip)

Juan Pavón Mestras
Facultad de Informática UCM, 2004                               Java                           14
La máquina virtual de Java (MVJ)

          Arquitectura Java sobre un SO




Juan Pavón Mestras
Facultad de Informática UCM, 2004             Java   15




   Sistema de ejecución de Java

          Facilidades básicas
                 Class Object
                 Class Thread, Interface Runable
                 Class Throwable, Class Exception
          Abstract Window Toolkit
                 Class Component
                 Class Graphics
                 Class Applet




Juan Pavón Mestras
Facultad de Informática UCM, 2004             Java   16
Sistema de ejecución de Java

          E/S y comunicaciones
                 Class InputStream y OutputStream
                 Encadenamiento y herencia de flujos (Stream)
                 Class URL
                 Class Socket
          Otras utilidades
                 Class String
                 Colecciones: Vector, Stack, HashTable
          Recogida de basura
          Comprobación de rangos




Juan Pavón Mestras
Facultad de Informática UCM, 2004             Java                              17




   Java Development Kit (JDK)

          Bibliotecas de clases Java
          Herramientas básicas
                 javac -- compilador Java -> bytecodes
                 java -- intérprete Java
                 jdb -- depurador
                 javah -- crea ficheros de cabecera y stubs para conectividad
                 con C
                 javap -- desensamblador bytecodes -> Java
                 javadoc -- genera documentación de API en formato HTML a
                 partir de código fuente Java
                 appletviewer -- permite ejecutar applets sin un navegador




Juan Pavón Mestras
Facultad de Informática UCM, 2004             Java                              18
JDK

          Herramientas RMI
                 rmic -- genera clases stub y skeleton para objetos Java que
                 implementan la interfaz java.rmi.Remote
                 rmiregistry -- arranca un objeto registrador en un puerto
                 dado
                 serialver -- devuelve el serialVersionUID para una o más
                 clases
          Herramientas de internacionalización
                 native2ascii -- convierte ficheros no-Unicode Latin-1 a éste
          Herramienta JAR
                 jar -- combina varios ficheros en un fichero Java Archive
                 (JAR)
          Herramienta de firma digital
                 javakey -- genera firmas digitales


Juan Pavón Mestras
Facultad de Informática UCM, 2004                   Java                                    19




   Versiones de Sun JDK/J2SE

          23 de mayo de 1995: James Gosling presenta Java
          Java Development Kit (JDK) 1.0.2 [Mayo 1996]
                 Core API: java.applet, java.awt, java.io, java.lang, java.net, java.util
                 Herramientas: javac, java, appletviewer, jdb
                 Applets ejecutables en Netscape 3.0

          JDK 1.1.x [1997/98]
                 Añade: internacionalización, seguridad, JavaBeans, JAR, RMI,
                 serialización de objetos, JDBC, JNI, y mejoras a las bibliotecas
                 anteriores
                 Herramientas: javac, java, appletviewer, jdb
                 Applets ejecutables en HotJava 1.x y Netscape 4.0

          Java 2 SDK, Standard Edition (J2SE) 1.2            [Dic. 1998],   1.3   [Mayo
          2000], 1.4 [Marzo 2002]
                 Swing, 3D, ...
                 Incorpora todas las facilidades para la programación con
                 componentes

Juan Pavón Mestras
Facultad de Informática UCM, 2004                   Java                                    20
Versiones de Sun JDK

          J2SE 5.0 (“Tiger”) [30 sep. 2004]
     http://java.sun.com/developer/technicalArticles/releases/j2se15/


                 Añadidos al lenguaje: metadatos, tipos enumerados, tipos
                 genéricos, argumentos variables, utilidades de concurrencia
                 Más control y gestión de la MVJ (también gestión remota)
                 Mayor eficiencia y estabilidad
                   • Menor tiempo de arranque
                 Un nuevo look & feel del GUI de Java




Juan Pavón Mestras
Facultad de Informática UCM, 2004                Java                                 21




   Entornos de desarrollo integrados (IDE)

          En casi todos los sistemas operativos: Unix (Solaris,
          Linux), Windows, Mac
                 Comerciales
                   • Sun Java Workshop, Visual Café (Symantec), JBuilder (Borland),
                     Metrowerks CodeWarrior, etc.
                 Libre distribución
                   • GNU Java, Kawa


                 Y mi recomendación:    www.eclipse.org




Juan Pavón Mestras
Facultad de Informática UCM, 2004                Java                                 22
Tecnologías Java

          El 15 de junio 1999 Sun anuncia 3 ediciones de
          la plataforma Java:
                 J2SE: Edición estándar
                   • Para desarrollar aplicaciones y applets

                 J2ME: Java Micro Edition
                   • Aplicaciones para dispositivos móviles
                   • Midlets

                 J2EE: Java Enterprise Edition
                   • Aplicaciones para la web
                   • Componentes para servidores de aplicaciones
                   • Servlets, JSPs, EJBs, ...



Juan Pavón Mestras
Facultad de Informática UCM, 2004                      Java                                 23




   Ingeniería de componentes

          J2EE: Java Enterprise Edition
                 Servidores web con tecnología de componentes soportada
                 por el lenguaje Java


                                                                               Aplicaciones
  Cliente
  Cliente           Servidor Web          Servidor de Aplicaciones EJB
                                                                               de la empresa


                                    Contenedor de EJBs
                                                              Tarjeta de
Navegador                Servlet                               crédito
                                                                               Programas CICS
                                           Carrito
                                                                  Inventorio
                                                                                Bases de Datos
Aplicación
                                    Servidor de EJBs

                                                                                Módulos SAP
Juan Pavón Mestras
Facultad de Informática UCM, 2004                      Java                                 24
Dispositivos móviles

          J2ME: Java 2 Micro Edition
                 Orientada a pequeños dispositivos y sistemas embebidos
                 (teléfonos móviles, PDAs, Set-Top Boxes, ...)




Juan Pavón Mestras
Facultad de Informática UCM, 2004            Java                         25




Juan Pavón Mestras
Facultad de Informática UCM, 2004            Java                         26
Cómo realizar un programa Java


                                          1) Editar el fuente
                                          2) Compilar
                                          3) Ejecutarlo




                  Usando el intérprete                       Invocándolo dentro
                   de código de bytes                        de una página HTML



                             Aplicación                           Applet

Juan Pavón Mestras
Facultad de Informática UCM, 2004                     Java                          27




   Cómo realizar una aplicación Java



                        editor      > edita HolaMundo.java

                    Clases java
                    Clases java
                      (.java)
                       (.java)


                         javac      > javac HolaMundo.java


                     bytecodes                                        java
                      (.class)
                                    > java HolaMundo
                                    Hola Mundo.
                                    Invoca el método main() de la clase HolaMundo

Juan Pavón Mestras
Facultad de Informática UCM, 2004                     Java                          28
Cómo realizar un aplicación Java



               public class HolaMundo {
                         public static void main(String[] args) {
                                   System.out.println(“Hola Mundo”);
                         }
               }


                                    > edita HolaMundo.java
                                    > edita HolaMundo.java
                                    > javac HolaMundo.java
                                    > javac HolaMundo.java

                                    > java HolaMundo
                                    > java HolaMundo
                                    Hola Mundo.
                                    Hola Mundo.
                                    Invoca el método main() de la clase HolaMundo
                                     Invoca el método main() de la clase HolaMundo

Juan Pavón Mestras
Facultad de Informática UCM, 2004                      Java                          29




   Más fácil con Eclipse




Juan Pavón Mestras
Facultad de Informática UCM, 2004                      Java                          30
Cómo realizar un applet Java




             editor                 > edita HolaMundoApplet.java
                                    Define el método paint()
         Clases java
         Clases java
           (.java)
            (.java)                                  > edita hola.html               editor
                                                     Invoca el applet

              javac                                                                 Fichero
                                                                                     Fichero
                                    > javac HolaMundoApplet.java                    HTML
                                                                                     HTML

          bytecodes                                                             Navegador o
           (.class)                                                             appletviewer



Juan Pavón Mestras
Facultad de Informática UCM, 2004                           Java                                       31




   Cómo realizar un applet Java


                       Hola.html                               HolaMundoApplet.java
 <HTML>
  <HTML>                                              import java.applet.Applet;
                                                       import java.applet.Applet;
 <HEAD>
  <HEAD>                                              import java.awt.Graphics;
                                                       import java.awt.Graphics;
 <TITLE> Hola Mundo</TITLE>
  <TITLE> Hola Mundo</TITLE>
 </HEAD>
  </HEAD>                                             public class HolaMundoApplet extends Applet
                                                       public class HolaMundoApplet extends Applet
 <BODY>
  <BODY>                                              {{
 Saluda amigablemente:
  Saluda amigablemente:                                   public void init() {{
                                                           public void init()
 <APPLET
  <APPLET                                                       resize (150,25);
                                                                 resize (150,25);
 CODE=“HolaMundoApplet.class”
  CODE=“HolaMundoApplet.class”
 WIDTH=150 HEIGHT=125>                                    }}
  WIDTH=150 HEIGHT=125>
 </BODY>
  </BODY>
 </HTML>                                                   public void paint (Graphics g) {{
                                                            public void paint (Graphics g)
  </HTML>
                                                                g.drawString (“Hola Mundo”, 50,25);
                                                                 g.drawString (“Hola Mundo”, 50,25);
                                                           }}
                                                      }}



Juan Pavón Mestras
Facultad de Informática UCM, 2004                           Java                                       32
Cómo se ejecuta un applet Java



                       Intérprete HTML
                                                  1
                                                                html
                                                 2              clases
                                                                     gifs
                                                 3
                            Intérprete Java
                                                                 Servidor Web
                    Visor gráficos (gif, jpeg)

                       Navegador (cliente)

Juan Pavón Mestras
Facultad de Informática UCM, 2004                     Java                           33




   Java y C++

          Java se parece a C++
                 Sin algunas cosas
                   • Punteros, direcciones, estructuras (struct y union),
                     preprocesado, herencia múltiple, sobrecarga de operadores,
                     tipos enumerados (enum), tipos sin signo (unsigned), goto,
                     variables y funciones globales
                 Más seguro
                   • Recogida de basura, interfaces, paquetes, arrays con límites,
                     soporte para concurrencia y sincronización
                 Aspectos recientes de C++
                   •   Excepciones uniformes
                   •   Información de tipos en tiempo de ejecución
                   •   Tipo boolean
                   •   Casting seguro




Juan Pavón Mestras
Facultad de Informática UCM, 2004                     Java                           34
Java y C++

          El código Java es más sencillo
                 recogida de basura
                 Las facilidades en tiempo de ejecución más avanzadas
                 Las interfaces simplifican la jerarquía de herencia

          El código Java es más robusto
                 Verificación al cargar y comprobación en tiempo de ejecución
                 Arrays seguros
                 Compilador estricto e inteligente

          Menos oportunidades para los más audaces
                 Imposible realizar aritmética de punteros
                 No es posible hacer mejoras específicas para una plataforma

          No es cierto eso de que las aplicaciones Java tengan que ser
          más lentas que las C++


Juan Pavón Mestras
Facultad de Informática UCM, 2004                 Java                          35

Más contenido relacionado

La actualidad más candente (18)

Manual.curso.de.java.desde.cero
Manual.curso.de.java.desde.ceroManual.curso.de.java.desde.cero
Manual.curso.de.java.desde.cero
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Curso Java Inacap
Curso Java InacapCurso Java Inacap
Curso Java Inacap
 
Semana9 Vbr
Semana9 VbrSemana9 Vbr
Semana9 Vbr
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
01 curso de java introducción
01 curso de  java introducción01 curso de  java introducción
01 curso de java introducción
 
Introduccion java
Introduccion javaIntroduccion java
Introduccion java
 
Lenguaje de programación java. Detalles
Lenguaje de programación java. DetallesLenguaje de programación java. Detalles
Lenguaje de programación java. Detalles
 
Qué es java
Qué es javaQué es java
Qué es java
 
J2 me
J2 meJ2 me
J2 me
 
Unidad 2. Lenguaje orientado a objetos
Unidad 2. Lenguaje orientado a objetosUnidad 2. Lenguaje orientado a objetos
Unidad 2. Lenguaje orientado a objetos
 
JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
 
Java de erlin
Java de erlinJava de erlin
Java de erlin
 
Tutorial de eclipse 2
Tutorial de eclipse 2Tutorial de eclipse 2
Tutorial de eclipse 2
 
Que Es Java
Que Es JavaQue Es Java
Que Es Java
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
Java lenguaje de desarrollo
Java lenguaje de desarrolloJava lenguaje de desarrollo
Java lenguaje de desarrollo
 
Aplicaciones java
Aplicaciones javaAplicaciones java
Aplicaciones java
 

Destacado

Destacado (8)

Api java
Api javaApi java
Api java
 
Sesion12-Componentes AWT
Sesion12-Componentes AWTSesion12-Componentes AWT
Sesion12-Componentes AWT
 
Curso Java Inicial 8 Conceptos Avanzados Awt
Curso Java Inicial   8 Conceptos Avanzados   AwtCurso Java Inicial   8 Conceptos Avanzados   Awt
Curso Java Inicial 8 Conceptos Avanzados Awt
 
AWT- JAVA
AWT- JAVAAWT- JAVA
AWT- JAVA
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 
Confección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWINGConfección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWING
 
Gui programming (awt)
Gui programming (awt)Gui programming (awt)
Gui programming (awt)
 
Awt
AwtAwt
Awt
 

Similar a 02 introjava

Introducción a Java 2
Introducción a Java 2 Introducción a Java 2
Introducción a Java 2 istmosoft
 
Programación en Java (I)
Programación en Java (I) Programación en Java (I)
Programación en Java (I) Cristian
 
Presentación1
Presentación1Presentación1
Presentación1rpcajas62
 
Presentación1
Presentación1Presentación1
Presentación1rpcajas62
 
Clase2
Clase2Clase2
Clase2rilara
 
Java kaime conpre
Java kaime conpreJava kaime conpre
Java kaime conprejtk1
 
Java kaime con
Java kaime conJava kaime con
Java kaime conjtk1
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Javapbcanessa
 
Algoritmos y estructuras de datos, presentacion inicial
Algoritmos y estructuras de datos, presentacion inicialAlgoritmos y estructuras de datos, presentacion inicial
Algoritmos y estructuras de datos, presentacion inicialjuanchota1
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaSantiago Sora
 
Tema 1 el entorno de desarrollo de java
Tema 1 el entorno de desarrollo de javaTema 1 el entorno de desarrollo de java
Tema 1 el entorno de desarrollo de javaSabinaChambi
 

Similar a 02 introjava (20)

Introducción a Java 2
Introducción a Java 2 Introducción a Java 2
Introducción a Java 2
 
Clase No.2 La Arquictura de JAVA
Clase No.2 La Arquictura de JAVAClase No.2 La Arquictura de JAVA
Clase No.2 La Arquictura de JAVA
 
Programación en Java (I)
Programación en Java (I) Programación en Java (I)
Programación en Java (I)
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
Presentación1
Presentación1Presentación1
Presentación1
 
Presentación1
Presentación1Presentación1
Presentación1
 
Módulo 01 Introducción a la Tecnología Java
Módulo 01 Introducción a la Tecnología JavaMódulo 01 Introducción a la Tecnología Java
Módulo 01 Introducción a la Tecnología Java
 
Clase02 de sistemas
Clase02 de sistemasClase02 de sistemas
Clase02 de sistemas
 
Instituto Cristiano Encuentro
Instituto Cristiano EncuentroInstituto Cristiano Encuentro
Instituto Cristiano Encuentro
 
Java basico
Java basicoJava basico
Java basico
 
Java basico
Java basicoJava basico
Java basico
 
Clase2
Clase2Clase2
Clase2
 
JAVA
JAVAJAVA
JAVA
 
Java kaime conpre
Java kaime conpreJava kaime conpre
Java kaime conpre
 
Java kaime con
Java kaime conJava kaime con
Java kaime con
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Algoritmos y estructuras de datos, presentacion inicial
Algoritmos y estructuras de datos, presentacion inicialAlgoritmos y estructuras de datos, presentacion inicial
Algoritmos y estructuras de datos, presentacion inicial
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.java
 
Tema 1 el entorno de desarrollo de java
Tema 1 el entorno de desarrollo de javaTema 1 el entorno de desarrollo de java
Tema 1 el entorno de desarrollo de java
 

02 introjava

  • 1. Introducción al lenguaje Java Programación Orientada a Objetos Facultad de Informática Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense Madrid ¿Qué es Java? brewed coffee la bebida preferida de los programadores (al menos en USA) Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 2
  • 2. Historia de Java Abril 1991: Proyecto Green (Sun) software para dispositivos electrónicos inteligentes y televisión interactiva. Se trataba de desarrollar un entorno de operación fiable, portable y eficiente. El resultado: Lenguaje Oak (James Gosling) Principio 1994: El equipo se reduce ante el escaso crecimiento del mercado PDA y STB, y tras perder acuerdos con Time- Warner y 3DO, se reorienta hacia WWW: Los requisitos del software son los mismos en WWW 1994: WebRunner (luego HotJava): navegador Web escrito en Java 23 mayo 1995 (SunWorld ‘95): Anuncio de la release alpha de Java Java se distribuye gratuitamente Finales 1995: Primera integración Netscape+Java Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 3 ¿Qué es Java? Un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems Encapsulación, herencia y polimorfismo Fuertemente tipado Gestión automática de la memoria (recogida de basura) Soporte para concurrencia (multihilo) Gestión de excepciones Constructores independientes de la arquitectura del procesador Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 4
  • 3. ¿Qué es Java? … acompañado por un conjunto de bibliotecas (packages, conjuntos de clases) Desarrollo de interfaces gráficas de usuario (AWT, Swing) Conectividad (sockets, RMI, IDL, JDBC) Utilidades (Vector, Stack, Hashtable, Date, etc.) Funciones matemáticas Gráficos 2D y 3D Interacción y multimedia (Media, JMF, Speech, Animation, Collaboration, Telephony) Etcétera, etcétera, ... Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 5 ¿Qué es Java? Apropiado para Internet Ejecutable en múltiples plataformas Fácil de distribuir Seguridad Soporte para interacción con el usuario: • Gráficos • Tipos de datos arbitrarios • Descarga el servidor Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 6
  • 4. ¿Qué es Java? Según Sun: Sencillo, Orientado a objetos, y Familiar Robusto y Seguro Independiente de la arquitectura y portable Alto rendimiento Interpretado, Concurrente, y Dinámico Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 7 Arquitectura de Máquina Virtual Java Código fuente Java Cargador de clases 1 Verificador Internet De ByteCode Compilador Java Just-in- Intérprete time Compiler 2 Run time Environ Java ByteCode 3 ment Hardware Linux (código máquina de Java2c Solaris la MVJ) Windows Juan Pavón Mestras Java MacOS 8 Facultad de Informática UCM, 2004
  • 5. Java e Internet Un nuevo paradigma de software Software bajo demanda: • El software se carga de la red • cuando es necesario • lo que es estrictamente necesario • sin necesidad de instalación • Se puede controlar el uso del software No hacen falta actualizaciones software individuales • Las versiones nuevas reemplazan a las anteriores de forma invisible No hay problemas de configuración específicos del HW • Codifica una vez, ejecuta en varias plataformas Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 9 La máquina virtual de Java (MVJ) Java se ejecuta en un computador simulado Portabilidad Protección Para portar todo el código Java, portar la MVJ Otras arquitecturas de MV: UCSD P-system, Apple Newton, Smalltalk, Emacs, ... La máquina virtual Java es sofisticada: Multihilo (Threads) Recogida de basura Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 10
  • 6. La máquina virtual de Java (MVJ) Entorno de compilación y ejecución tradicional Programa Programa fuente Biblioteca Biblioteca fuente Compilador Compilador .obj .lib Enlazador Ejecutable Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 11 La máquina virtual de Java (MVJ) Intérpretes Inicio Leer instrucción Analizar instrucción Ejecutar instrucción Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 12
  • 7. La máquina virtual de Java (MVJ) El intérprete de bytecodes de Java Clases java Clases java (.java) (.java) Máquina virtual Java Inicio javac Leer instrucción bytecodes Cargador (.class) de clases Analizar instrucción Ejecutar Biblioteca instrucción Clases Java (.zip) Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 13 La máquina virtual de Java (MVJ) Compilador Just-In-Time (JIT) Clases java Clases java (.java) (.java) javac bytecodes Código JIT Máquina (.class) Nativo Biblioteca Clases Java (.zip) Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 14
  • 8. La máquina virtual de Java (MVJ) Arquitectura Java sobre un SO Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 15 Sistema de ejecución de Java Facilidades básicas Class Object Class Thread, Interface Runable Class Throwable, Class Exception Abstract Window Toolkit Class Component Class Graphics Class Applet Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 16
  • 9. Sistema de ejecución de Java E/S y comunicaciones Class InputStream y OutputStream Encadenamiento y herencia de flujos (Stream) Class URL Class Socket Otras utilidades Class String Colecciones: Vector, Stack, HashTable Recogida de basura Comprobación de rangos Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 17 Java Development Kit (JDK) Bibliotecas de clases Java Herramientas básicas javac -- compilador Java -> bytecodes java -- intérprete Java jdb -- depurador javah -- crea ficheros de cabecera y stubs para conectividad con C javap -- desensamblador bytecodes -> Java javadoc -- genera documentación de API en formato HTML a partir de código fuente Java appletviewer -- permite ejecutar applets sin un navegador Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 18
  • 10. JDK Herramientas RMI rmic -- genera clases stub y skeleton para objetos Java que implementan la interfaz java.rmi.Remote rmiregistry -- arranca un objeto registrador en un puerto dado serialver -- devuelve el serialVersionUID para una o más clases Herramientas de internacionalización native2ascii -- convierte ficheros no-Unicode Latin-1 a éste Herramienta JAR jar -- combina varios ficheros en un fichero Java Archive (JAR) Herramienta de firma digital javakey -- genera firmas digitales Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 19 Versiones de Sun JDK/J2SE 23 de mayo de 1995: James Gosling presenta Java Java Development Kit (JDK) 1.0.2 [Mayo 1996] Core API: java.applet, java.awt, java.io, java.lang, java.net, java.util Herramientas: javac, java, appletviewer, jdb Applets ejecutables en Netscape 3.0 JDK 1.1.x [1997/98] Añade: internacionalización, seguridad, JavaBeans, JAR, RMI, serialización de objetos, JDBC, JNI, y mejoras a las bibliotecas anteriores Herramientas: javac, java, appletviewer, jdb Applets ejecutables en HotJava 1.x y Netscape 4.0 Java 2 SDK, Standard Edition (J2SE) 1.2 [Dic. 1998], 1.3 [Mayo 2000], 1.4 [Marzo 2002] Swing, 3D, ... Incorpora todas las facilidades para la programación con componentes Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 20
  • 11. Versiones de Sun JDK J2SE 5.0 (“Tiger”) [30 sep. 2004] http://java.sun.com/developer/technicalArticles/releases/j2se15/ Añadidos al lenguaje: metadatos, tipos enumerados, tipos genéricos, argumentos variables, utilidades de concurrencia Más control y gestión de la MVJ (también gestión remota) Mayor eficiencia y estabilidad • Menor tiempo de arranque Un nuevo look & feel del GUI de Java Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 21 Entornos de desarrollo integrados (IDE) En casi todos los sistemas operativos: Unix (Solaris, Linux), Windows, Mac Comerciales • Sun Java Workshop, Visual Café (Symantec), JBuilder (Borland), Metrowerks CodeWarrior, etc. Libre distribución • GNU Java, Kawa Y mi recomendación: www.eclipse.org Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 22
  • 12. Tecnologías Java El 15 de junio 1999 Sun anuncia 3 ediciones de la plataforma Java: J2SE: Edición estándar • Para desarrollar aplicaciones y applets J2ME: Java Micro Edition • Aplicaciones para dispositivos móviles • Midlets J2EE: Java Enterprise Edition • Aplicaciones para la web • Componentes para servidores de aplicaciones • Servlets, JSPs, EJBs, ... Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 23 Ingeniería de componentes J2EE: Java Enterprise Edition Servidores web con tecnología de componentes soportada por el lenguaje Java Aplicaciones Cliente Cliente Servidor Web Servidor de Aplicaciones EJB de la empresa Contenedor de EJBs Tarjeta de Navegador Servlet crédito Programas CICS Carrito Inventorio Bases de Datos Aplicación Servidor de EJBs Módulos SAP Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 24
  • 13. Dispositivos móviles J2ME: Java 2 Micro Edition Orientada a pequeños dispositivos y sistemas embebidos (teléfonos móviles, PDAs, Set-Top Boxes, ...) Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 25 Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 26
  • 14. Cómo realizar un programa Java 1) Editar el fuente 2) Compilar 3) Ejecutarlo Usando el intérprete Invocándolo dentro de código de bytes de una página HTML Aplicación Applet Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 27 Cómo realizar una aplicación Java editor > edita HolaMundo.java Clases java Clases java (.java) (.java) javac > javac HolaMundo.java bytecodes java (.class) > java HolaMundo Hola Mundo. Invoca el método main() de la clase HolaMundo Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 28
  • 15. Cómo realizar un aplicación Java public class HolaMundo { public static void main(String[] args) { System.out.println(“Hola Mundo”); } } > edita HolaMundo.java > edita HolaMundo.java > javac HolaMundo.java > javac HolaMundo.java > java HolaMundo > java HolaMundo Hola Mundo. Hola Mundo. Invoca el método main() de la clase HolaMundo Invoca el método main() de la clase HolaMundo Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 29 Más fácil con Eclipse Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 30
  • 16. Cómo realizar un applet Java editor > edita HolaMundoApplet.java Define el método paint() Clases java Clases java (.java) (.java) > edita hola.html editor Invoca el applet javac Fichero Fichero > javac HolaMundoApplet.java HTML HTML bytecodes Navegador o (.class) appletviewer Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 31 Cómo realizar un applet Java Hola.html HolaMundoApplet.java <HTML> <HTML> import java.applet.Applet; import java.applet.Applet; <HEAD> <HEAD> import java.awt.Graphics; import java.awt.Graphics; <TITLE> Hola Mundo</TITLE> <TITLE> Hola Mundo</TITLE> </HEAD> </HEAD> public class HolaMundoApplet extends Applet public class HolaMundoApplet extends Applet <BODY> <BODY> {{ Saluda amigablemente: Saluda amigablemente: public void init() {{ public void init() <APPLET <APPLET resize (150,25); resize (150,25); CODE=“HolaMundoApplet.class” CODE=“HolaMundoApplet.class” WIDTH=150 HEIGHT=125> }} WIDTH=150 HEIGHT=125> </BODY> </BODY> </HTML> public void paint (Graphics g) {{ public void paint (Graphics g) </HTML> g.drawString (“Hola Mundo”, 50,25); g.drawString (“Hola Mundo”, 50,25); }} }} Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 32
  • 17. Cómo se ejecuta un applet Java Intérprete HTML 1 html 2 clases gifs 3 Intérprete Java Servidor Web Visor gráficos (gif, jpeg) Navegador (cliente) Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 33 Java y C++ Java se parece a C++ Sin algunas cosas • Punteros, direcciones, estructuras (struct y union), preprocesado, herencia múltiple, sobrecarga de operadores, tipos enumerados (enum), tipos sin signo (unsigned), goto, variables y funciones globales Más seguro • Recogida de basura, interfaces, paquetes, arrays con límites, soporte para concurrencia y sincronización Aspectos recientes de C++ • Excepciones uniformes • Información de tipos en tiempo de ejecución • Tipo boolean • Casting seguro Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 34
  • 18. Java y C++ El código Java es más sencillo recogida de basura Las facilidades en tiempo de ejecución más avanzadas Las interfaces simplifican la jerarquía de herencia El código Java es más robusto Verificación al cargar y comprobación en tiempo de ejecución Arrays seguros Compilador estricto e inteligente Menos oportunidades para los más audaces Imposible realizar aritmética de punteros No es posible hacer mejoras específicas para una plataforma No es cierto eso de que las aplicaciones Java tengan que ser más lentas que las C++ Juan Pavón Mestras Facultad de Informática UCM, 2004 Java 35