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