Download Tema 1. Introducción a JAVA - ISA-UMH

Document related concepts
no text concepts found
Transcript
Tema 1. Introducción a JAVA
„
„
„
„
„
„
Historia
Características
Plataforma Java
Entorno de desarrollo
Ejemplo: Hola mundo
Estructura general de un programa Java
1
Historia de Java (i)
„
Surge en 1991: Sun Microsystems diseña un lenguaje
de programación para electrodomésticos
„ Reducida potencia de cálculo y reducida memoria
→ Lenguaje sencillo capaz de generar código de
tamaño reducido
„ Distintas CPUs y en continuo cambio:
„
„
„
Desarrollo de un código neutro independiente del tipo de
electrodoméstico
El código neutro es interpretado por una máquina
virtual: Java Virtual Machine (JVM), que lo convierte a
código específico de la CPU
Problema:
„
Ninguna empresa se interesó por el lenguaje
2
Historia de Java (ii)
„
En 1995 se introduce como lenguaje de
programación de ordenadores
„
„
„
Clave del éxito: La incorporación de un intérprete
Java en la v2.0 de Netscape Navigator produjo
una revolución en Internet
A principios de 1997 apareció Java 1.1.
Mejora sustancial de la 1ª versión
A finales de 1998 nació Java 1.2 → JAVA2
„
„
Ampliación de Java 1.1
Es el que estudiaremos
3
Características de Java
„
Java:
„
„
Objetivo de Java:
„
„
Lenguaje de programación + plataforma software
Permitir el desarrollo de aplicaciones robustas, seguras
y de altas prestaciones sobre múltiples plataformas en
redes distribuidas y heterogéneas.
Lenguaje de programación Java:
· Simple
· Arquitectura neutral
· Orientado a objetos
· Portable
· Distribuido
· Altas prestaciones
· Interpretado
· Multitarea
· Robusto
· Dinámico
· Seguro
4
Simple y orientado a objetos
„
Lenguaje simple:
„
„
Sintaxis similar a C++, pero sin las complejidades
de éste (no hay punteros)
Orientado a objetos:
„
„
„
„
Dispone de un gran número de clases (API:
Application Programming Interface)
No existen funciones libres (a diferencia de C++)
Dispone de tipos primitivos (como en C++)
No posee templates (característica importante de
C++)
5
Robusto
„
Comprobaciones restrictivas en tiempo de
compilación.
„
„
„
„
„
Ej: No se permite usar variables sin inicializarlas ni
herencia múltiple.
Mecanismos de manejo de excepciones en
tiempo de ejecución
Eliminación de las características del lenguaje
que pueden conducir a errores (Ej: punteros).
Gestión de memoria de forma automática.
No se permite el acceso directo al hardware
ni a la memoria.
6
Seguro
„
Java implementa mecanismos de
seguridad que limitan el acceso a
recursos de las máquinas donde se
ejecuta la aplicación, sobre todo en los
Applets
„
Aplicaciones que se cargan desde un
servidor y se ejecutan en el cliente
7
Arquitectura neutral y portable
„
„
Java: diseñado para implementar aplicaciones que
deben ser ejecutadas en entornos de redes
distribuidas.
Problemas:
„
„
„
Múltiples arquitecturas hardware
Diversos sistemas operativos
Solución:
„
„
„
El compilador genera un código neutral intermedio:
bytecodes
Este código es interpretado sobre la maquina virtual de Java
(Java Virtual Machine, JVM)
La JVM convierte el código neutro al código particular de la
máquina
8
Arquitectura neutral y portable
„
Lenguaje Java: compilado e interpretado
Java Virtual Machine (JVM)
bytecodes
9
Altas prestaciones
„
Java es interpretado
„
„
Compiladores JIT (Just In Time)
„
„
„
Sus prestaciones no son excesivamente altas
Conforme cargan las aplicaciones Java generan el
código máquina correspondiente
La ejecución se realiza a velocidad de código
compilado
Código nativo
„
Las secciones de cálculo intensivo pueden ser
rescritas en código máquina nativo
10
Interpretado, multitarea y
dinámico
„
Interpretado
„
„
Multitarea (multithreading)
„
„
El intérprete Java puede ejecutar bytecodes sobre
cualquier máquina en la que el intérprete haya
sido portado
Java permite construir aplicaciones multitarea
(múltiples hilos de ejecución)
Dinámico
„
„
Las clases son enlazadas sólo conforme se
necesitan
Puede enlazarse código desde múltiples fuentes
(incluido Internet)
11
Plataforma Java
„
Java:
„
„
„
Lenguaje de programación + plataforma
software
Plataforma software sobre otras
plataformas hardware
Componentes:
„
„
Máquina virtual de Java (JVM)
Interfaz de programación de aplicaciones (API)
de Java
„
Agrupación de librerías de clases e interfaces,
conocidas como paquetes (packages)
12
Plataforma Java
„
java.lang: Colección de tipos base, declaraciones de ‘Object’ y
‘Class’, threads, excepciones, wrappers para los tipos de datos
primitivos, y otras clases fundamentales. Único paquete que se
incluye automáticamente.
„
java.io: Clases para manejar entradas y salidas
java.net: Clases de soporte para redes: sockets, interfaces
telnet y URLs.
java.util: Clases útiles: estructuras genéricas, manejo de fecha
„
jawa.awt: Clases para crear interfaces gráficas
„
„
y hora, strings, números aleatorios...
13
El entorno de desarrollo
„
Dos versiones de Java (http://java.sun.com)
„
„
„
Edición estándar (JSE: Java Standard Edition)
Edición empresarial (J2EE: Java Enterprise Edition)
Productos J2SE:
„
JRE (Java 2 Runtime Environment): Entorno de ejecución de
Java 2
„
„
JDK (Java 2 Software Development Kit): Kit de desarrollo del
software de Java
„
„
JVM + API de Java + comp. que permiten la ejecución
Superconjunto JRE: JRE + herramientas de desarrollo
(compiladores, depuradores,…)
Actualmente: Java SE 6 (JDK 6)
14
El entorno de desarrollo
Componentes plataforma J2SE:
15
El compilador de Java
„
„
„
„
Compilador del JDK: javac.exe
Realiza un análisis de sintaxis del código
escrito en los ficheros fuente de Java (con
extensión *.java).
Si no encuentra errores, genera los ficheros
compilados (con extensión *.class).
Si hay errores, indica la línea o líneas
erróneas.
16
La Java Virtual Machine (JVM)
„
El compilador genera un código neutro:
„
„
Java Virtual Machine
„
„
Interpreta el código neutro y lo convierte a código
particular de la CPU
La JVM dispone de numerosas opciones
„
„
Los bytecodes → ficheros compilados con
extensión *.class
JIT(Just In-Time compiler) → mejora de 10 a 20
veces la velocidad de ejecución
Intérprete del JDK: java.exe
17
Ejemplo: Hola mundo
1.
2.
3.
4.
5.
6.
7.
8.
9.
„
import java.io.*;
// Clase HolaMundo
class HolaMundo
{
public static void main(String arg[])
{
System.out.println("Hola Mundo");
}
}
Debe guardarse en un archivo llamado HolaMundo.java (el
nombre del archivo debe coincidir con el de la clase)
18
Ejemplo (i)
import java.io.*;
Importa las clases del package java.io.
Hace posible acceder a las clases utilizando
nombres cortos.
1.
„
„
„
Ejemplo: se puede acceder a la clase
FileReader simplemente con el nombre
FileReader en lugar de con el nombre completo
java.io.FileReader.
19
Ejemplo (ii)
2.
// Clase HolaMundo
„
Comentarios (como en C++)
También es válido: /* Clase HolaMundo */
3.
class HolaMundo
„
„
„
„
Indica que se va a definir la clase HolaMundo
En Java todo son clases: no se puede definir una
variable o una función fuera de una clase
La clase HolaMundo tiene como finalidad acoger
al método main
20
Ejemplo (iii)
5.
„
„
„
„
„
public static void main(String arg[])
La ejecución del programa comienza en main
public: indica que la función puede ser utilizada
por cualquier clase
static: indica que es un método de clase → puede
ser utilizado aunque no sea creado ningún objeto
de la clase HolaMundo.
void: indica que el método no tiene valor de
retorno
Argumento del método: array de cadenas de
caracteres. Son parámetros que se pasan al
programa en el momento de comenzar la ejecución
21
Ejemplo (iv)
System.out.println("Hola Mundo");
7.
Imprime una cadena de caracteres (string) en la
salida estándar del sistema
Se utiliza el método println que está asociado con
una variable static, llamada out, perteneciente a
la clase System (del package por defecto
java.lang)
„
„
„
Una variable miembro static, también llamada variable de
clase, es una variable miembro única para toda la clase, y
que existe aunque no se haya creado ningún objeto de la
clase
22
Ejemplo (v)
Compilación del programa:
„
„
„
javac HolaMundo.java
Genera el archivo HolaMundo.class
Ejecución del programa:
„
„
„
java HolaMundo
Provoca:
1.
2.
3.
El intérprete cargue el archivo HolaMundo.class
Encuentre la clase del mismo nombre con un método
público y estático llamado main
Proceda a ejecutar el programa invocando dicho
método
23
Estructura general de un
programa Java (i)
„
Programa Java:
„
„
„
Ficheros Java:
„
„
„
Clase que contiene el programa principal
Clases de usuario: específicas de la aplicación
Fuentes: *.java
Compilados: *.class
Fichero fuente:
„
„
Puede contener más de una clase
Sólo una puede ser public (su nombre coincidirá
con el del fichero)
24
Estructura general (ii)
„
Aplicación: varios ficheros *.class
„
„
„
„
Cada clase realiza funciones particulares
Modularidad e independencia entre clases
La aplicación se ejecuta por medio del
nombre de la clase que contiene la función
main, sin la extensión class.
Las clases se agrupan en packages: librerías
de clases
„
Si no se definen pertenecientes a un package, se
utiliza un package por defecto → el directorio
actual
25