Está en la página 1de 30

Primeros pasos en Java

Java como lenguaje de programacin


Veremos que existen diferentes lenguajes para escribir
(programar) aplicaciones. Unos son lenguajes
compilados y otros interpretados.
Java es un lenguaje interpretado
Indice
3
Lenguajes
Primera generacin. Aos 50:
ensamblador y cdigo mquina
Segunda generacin. Aos 60:
COBOL, FORTRAM, ALGOL y BASIC
Tercera generacin.
Aos 70:
PL/1, PASCAL, MODULA-2 (1980), ADA y C
Lenguajes de proposito general, procedimentales e imperativos
Aos 60-80:
LISP, PROLOG
Orientados a IA
Aos 80-90:
C++ (1982) y Java (1991, aunque no se empieza a usar en Internet hasta
finales de los 90)
Orientados a objetos
Cuarta generacin (4GL)


Indice
4
Cdigo compilado (I)
Hasta los 2000 la mayora de las aplicaciones se hacan con lenguajes
compilados. El ingeniero deba:
Crear el cdigo fuente (archivos con extensin .c, .cpp, etc)
Por medio de programas compiladores y enlazadores (link) crear el cdigo
ejecutable (archivos con extensin .com y .exe)
Cdigo fuente Compilador/enlazador Cdigo ejecutable
El cdigo ejecutable es dependiente del sistema operativo.
Para cada sistema hay un compilador
Si se quiere ejecutar en otro sistema operativo (SO) hay que
recompilar el cdigo fuente
Cdigo fuente
Compilador/enlazador
de S.O. X
Cdigo ejecutable para el
S.O. X
Compilador/enlazador
de S.O. Y
Cdigo ejecutable para el
S.O. Y
Indice
5
Cdigo interpretado (I)
El cdigo interpretado no es ejecutado directamente por el
sistema operativo. Necesita un interprete para ser
ejecutado
Cada sistema tiene su propio interprete
Cdigo fuente
Compilador
Cdigo interpretable
Interprete
Programa ejecutado
Ventaja: el cdigo interpretado no debe ser modificado,
ni recompilado cuando cambiamos de sistema operativo.
Cada sistema tiene su propio interprete
Inconveniente: es menos eficiente que el cdigo
ejecutado
Indice
6
Historia de Java
Java fue diseado en 1990 por James Gosling, de Sun Microsystems,
para programar dispositivos electrnicos de consumo como
calculadoras, microondas y la televisin interactiva
No fue diseado para Internet, de hecho naci antes de la era World
Wide Web
Bill Joy (cofundador de Sun y uno de los desarrolladores principales
del sistema operativo Unix de Berckeley) vio el inters de Java:
1. Creciente necesidad de interfaces mucho ms cmodas e intuitivas que
los sistemas de ventanas que proliferaban hasta el momento
2. Robustez. Gosling observ que muchas de las caractersticas que
ofrecan C o C++ aumentaban de forma alarmante el gran coste de
pruebas y depuracin
3. Multiplataforma. Java permite escribir un cdigo comn para todos los
dispositivos
Por ello, Java surgi como lenguaje en 1995. Netscape incluy un
interprete Java en su navegador



Indice
7
Java: cdigo interpretado
En muchos lenguajes (Cobol, C++, etc.) el programador crea un
programa (.exe) ejecutable por el sistema operativo.
En Java el cdigo fuente se escribe en archivos con extensin .java
El compilador (javac) no genera un programa (.exe) ejecutable
directamente por el sistema operativo. Genera cdigo interpretable,
un archivo .class (byte code)
El archivo .class es ejecutado por el interprete, tambin denominado
MVJ (mquina virtual Java)
Tambin existen en Java compiladores que generan cdigo ejecutable
(.exe) a partir del byte code. Esto mejora la eficiencia pero no es
portable

