Programacin Orientada a Objetos en Java
Curso 2006 - 2007
Tema 1 Introduccin a Java
Gonzalo Mndez Pozo Dpto. de Ingeniera de Software e Inteligencia Artificial Universidad Complutense de Madrid
Historia de Java
Abril 1991: Proyecto Green (Sun) software para dispositivos electrnicos inteligentes y televisin interactiva. Entorno de operacin fiable, portable y eficiente.
El resultado: Lenguaje Oak
Principio 1994: se reorienta hacia 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 integracin Netscape+Java
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Qu es Java?
Un lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems
Encapsulacin, herencia y polimorfismo Fuertemente tipado Gestin automtica de la memoria (recogida de basura) Soporte para concurrencia (multihilo) Gestin de excepciones Constructores independientes de la arquitectura del procesador
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Qu es Java?
Acompaado por un conjunto de bibliotecas (API de Java)
Desarrollo de interfaces grficas de usuario (AWT, Swing) Conectividad (sockets, RMI, CORBA, IDL, JDBC) Utilidades (Vector, Stack, Hashtable, Date, etc.) Funciones matemticas Grficos 2D y 3D
Se ejecuta en una Mquina Virtual (JVM)
Bytecodes vs .exe
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Qu es Java?
Apropiado para Internet
Ejecutable en mltiples plataformas Fcil de distribuir Seguridad Soporte para interaccin con el usuario:
Grficos Tipos de datos arbitrarios Descarga del servidor
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Desventajas de Java
Eficiencia: Java era hasta 30 veces ms lento que C++ a causa del tiempo invertido en:
Recogida de basura Sincronizacin de threads Otras actividades (carga de clases, comprobacin de lmites, gestin de excepciones)
Algunas soluciones:
Mejores compiladores Mejores mquinas virtuales Optimizadores de bytecode Compiladores nativos estticos (se pierde portabilidad) Chips Java Mejor cdigo fuente
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Tecnologas Java
J2SE: Edicin estndar
Para desarrollar aplicaciones y applets
J2ME: Java Micro Edition
Aplicaciones para dispositivos mviles Midlets
J2EE: Java Enterprise Edition
Aplicaciones para la web Componentes para servidores de aplicaciones Servlets, JSPs, EJBs, ...
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
La Mquina Virtual de Java
Java se ejecuta en un computador simulado:
Portabilidad Proteccin Para portar todo el cdigo Java, portar la MVJ
La mquina virtual Java es sofisticada:
Multihilo (Threads) Recogida de basura
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
La Mquina Virtual de Java
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Java Development Kit
Bibliotecas de clases Java Herramientas bsicas
javac: compilador Java bytecodes java: intrprete Java jdb: depurador javah: crea ficheros de cabecera y stubs para conectividad con C javap: desensamblador bytecodes Java javadoc: genera documentacin de API en formato HTML a partir de cdigo fuente Java appletviewer: permite ejecutar applets sin un navegador
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Desarrollo en Java
Editores genricos
Emacs, UltraEdit
Editores para Java
Kawa, FreeJava
IDEs
NetBeans, Eclipse, WSAD, JBuilder
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Java vs C++
Sin algunas cosas
Punteros, direcciones, estructuras (struct y union) Preprocesado Herencia mltiple, sobrecarga de operadores Tipos sin signo (unsigned), goto, variables y funciones globales
Ms seguro
Recogida de basura, interfaces, paquetes, arrays con lmites, soporte para concurrencia y sincronizacin
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Java vs C++
El cdigo Java es ms sencillo
recogida de basura Las facilidades en tiempo de ejecucin ms avanzadas Las interfaces simplifican la jerarqua de herencia
El cdigo Java es ms robusto
Verificacin al cargar y comprobacin en tiempo de ejecucin Arrays seguros Compilador estricto e inteligente
Menos oportunidades para los ms audaces
Imposible realizar aritmtica de punteros No es posible hacer mejoras especficas para una plataforma
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Java vs C++
C++
Compilar + enlazar = EXE
JAVA
No hay .exe Compilar .class Ejecutar .class sobre la mquina virtual
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Primer programa en Java
Abrir un fichero llamado HolaMundo.java
public class HolaMundo { public static void main(String [ ] args) { System.out.println("Soy pequen....mmame!"); } }
IMPORTANTE: el fichero y la clase se llaman igual
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Primer programa en Java
Compilar
javac HolaMundo.java Genera HolaMundo.class
Ejecutar
java HolaMundo Sin .class Imprime Soy pequen....mmame!
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial
Primer programa en Java
Cuidado: java es sensible a maysculas y minsculas Todo el cdigo tiene que estar dentro de una clase La funcin main es la que comienza la ejecucin Todas las clases pueden tener un mtodo main
No siempre es recomendable
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial