Sei sulla pagina 1di 22

Tema 1.

Introduccin a JAVA
n
n
n
n
n
n

Historia
Caractersticas
Sistema base
Entorno de desarrollo
Ejemplo: Hola mundo
Estructura general de un programa Java

Historia de Java (i)


n

Surge en 1991: Sun Microsystems disea un lenguaje


de programacin para electrodomsticos
n Reducida potencia de clculo y reducida memoria
Lenguaje sencillo capaz de generar cdigo de
tamao reducido
n Distintas CPUs y en continuo cambio:
n

Desarrollo de un cdigo neutro independiente del tipo de


electrodomstico
El cdigo neutro es interpretado por una mquina
virtual: Java Virtual Machine (JVM), que lo convierte a
cdigo especfico de la CPU

Problema:
n

Ninguna empresa se interes por el lenguaje


2

Historia de Java (ii)


n

En 1995 se introduce como lenguaje de


programacin de ordenadores
n

Clave del xito: La incorporacin de un intrprete


Java en la v2.0 de Netscape Navigator produjo
una revolucin en Internet

A principios de 1997 apareci Java 1.1.


Mejora sustancial de la 1 versin
A finales de 1998 naci Java 1.2 JAVA2
n
n

Ampliacin de Java 1.1


Es el que estudiaremos
3

Caractersticas de Java
n

Objetivo de Java:
n

Permitir el desarrollo de aplicaciones robustas,


seguras y de altas prestaciones sobre mltiples
plataformas en redes distribuidas y heterogneas.

Descripcin de Sun:
n

Simple y orientado a objetos, robusto y seguro, de


arquitectura neutral y portable, de altas
prestaciones, interpretado, multitarea y dinmico.

Simple y orientado a objetos


n

Lenguaje simple:
n

Sintaxis similar a C++, pero sin las complejidades


de ste (no hay punteros)

Orientado a objetos:
n

n
n
n

Dispone de un gran nmero de clases (API:


Application Programming Interface)
No existen funciones libres (a diferencia de C++)
Dispone de tipos primitivos (como en C++)
No posee templates (caracterstica importante de
C++)
5

Robusto
n

Comprobaciones restrictivas en tiempo de


compilacin.
n

n
n

Ej: No se permite usar variables sin inicializarlas ni


herencia mltiple.

Mecanismos de manejo de excepciones en


tiempo de ejecucin
Eliminacin de las caractersticas del lenguaje
que pueden conducir a errores (Ej: punteros).
Gestin de memoria de forma automtica.
No se permite el acceso directo al hardware
ni a la memoria.
6

Seguro
n

Java implementa mecanismos de


seguridad que limitan el acceso a
recursos de las mquinas donde se
ejecuta la aplicacin, sobre todo en los
Applets
n

Aplicaciones que se cargan desde un


servidor y se ejecutan en el cliente

Arquitectura neutral y portable


n

Java: diseado para implementar aplicaciones que


deben ser ejecutadas en entornos de redes
distribuidas.
Problemas:
n
n

Mltiples arquitecturas hardware


Diversos sistemas operativos

Solucin:
n

El compilador genera un cdigo neutral intermedio:


bytecodes
Este cdigo es interpretado sobre la maquina virtual de Java
(Java Virtual Machine, JVM)
La JVM convierte el cdigo neutro al cdigo particular de la
mquina
8

Altas prestaciones
n

Java es interpretado
n

Compiladores JIT (Just In Time)


n

Sus prestaciones no son excesivamente altas


Conforme cargan las aplicaciones Java generan el
cdigo mquina correspondiente
La ejecucin se realiza a velocidad de cdigo
compilado

Cdigo nativo
n

Las secciones de clculo intensivo pueden ser


rescritas en cdigo mquina nativo
9

Interpretado, multitarea y
dinmico
n

Interpretado
n

Multitarea (multithreading)
n

El intrprete Java puede ejecutar bytecodes sobre


cualquier mquina en la que el intrprete haya
sido portado
Java permite construir aplicaciones multitarea
(mltiples hilos de ejecucin)

Dinmico
n

Las clases son enlazadas slo conforme se


necesitan
Puede enlazarse cdigo desde mltiples fuentes
(incluido Internet)
10

El sistema base de Java


n

Conjunto de libreras de clases y de mtodos para


crear aplicaciones multiplataforma
java.lang: Coleccin 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 automticamente.

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 genricas, manejo de fecha

jawa.awt: Clases para crear interfaces grficas

n
n

y hora, strings, nmeros aleatorios...

11

El entorno de desarrollo
n

Existen multitud de programas para


desarrollar cdigo Java
JDK (Java Development Kit): distribuido
gratuitamente por Java
n

Cjto. de programas y libreras que permiten


desarrollar, compilar y ejecutar programas en Java
Debugger para la ejecucin paso a paso

JRE (Java Runtime Environment)


n
n

Slo permite ejecutar cdigo Java


No permite compilar
12

El compilador de Java
n
n

Compilador del JDK: javac.exe


Realiza un anlisis de sintaxis del cdigo
escrito en los ficheros fuente de Java (con
extensin *.java).
Si no encuentra errores, genera los ficheros
compilados (con extensin *.class).
Si hay errores, indica la lnea o lneas
errneas.
13

La Java Virtual Machine (JVM)


n

El compilador genera un cdigo neutro:


n

Java Virtual Machine


n

Interpreta el cdigo neutro y lo convierte a cdigo


particular de la CPU

La JVM dispone de numerosas opciones


n

Los bytecodes ficheros compilados con


extensin *.class

JIT(Just In-Time compiler) mejora de 10 a 20


veces la velocidad de ejecucin

Intrprete del JDK: java.exe


14

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)
15

Ejemplo (i)
import java.io.*;
Importa las clases del package java.io.
Hace posible acceder a las clases utilizando
nombres cortos.

1.
n
n

Ejemplo: se puede acceder a la clase


FileReader simplemente con el nombre
FileReader en lugar de con el nombre completo
java.io.FileReader.

16

Ejemplo (ii)
2.

// Clase HolaMundo

Comentarios (como en C++)


Tambin es vlido: /* Clase HolaMundo */

3.

class HolaMundo

n
n

Indica que se va a definir la clase HolaMundo


En Java todo son clases: no se puede definir una
variable o una funcin fuera de una clase
La clase HolaMundo tiene como finalidad acoger
al mtodo main
17

Ejemplo (iii)
5.
n
n

public static void main(String arg[])


La ejecucin del programa comienza en main
public: indica que la funcin puede ser utilizada
por cualquier clase
static: indica que es un mtodo de clase puede
ser utilizado aunque no sea creado ningn objeto
de la clase HolaMundo.
void: indica que el mtodo no tiene valor de
retorno
Argumento del mtodo: array de cadenas de
caracteres. Son parmetros que se pasan al
programa en el momento de comenzar la ejecucin
18

Ejemplo (iv)
System.out.println("Hola Mundo");

7.

Imprime una cadena de caracteres (string) en la


salida estndar del sistema
Se utiliza el mtodo 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, tambin llamada variable de


clase, es una variable miembro nica para toda la clase, y
que existe aunque no se haya creado ningn objeto de la
clase

19

Ejemplo (v)
Compilacin del programa:

n
n
n

javac HolaMundo.java
Genera el archivo HolaMundo.class

Ejecucin del programa:

n
n
n

java HolaMundo
Provoca:
1.
2.

3.

El intrprete cargue el archivo HolaMundo.class


Encuentre la clase del mismo nombre con un mtodo
pblico y esttico llamado main
Proceda a ejecutar el programa invocando dicho
mtodo
20

Estructura general de un
programa Java (i)
n

Programa Java:
n
n

Ficheros Java:
n
n

Clase que contiene el programa principal


Clases de usuario: especficas de la aplicacin
Fuentes: *.java
Compilados: *.class

Fichero fuente:
n
n

Puede contener ms de una clase


Slo una puede ser public (su nombre coincidir
con el del fichero)
21

Estructura general (ii)


n

Aplicacin: varios ficheros *.class


n
n

Cada clase realiza funciones particulares


Modularidad e independencia entre clases

La aplicacin se ejecuta por medio del


nombre de la clase que contiene la funcin
main, sin la extensin class.
Las clases se agrupan en packages: libreras
de clases
n

Si no se definen pertenecientes a un package, se


utiliza un package por defecto el directorio
actual
22

Potrebbero piacerti anche