Indice
8
Interpretes y portabilidad
Lenguajes
compilados
Ejecutable
Windows
Ejecutable
Unix
Ejecutable
Mac
Lenguajes
interpretados
Cdigo
nico a
interpretar
Intrprete
Windows
Intrprete
Unix
Intrprete
Mac
Nivel
ejecucin
C, C++
Cdigo
Java
Java
Bytecodes
Cada compilador es dependiente
del sistema operativo (SO): genera
un programa ejecutable (.exe) para
un SO. Si se quiere ejecutar en otro
SO, hay que usar su copilador
correspondiente
El compilador no es dependiente del
SO: genera byte codes (.class) que
puede ser interpretado por cada uno
de los interpretes del SO
correspondiente
Indice
9
Diferentes entornos de ejecucin: aplicaciones y
applets
Con Java podemos hacer diversos tipos de programas:
Requieren servidor Internet
Applets: se alojan en el servidor Web y son enlazados desde una pgina Web. El usuario los descarga desde
un servidor web y los ejecuta en su ordenador (frente a las servlets, que se ejecutan en el servidor)
Servlets/JSP: se alojan y son ejecutados en el servidor
No requieren servidor Internet:
Aplicaciones aisladas (standalone): se pueden ejecutar desde la lnea de ordenes del sistema (mediante
Java.exe) y son independientes de una pgina Web. Normalmente estn alojados en el puesto cliente y se
conectan a un servidor de bases de datos.

Servidor Internet
Pginas HTML
Applets
Servlets
Internet
Las pginas y los applets
se descargan y ejecutan
en el cliente
Los servlets se ejecutan
en servidor y generan
una pagina web que se
descarga en cliente
Clientes
Clientes de aplicaciones
standalone
Red empresarial
Servidor empresarial
de base de datos
Datos
Java Development Kit (JDK)
El JDK es el conjunto de utilidades que nos permiten
crear el cdigo interpretado. Lo bsico es tener el
compilador javac.exe y el interprete java.exe
Indice
11
Diferentes ediciones del JDK
El JDK es el conjunto de herramientas que nos permiten
crear los programas. Existen diferentes JDKs, en funcin de
las necesidades del programador. Dos de las ediciones ms
conocidas son:
Java Standard Edition (JSE): para escribir aplicaciones y applets.
Descargable desde http://java.sun.com/javase/downloads/index.jsp

Java Enterprise Edition (JEE): para tecnologas Servlets/JSP, EJB,
etc, dentro del entorno Internet. Descargable desde
http://java.sun.com/javaee/downloads/index.jsp

Indice
12
Descarga e instalacin del JDK
Las ltimas versiones incluyen un programa
de instalacin (wizard) que facilita la tarea
En este ejemplo se est ejecutando un wizard
de JEE 1.5. Que el aspecto grfico de este
ejemplo sea diferente respecto a la
instalacin que este intentando es lo de
menos, depende de la edicin y versin
elegida
Las dos cosas importantes:
Definir el directorio de instalacin. Lo
aconsejable es dejar la ruta que propone el
programa
Incluir el directorio bin en la variable
path del sistema, de esta forma podremos
trabajar en la lnea de ordenes

Indice
13
La variable path (I)
En Windows (y en otros sistemas) cuando trabajamos en
la lnea de ordenes y ejecutamos un programa el sistema
busca el programa de la forma siguiente:
1. Busca en el directorio actual; si no lo encuentra, sigue en el
siguiente punto
2. Busca en los directorios o carpetas definidos en la variable path:
Si no lo encuentra responde con un mensaje parecido a este:
MiPrograma no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
Si lo encuentra, lo ejecuta. En el siguiente ejemplo ha encontrado el
programa Notepad.exe, ya que en la variable path se encuentra
definido el directorio donde se aloja dicho programa: C:\WINDOWS

Indice
14
La variable path (II)
Cmo saber el contenido de la variable
path?
1. En la lnea de ordenes: escribir path (sin
dobles comillas). Con set se muestran todas
las variables del sistema
2. En Inicio-Panel de control-Sistema-
Opciones Avanzadas-Variables del
sistema
Se puede cambiar en (2), pulsando
Modificar, escribiendo el directorio
(separamos los directorios con punto y
coma) y a continuacin pulsar Aceptar
Ojo: los cambios en (2) se reflejan en las
nuevas instancias de la lnea de ordenes, no
en las que ya estuviesen abiertas antes de
los cambios
Ejemplo:



Indice
15
Directorio jdk\bin en el path
Programas como el compilador javac.exe o el interprete java.exe se
encuentran en el directorio bin del jdk. Ejemplos de directorio bin
(dependiendo de su edicin, versin y presentacin comercial):
C:\Sun\AppServer\jdk\bin
C:\j2sdk1.4.2_11\bin
C:\JBuilder2005\jdk1.4\bin
Dependiendo de la versin y edicin los directorios base se pueden llamar de
forma diferente. Lo que importa es que siempre habr un subdirectorio bin
del jdk.
Para que java.exe y javac.exe se puedan usar desde la lnea de ordenes
necesitamos que el directorio bin este en la variable path
Lo normal es que el instalador del JDK introduzca este directorio. Pero si no
es as, debemos hacerlo nosotros, accediendo al Panel de Control
Si el directorio no est en el path, cuando escribamos javac nos
responder javac no se reconoce como un comando interno o externo .
Si est en el path, entonces lo encuentra y nos devolver Usage: javac
<options> <source files> . Esto significa que lo ha ejecutado y el programa
nos devuelve una pequea ayuda al no haber recibido los argumentos
correctos
Indice
16
La variable JAVA_HOME
En bastantes entornos de desarrollo integrado (IDE) es
necesario tener definida la variable JAVA_HOME. En
ocasiones la define el instalador, si no es as, conviene que
la defina el programador
La variable representa el directorio base del jdk
Ejemplo. Para ver su contenido desde la lnea de ordenes:
Para definirla se puede usar Inicio-Panel de control-
Sistema-Opciones Avanzadas-Variables del sistema.
Si no existe usar el botn Nueva.
Si existe, usar Modificar
El primer objeto. El mtodo main
Vamos a crear un programa que muestra el mensaje
Hola mundo slo con el soporte del JDK y el
Notepad, sin ayuda de un entorno de desarrollo
integrado (IDE). Antes de crear el programa debemos
de organizar nuestro proyecto de desarrollo
Indice
18
Clases y objetos: la teora de conjuntos
En la teora de conjuntos diferenciamos:
Concepto de conjunto, en que definimos
atributos caractersticos, por ejemplo la edad
y el nombre.
Concepto de instancia (elemento o
individuo), donde cada atributo puede tener
un valor

En la programacin orientada a objetos
ocurre algo parecido, ya que diferenciamos:
Concepto de clase, con sus atributos
caractersticos
Concepto de instancia u objeto

cmo se hace una instancia en Java?
Nombre_de_clase Nombre_Objeto = new
Nombre_de_clase();
Ejemplo: Persona pepe = new Persona();

Conjunto de Personas. Atributos:
{edad, nombre}
Pedro. Valores: {33, Pedro}
Mi tia. Valores: {46, Carmen}
Class Persona:
int edad
String nombre
Pedro:
Persona pedro = new Persona( 33, Pedro);
Mi ta:
Persona tia = new Persona( 46, Carmen );
Indice
19
Nuestra aplicacin Hola mundo
Hola.java (no lo escriba, ms adelante explicaremos el directorio donde ponerlo):
package saludo.inicio;
/**********************************
Este es nuestro primer programa. Muestra un sencillo mensaje
*********************************/
public class Hola {
public static void main(String[] args) { // El programa empieza a ejecutarse en main
System.out.println( "Hola mundo"); // Salida por pantalla
}
}
Notas:
1. Empecemos por los comentarios (no se compilan, son explicaciones o notas del programador):
Comentario de bloque: /* ... */
Comentario de lnea: //...
2. La palabra reservada class sirve para sealar que se empieza a definir una clase, delimitada por llaves: {}
3. La palabra reservada public es un especificador de acceso. Lo que es pblico es accesible desde fuera de
la clase o paquete. La clase es pblica, ya que va a ser instanciada por el JVM (interprete)
4. La funcin main (no Main, ni MAIN), es el punto de inicio de la ejecucin del programa. El mtodo
define el comportamiento de la clase, aquello que hace. Es pblico, ya que debe ser llamado desde fuera de
la clase, por parte del interprete (JVM)
5. static lo veremos ms adelante, indica que se puede acceder a la funcin sin hacer referencia a una
instancia de la clase
6. void indica que la funcin main no devuelve nada
Indice
20
Normas y consejos
Convenciones:
Nombres de clases: primera en maysculas
public class Hola
Nombre de paquete: minsculas
package saludo;
Atributos y variables: minsculas. Si juntamos varias palabras, usar maysculas a
partir de la segunda
int edad;
int contadorSaludos;
Mtodos: minsculas. Si juntamos varias palabras, usar maysculas a partir de la
segunda
public static void main(String[] args) {
public mostrarSaludo()
Normas:
Un archivo .java tendr una clase. Hay IDEs que relajan esta norma y permiten
poner varias clases en un archivo .java, pero nosotros seguiremos esta norma
El nombre de la clase ser el mismo que el nombre del archivo .java
Un consejo: no use espacios en blanco ni tildes en los nombres de
directorios o archivos. Tampoco convienen nombres demasiado largos

Indice
21
Organizacin de la ingeniera del software
En muchas actividades asociadas a la ingeniera antes de
empezar a construir el producto debemos tomar
decisiones sobre:
Los objetivos y funciones que debe cumplir el producto
La forma en que se organiza el desarrollo o construccin del
producto
Respecto a la organizacin del desarrollo de una aplicacin
debemos tener en cuenta cmo vamos a estructurarlo. En
nuestro caso la primera decisin es la estructura de
directorios o carpetas de nuestro proyecto.

Indice
22
Estructura del proyecto
Qu es un proyecto?
Es la forma de agrupar todos los elementos de nuestra aplicacin. Una
aplicacin puede contener numerosos archivos .java, .class, .properties, .jar,
.txt, etc. La idea es agruparlo todo bajo un proyecto. Para ello, nos servimos
de la estructura de directorios y crearemos el directorio raz del
proyecto: Saludo01
A continuacin crearemos los siguientes subdirectorios para
diferenciar el cdigo fuente del cdigo interpretado:
Subdirectorio src. En este directorio o en alguno de sus subdirectorios
colocaremos el cdigo fuente (.java)
Subdirectorio bin. En este directorio o en alguno de sus subdirectorios
colocaremos el cdigo interpretado (.class)
El aspecto final puede ser:
Indice
23
Estructura de paquetes (I)
Adems dentro de cada uno de los subdirectorios
anteriores (src y bin) debemos reflejar la estructura interna
de nuestra aplicacin.
Los archivos de cdigo se agrupan en paquetes o
directorios. Veremos que cada parte, bloque o paquete de
nuestra aplicacin debe diferenciarse de las dems por su
funcin dentro del proyecto. De la misma forma que si
construimos un coche clasificamos las piezas en
funcin de la parte o funcin a la que pertenecen
(chasis, motor, electrnica de control, etc.), no las
mezclamos todas en un nico cajn.
De la misma forma, los archivos de cdigo Java no se
escriben todos en un nico directorio o paquete, sino que
se sitan en un paquete en virtud de su funcin.
Indice
24
Estructura de paquetes (II)
En nuestro caso tendremos un directorio o paquete raz, que
denominaremos saludo, del que derivaremos los siguientes subdirectorios o
paquetes:
inicio: paquete donde est la clase que sirve de inicio al funcionamiento de la
aplicacin, aquella que contiene el mtodo main (Hola.java)
dominio: tendr las clases que representen el domino del problema, por ejemplo en
un entono de banca tendremos clases como Cuenta, Cliente, etc. En un entorno de
universidad tendremos clases como Alumno, Profesor, Asignatura, etc. Por ahora la
crearemos, pero la dejaremos vaco de archivos.
Todo esto lo haremos de forma paralela, tanto en el directorio bin como en
src. De forma que los subdirectorios de uno sean espejo de los de otro. El
aspecto final sera:
Observe que la primera
lnea del archivo .java es el
paquete al que pertenece:

package saludo.inicio;
Indice
25
Compilar y ejecutar
Para compilar me sito en el directorio src
Ejecuto javac.exe con la opcin d, para indicar el directorio de salida, es
decir, el directorio a partir del cual va a poner los archivos .class
El segundo argumento es el archivo que se compila (se permiten comodines, por
ejemplo *.java)
Como directorio de salida hemos puesto bin. Sin embargo, el archivo Hola.class
lo sita, correctamente, en bin\saludo\inicio. Por qu no pone el archivo
.class en bin? La respuesta es que al compilar ve que la clase pertenece al
paquete saludo.inicio (la primera lnea del archivo .java indica el paquete), por
tanto pone el archivo .class en el directorio indicado por la unin:
Directorio_de_salida U ruta_de_paquete, es decir:
c:\DOC\Java_libre\Saludo01\bin\ U saludo\inicio
En nuestro ejemplo hemos usado para la opcin d una ruta absoluta, pero
podramos haber indicado una ruta relativa: ..\bin
Indice
26
Extendiendo el ejemplo
Ponemos en el paquete saludo.dominio la clase:
package saludo.dominio;

public class Persona {
public String nombre;
public int edad;
public void mostrar() {
System.out.println("Mi nombre es " + nombre +" y tengo " + edad + " aos");
}
}
A continuacin cambiamos la clase Hola:
package saludo.inicio;
import saludo.dominio.*;

public class Hola {
public static void main(String[] args) {
System.out.println( "Hola mundo");
Persona ana = new Persona();
ana.nombre = "Ana Maria";
ana.edad = 18;
ana.mostrar();
}
}
En Persona.java usamos la expresin de acceso public, ya que queremos acceder a los
atributos y mtodos desde fuera del paquete donde est la clase Persona
En Persona.java hay diversas cosas interesantes y nuevas:
Por qu import?
Cmo se crea el objeto o instancia?
Cmo se accede a los atributos y mtodo de la instancia?
Paquetes
De la misma forma que las carpetas nos sirven para
clasificar los documentos, los paquetes son una forma de
clasificar las clases
Indice
28
Paquetes
Los paquetes son formas de agrupar clases, nos permiten tenerlas
clasificadas, del mismo modo que las estanteras nos sirven para
clasificar los libros
Un paquete es un concepto, una construccin lgica, que se
corresponde con un directorio o carpeta
Para definir que una clase pertenece a un paquete hay que:
Usar la palabra package en la primera sentencia de un archivo
fuente: package nombre_paquete;
Poner el archivo java en el directorio correspondiente
Ejemplo: todos los archivos del paquete j10_composicion tendrn la
sentencia package j10_composicion, adems los archivos .java y
.class se deben almacenar en el directorio j10_composicion
Se pueden crear jerarquas de paquetes, separando los niveles
por puntos. A la hora de crear el paquete es necesario reflejar la
jerarqua en el sistema de directorios y en la sentencia
package, por ejemplo en MiClase.java:
package sistema.presentacion;
(el archivo debe situarse en /sistema/presentacion)
Indice
29
Importacin
Supongamos que estamos en la clase saludo.inicio.Hola. Si desde Hola usamos clases
que estn fuera de su paquete (saludo.inicio), entonces nos puede aparecer el
siguiente error:
package saludo.inicio;

public class Hola {
public static void main(String[] args) {
Vector vector = new Vector()

}
}
El compilador no encuentra el lugar donde est definida la clase Vector. Para evitar este
problema se le indica mediante la expresin import (entre package y class) el
paquete donde encontrar la clase:
package saludo.inicio;
import java.util.Vector;

Para importar clases se debe tener en cuenta la jerarqua de mltiples paquetes,
separados por puntos. Al final hay que definir la clase que se importa o usar el asterisco
para denotar todas las clases de un paquete. Ejemplo:
import java.io.*;
import java.util.Date;
Las clases predefinidas en Java son aquellas importadas de forma automtica por el
compilador, por ejemplo, las clases del paquete java.lang (como String). De tal forma que
no es necesario escribir:
import java.lang.*;
No se puede encontrar el
smbolo Vector o No puedo
resolver Vector
Indice
30
Acceso
Con los paquetes tambin podemos determinar niveles de acceso:
Se puede acceder desde fuera del paquete a cualquier elemento del
paquete que sea pblico
Aquello que es privado no puede ser accesible fuera del paquete
Puede acceder a los elementos protected de un paquete, pero slo desde
clases que heredan los elementos protected del paquete
Si no especifica ningn modificador de acceso no podr acceder desde
fuera del paquete

También podría gustarte