Vous êtes sur la page 1sur 15

Curso de Java

TEMA 1
Introduccin al lenguaje Java

Qu es Java?

La plataforma Java es fundamentalmente una nueva va de programacin. Fue


desarrollado por Sun MicroSystem con la intencin de competir con Microsoft en el
mercado de las redes. Se basa en la idea de que el mismo software debe correr en
diferentes sistemas y dispositivos. Java nace como un lenguaje derivado de C++
que intentaba eliminar las deficiencias del mismo. En principio se le denomin OAK
y tras algunas modificaciones dio lugar al actual Java. Se lanz al mercado en el
verano de 1995.

Dnde trabaja Java?

Con la tecnologa Java se puede usar la misma aplicacin sobre cualquier tipo de
hardware PC, Macintosh, ordenadores de red, con cualquier sistema operativo o
incluso en otro tipo de dispositivos como telfonos mviles, televisores. Es decir,
funciona sobre cualquier tipo de dispositivo compatible que soporte la plataforma
Java.

Por qu la tecnologa Java?

Las redes requieren software que sea portable, modular y seguro. Todas esas reas
forman parte de la tecnologa Java, debido a que fue diseado para ser usado en
ambientes de redes. Adems, Java es smbolo de transicin de cambios en la
cultura informtica. Esta transicin permitir a muchas empresas resultados de
facto, los cuales servirn para afrontar las nuevas tecnologas emergentes.

Jess Cceres Tello Pg. 1 - 15


Curso de Java

Dnde se encuentra Java?

La plataforma Java est incorporada en la mayora de los Web browsers y algunos


sistemas operativos como Solaris, Windows, Unix y MacOS. La tecnologa Java
tambin est incorporada en la actual generacin de telfonos, TVs, tarjetas
inteligentes y dispositivos inteligentes.

Caractersticas bsicas de Java

Simplicidad

Funcionalidad sin componentes complicados


Fcil de aprender (sintaxis similar a C++)
Elimina de C++:
o Aritmtica de apuntadores
o Structs
o Typedef
o #define
o necesidad de liberar memoria (constituye el 50% de las fuentes de error)

Orientado a Objetos

Emplea la tecnologa orientada a objetos de C++, agregando algunos


componentes y eliminando otros para conservar la simplicidad. Para Java un
objeto es un conjunto de variables y de mtodos relacionados con esas
variables.

Interpretado

El interpretador de Java puede ejecutar instrucciones directamente desde su


cdigo objeto. La mayor parte del cdigo necesario para la ejecucin se
genera durante la compilacin.
El proceso de linkado se realiza automticamente durante la ejecucin, esto
permite utilizar las definiciones de clase ms recientes.

Distribuido

Posee capacidades extensas de manejo de redes TCP/IP


Existen rutinas para interactuar con protocolos como HTTP y FTP
Provee acceso a informacin mediante la red, con la misma facilidad con la
que se accede a archivos locales.

Robusto

Chequea problemas al compilar y ejecutar


Chequeo de tipos
Manejo de memoria: protegerla y liberarla

Independiente de la Arquitectura

Java como parte integral de una red

Jess Cceres Tello Pg. 2 - 15


Curso de Java

El cdigo se compila en un archivo con formato independiente de la


arquitectura
El cdigo est diseado para ejecutarse en una mquina virtual (Java
Virtual Machine)

Adems Java cuenta con:

Chequeo de apuntadores nulos


Chequeo de arreglos
Excepciones
Verificacin de bytecodes
Recoleccin de basura automtica

Otras caractersticas

Porttil

La portabilidad de las aplicaciones en Java se logra tanto por la independencia de la


plataforma como por algunos estndares que se adoptan como por ejemplo:

Los tipos de datos int son siempre enteros complementados de 32 bits


Las intefaces de usuario se basan en un sistema de ventanas abstracto, as
las venanas pueden ser implementadas en ambientes UNIX, PC, Mac.

Alto desempeo

Si la velocidad del interpretador no es satisfactoria, el compilador puede traducir el


cdigo de objeto en lenguaje de mquina en tiempo de ejecucin. El compilador
optimiza automticamente el cdigo objeto.

El desempeo que se obtiene al ejecutar el cdigo traducido, no se distingue al


cdigo obtenido como nativo C C++.

Multihilo

Permite el desarrollo de varias actividades de manera simultnea dentro de un


programa 100% Java.

Mejor desempeo y comportamiento en tiempo real

Pueden utilizarse hilos separados para no tener que esperar a que las actividades
lentas o pesadas terminen, para que otras de menor peso puedan llevarse a cabo.

Dinmico

El lenguaje Java no conecta los mdulos que compone una aplicacin hasta el
momento de su ejecucin. Agregar o actualizar libreras es simple.

Jess Cceres Tello Pg. 3 - 15


Curso de Java

Componentes de Java

El programa Java

Los ficheros fuente de Java tienen la extensin .java. Cada fichero .java define una
clase pblica (y, posiblemente, ms de una clase privada usada por la clase
pblica). Los ficheros bytecodes generados por la compilacin tienen la extensin
.class. Un fichero .java puede generar ms de un fichero .class, si en el fichero
.java se define ms de una clase. El nombre del fichero .java debe corresponder
con el nombre de una clase definida en l.

Las clases (ficheros .class) se organizan en paquetes. Un paquete contiene un


conjunto de clases. A su vez, un paquete puede contener a otros paquetes. La
estructura es similar a la de los directorios y ficheros. Los ficheros hacen el papel
de las clases Java y los directorios hacen el papel de paquetes. De hecho, la
estructura de directorios en la que se organizan los ficheros .class (estructura fsica
del sistema operativo) debe corresponderse con la estructura de paquetes definida
en los ficheros fuente .java.

Por ejemplo, si al comienzo de un fichero .java llamado Persona.java se escribe

package misclases.negocios;

estamos declarando que la clase Persona (el fichero Persona.class) deber residir
en una estructura de directorios misclases/negocios. El directorio misclases puede
estar en cualquier lugar del rbol de directorios del sistema operativo; eso s, su
directorio padre debe estar incluido en la variable CLASSPATH para que el
intrprete y el compilador java pueda encontrar la clase Persona.

Los directorios de paquetes y los ficheros de clases pueden compactarse en ficheros


JAR (por ejemplo misclases.jar). Un fichero JAR es un fichero de archivo (como ZIP
o TAR) que contiene comprimidos un conjunto de directorios y ficheros. Es normal
comprimir toda una libera de clases y paquetes comunes en un nico fic hero JAR.
Para crear un fichero JAR hay que llamar al comando jar del SDK.

Para que el compilador y el intrprete pueda usar las clases de un fichero JAR, hay
que incluir su camino (incluyendo el propio fichero JAR) en el CLASSPATH.

La Mquina Virtual de Java Java Virtual Machine (JVM)

JVM es una mquina imaginaria que se implementa mediante una


emulacin en software sobre una mquina real

Es tarea del interpretador desarrollarlo para cada plataforma, asegurar la


correcta ejecucin del cdigo compila do.

Jess Cceres Tello Pg. 4 - 15


Curso de Java

El Recolector de Basura Garbage Collector

Cuando no hay ninguna referencia a un objeto determinado, se asume que


ese objeto no se va a utilizar ms, y la memoria ocupada por el objeto se
libera.
La recoleccin de basura ocurre en forma espordica durante la ejecucin de
un programa y no se produce simplemente porque uno o ms objetos hayan
dejado de utilizarse.
Las diferentes implementaciones de los intrpretes de Java siguen un
procedimiento diferente cuando realizan la recoleccin de basura

Seguridad de Cdigo

Java limita el programa a un entorno de ejecucin Java y no permite que se


acceda a otras partes del ordenador (sistema operativo)
Se implementa a travs de un modelo conocido como SandBox (caja de
arena)

El intrprete Java

El intrprete Java tiene cuatro tareas principales:

Leer el cdigo Class Loader

o Lee todas las clases necesarias para la ejecucin


o Separa las clases locales de las de red
o Se crea el esquema de memoria y se asignan las direcciones vlidas

Verificar el cdigo Verificador de bytecodes

o Revisa los fragmentos del cdigo y aplica algoritmos (clculos) para


detectar la existencia de fragmentos ilegales: apuntadores falsos,
violaciones en los derechos de acceso a los objetos, etc...

Se realizan cuatro revisiones en el cdigo. Esto asegura que:

o El cdigo se adhiere a las especificaciones de la JVM


o No hay violaciones en las restricciones de acceso
o El cdigo no causa overflow / underflow
o Los tipos de los parmetros son correctos
o No hay conversiones ilegales de datos

Ejecutar el cdigo Intrprete de ejecucin

Jess Cceres Tello Pg. 5 - 15


Curso de Java

Instalacin de Java

Descripcin

Toda instalacin de Java pasa por una herramienta proporcionada por Sun, el
creador de Java, que es el Java Development Kit (JDK), desarrollado por Sun
MicroSystem. El JDK tiene varias familias diferentes, dependiendo de su uso:

Java 2 Standard Edition o J2SE, ms orientado al uso personal


Java 2 Enterprise Edition o J2EE, una versin ms empresarial
Java 2 Micro Edition o J2ME, orientado al desarrollo de aplicaciones para
mviles y otros dispositivos wireless.
Java 2 Card Edition o Javacard, orientado al manejo de tarjetas inteligentes.
Otras como Java2D, Java3D, JavaMail, Java Web Services, ....

En este curso nos centraremos en la Edicin Estndar (J2SE) la cual se distribuye


individualmente o bien con un entorno de edicin de cdigo Java, Eclipse,
NetBeans, ...

Descarga e Instalacin

Lo primero es proceder a la descarga de los programas desde sus sitios de origen


para lo cual en una ventana de un navegador teclearemos la siguiente direccin:

http://java.sun.com/javase/downloads/index.jsp

En esta pantalla elegiremos la opcin JDK 5 Update 7 si deseamos descargar


tambin el entorno de desarrollo NetBeans o bien JDK5 Update 8 si nicamente
deseamos descargarnos el kit estndar.

Nota: No optar por la opcin Update ya que instala tambin la edicin empresarial
(J2EE)

Para sistemas Windows optaremos por el instalador Offline para no tener problemas
en la descargar Windows Offline Installation, Multi-language en el caso de kit
estndar.

Tras ser instalado el JDK se generarn una serie de carpetas dentro de la carpeta
c:\ j2sdk1.4.2_08, o similar, dependiendo de la versin elegida, entre ellas cabe
destacar dos:

- bin: en ella se encuentran todos los programas ejecutables del jdk


- lib: contiene las clases del api de java (libreras de Java)

Configuracin

Una vez realizado el proceso de instalacin, tenemos que realizar la configuracin


de dos variables de entorno de suma importancia para el correcto funcionamiento
del kit de desarrollo: PATH y CLASSPATH.

Jess Cceres Tello Pg. 6 - 15


Curso de Java

PATH: Contiene la ruta de acceso a los programas que con ms frecuencia


uses, de modo que para ejecutar un programa bastar con escribir su
nombre y Windows lo buscar en las rutas especificadas en esta variable de
entorno, de este modo nos ahorramos tener que escribir toda la ruta hasta
llegar a l.
CLASSPATH: Indica la JDK dnde debe buscar los archivos a compilar o
ejecutar, sin tener que escribir en cada ejecucin la ruta completa.

Ejemplo.

Si no tuvisemos configuradas estas dos variables, para compilar un programa


en java ubicado en un directorio tendramos que escribir lo siguiente en la
ventana de Ms-Dos:

C:\> C:\ j2sdk1.4.2_08\bin\javac C:\MisProyectosJava\miclase.java

Sin embargo, con estas dos variables configuradas escribiramos lo siguiente:

C:\>javac miclase.java

Su configuracin vara un poco dependiendo del sistema operativo que se utilice, 95


98, o para Windows NT, 2000 o XP

Para las versiones 95 y 98 tendramos que localizar el fichero c:\autoexec.bat y


editarlo aadiendo las siguientes lneas:

SET PATH = %PATH%; C:\ j2sdk1.4.2_08\bin


SET CLASSPATH = .; C:\ j2sdk1.4.2_08\BIN

Nota: El punto en la variable Classpath indica que la


estructura de directorios actual ser tambin accesible
desde cualquier ubicacin.

En las versiones ms nuevas de Windows basta con


pulsar con el botn derecho del ratn el icono del
escritorio Mi PC y seleccionar Opciones Avanzadas,
al final de esta ventana hay una opcin Variables de
Entorno que es donde podremos visualizar, modificar
e insertar este tipo de variables.

Jess Cceres Tello Pg. 7 - 15


Curso de Java

No es lo mismo variables de usuarios que variables del sistema:

Las variables de entorno del usuario son diferentes para cada usuario de un
equipo particular. Entre estas variables se incluyen las configuradas por el
usuario, as como las definidas por programas, por ejemplo, la ruta de
acceso a la ubicacin de los archivos de programa

Las variables de entorno del sistema nicamente pueden ser agregadas por
administradores del sistema y afectan a todo el sistema, es decir a todos los
usuarios del sistema. Durante la instalacin de Windows se configuran
variables de entorno de sistema predeterminadas, como el nmero de
procesadores (NUMBER_OF_PROCESSORS ) y la ubicacin de los directorios
temporales (TMP y TEMP).

Nota: Como consejo no agregar directorios directamente a la variable del sistema


Path salvo que se tenga la certeza de que son directorios seguros, ya que un
usuario malintencionado podra colocar un caballo de Troya u otro programa nocivo
en estos directorios. Al ejecutarlo, este archivo podra divulgar datos importantes,
causar prdidas de datos o producir un error parcial o total del sistema.

Esta ventana nos ofrece La forma de insertar una nueva variable de entorno es
pulsando el botn Nueva, modificar una variable existente Modificar o bien
eliminar una variable Eliminar.

La forma correcta de introducir las


rutas es crear variables intermedias
como Java_Path las cuales
guardarn la ruta, en este caso, de
los programas ejecutables del kit de
Java. Estas variables intermedias
sern las que se utilizarn para
definir las variables vistas
anteriormente (PATH y CLASSPATH)
evitando de este modo utilizar rutas
absolutas directamente en estas
variables evitando posibles riesgos:

Jess Cceres Tello Pg. 8 - 15


Curso de Java

El entorno J2SDK, Java 2 Standard Development Kit

El J2SDK es un entorno de programacin suministrado gratuitamente por Sun,


como se ha visto anteriormente.

Es conocido que el entorno jdk no es el m s adecuado para el desarrollo de


aplicaciones Java, debido fundamentalmente a que funciona nica y exclusivamente
mediante comandos de consola, frente a otros programas que ofrecen entornos
grficos como son JBuilder, JCreator y otros. Sin embargo el J2SDK es un entorno
bastante til para aprender el lenguaje, ya que aunque los entornos visuales
agilicen mucho el trabajo, generalmente obligan a volver al cdigo a modificarlo
tanto para afinar en el comportamiento deseado como en el hecho de que estos
progra mas suelen introducir cdigo redundante, lo cual se traduce en que se debe
dominar el lenguaje y la mejor manera para ello es enfrentarse al cdigo en un
dominio hostil que no ayude, simplemente ejecute el cdigo generado.

Entre los comandos ms utilizados por este kit de desarrollo estn los siguientes:

JAVAC. Es el comando compilador de Java. Su sintaxis es:

javac ejemplo.java

La entrada de este comando es el fichero con cdigo Java que se desea


compilar. Este comando crear un fichero .class por cada clase que contenga el
fichero Java. Estos ficheros contiene cdigo bytecode, que es un cdigo que es
interpretado por la Mquina Virtual de Java.

JAVA. Es el intrprete de Java. Permite ejecutar aplicaciones que


previamente hayan sido compiladas y transformadas en ficheros .class. Su
sintaxis es la siguiente:

java ejemplo

Jess Cceres Tello Pg. 9 - 15


Curso de Java

No es necesario introducir la extensin ya que siempre deber ser un fichero


.class.

APPLETVIEWER. Es el comando que verifica el comportamiento de un


applet (programa Java insertado en una pgina web html - ) que se desea
probar. Su sintaxis es la siguiente:

Appletviewer mipagina.html

El comando ignora todo el contenido de la pgina web que no sean applets y


se limita a ejecutar la parte Java. Un ejemplo de pgina web mnima para poder
probar un applet llamado miapplet.class sera:

<HTML>
<TITLE>Mi applet</TITLE>
<BODY>
<APPLET CODE=miapplet.class WIDTH=100 HEIGHT=100>
</BODY>
</HTML>

JAVADOC. Es un comando muy til que permite generar un conjunto de


pginas web a partir de un fichero con extensin Java. Su sintaxis es la
siguiente:

javadoc ejemplo.java

Este coma ndo, o herramienta, toma en consideracin algunos comentarios


para general una documentacin bien presentada de clases y componentes de
clases (variables y mtodos).
Aunque javadoc no ayuda a la comprensin de los detalles de cdigo, si
ayuda a la comprensin de la arquitectura de la solucin. Javadoc exige que los
comentarios deban empezar por /** y terminar por **/, incluyendo una descripcin
y algunas etiquetas especiales

/**
Parte descriptiva que puede consistir en varias lneas
O prrafos

@etiqueta texto de la etiqueta


**/
@author nombre del autor
@deprecated el mtodo ha sido reemplazado por otro
@exception la excepcin que puede generar
@param los parmetros que requiere la funcin
@return el valor que devuelve
@version identificacin de la versin y fecha
@see referencia a otras clases y mtodos
@since indica desde qu versin o fecha existe esta clase o interfaz en el paquete
@throws es un sinnimo para @exception

Jess Cceres Tello Pg. 10 - 15


Curso de Java

Una aplicacin Mnima de Java

Una vez completados todos los pasos anteriores vamos a realizar una prueba para
comprobar que funciona correctamente. Esta prueba se basar en la codificacin y
ejecucin de nuestro primer programa en Java

public class HolaJava


{
//El programa comienza con una llamada al main()
public static void main(String args[])
{
//Desplegamos por pantalla un mensaje
System.out.println(Hola Java);
}

Ejemplo 1. 1: Primer programa en Java. Clase Hola Java

Nota: Cuidado con las maysculas y minsculas. Java es Caps Sensitive, es decir,
Java distingue entre maysculas y minsculas. No es lo mismo HolaJava que
holajava.

Elementos del programa

- public: al mtodo tiene acceso cualquiera, incluyendo el interpretador


- static: el mtodo main se refiere a la clase y no a una instancia de sta. En
variables significa que existe una nica copia de esa variable para
todas las instancias de esa clase. Una funcin ser declarada como
static cuando nicamente pueda acceder a variables static de esa
clase.
- void: main no devuelve ningn valor
- args[]: declara una matriz de String. Contiene los argumentos escritos en la
lnea de comando despus del nombre de la clase: java Hola args[0]
args[1]

Importando paquetes y clases en Java

Las clases se pueden organizar en libreras llamadas paquetes (package). Para


que una clase de un paquete est disponible en un cdigo, se debe importar el
paquete que la contiene, es decir, se indica al compilador dnde encontrar esa
clase. La sintaxis de la instruccin es la siguiente:

import [paquete1 [.paquete2...] (nombre de clase |*);

Jess Cceres Tello Pg. 11 - 15


Curso de Java

Se pueden importar clases individuales o todo el paquete que la contiene, la


diferencia sera la siguiente:

Supongamos que tenemos el siguiente ejemplo, muchas personas hacen esto:

import java.io.*;
import java.util.*;
import javax.swing.*;
...
...

Del mismo modo, otras personas y la mayora de los IDES hacen esto otro:

import java.io.BuffferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Date;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
...
...

Aunque a simple vista se podra pensar que un archivo pesar ms que otro, ya que
importa todo el paquete en vez de las clases que necesita, lo cierto es que ocupan
lo mismo, ya que la instruccin import lo que hace es indicar al compilador dnde
debe buscar las clases que necesita.

La diferencia vendr a la hora de compilar los dos programas, notaremos que el


primero tardar ms en compilar que el segundo, esto se debe a que en el primero
tendr que buscar la localizacin de cada clase dentro de los paquetes que se le
indican mientras que en el segundo ir directamente a buscarlos. Es decir, la nica
diferencia es en tiempo de compilacin aunque puede darse otra caracterstica, si
utilizamos un clase que se haya en dos paquetes nos dar un error en la
compilacin del programa.

Imaginemos que utilizamos en este programa la clase Date(). Esta clase se haya en
dos paquetes de los indicados en la sentencia import, java.sql.Date y java.util.Date.
El resultado, como se ha comentado anteriormente, es un error de compilacin que
puede dar muchos dolores de cabeza. Lo recomendado en estos casos es indicar en
las sentencias import la ruta precisa de las clases que se vayan a utilizar en el
programa.

Jess Cceres Tello Pg. 12 - 15


Curso de Java

import java.util.Date;

public class app {


public static void main(String[] arg) {
System.out.println(Hoy es : + new Date());
}
}

Diseo de programas en Java

Uno de los aspectos ms importantes en la creacin de una nueva aplicacin es


disearla. Microsoft divide el proceso de diseo de aplicaciones en cuatro reas
fundamentales:

Rendimiento

Este factor depende de las necesidades de los usuarios, de lo que esperan de la


aplicacin. Para algunos la velocidad es esencial, para otros la robustez. Algunos
aspectos a considerar a la hora del diseo de la aplicacin son los siguientes:

Eficiencia del algoritmo


Velocidad de la CPU
Diseo y normalizacin eficiente de la base de datos
Velocidad de la red
Temas de seguridad
Usos de recursos
Velocidad de acceso a Internet

Mantenimiento

Es el factor que determina el grado de adaptabilidad de la aplicacin a necesidades


futuras. Este factor se deriva de las buenas prcticas de programacin. Algunos
aspectos de la programacin ptima son los siguientes:

Evitar el uso de bucles y condicionales anidados


Evitar el paso de variables globales a procedimientos
Ser modular cuando se escribe el cdigo
Dividir el cdigo en paquetes
Documentar los cambios en el programa
Dar a cada procedimiento un nico propsito
Asegurarse de que la aplicacin puede extenderse sin problemas a ms
tareas y mayor nmero de usuarios
Planificar la reutilizacin de cdigo
Uso de procedimientos para el acceso a datos sensibles
Uso de comentarios
Uso de nombres de variables consistentes
Uso de constantes en lugar de nmeros mgicos

Jess Cceres Tello Pg. 13 - 15


Curso de Java

Extensibilidad

Es el factor que determina la capacidad de la aplicacin para extenderse de una


forma bien definida y relativamente fcil. De hecho Java, en s mismo, est
diseado para ser extendido, usando el framework de extensiones Java.

Disponibilidad

Este factor indica el tiempo que la aplicacin puede utilizarse, en comparacin con
el tiempo que los usuarios quieren utilizarla. Esto incluye todo, la disponibilidad
cuando se est ejecutando un proceso, cuando se hacen backups de datos crticos y
la planificacin el uso alternativo de recursos cuando el acceso al recurso deseado
est bloqueado.

Jess Cceres Tello Pg. 14 - 15


Curso de Java

Laboratorio

. Cambiar algunas de las lneas del programa HolaJava.java y compilarlo, para


observar los mensajes de error.

. Modificar el programa HolaJava.java, para que ahora pueda leer un nombre


desde el teclado y luego desplegarlo por la consola.

.Incluir algn comentario especial con el fin de generar una pequea


documentacin de este primer ejercicio mediante el comando javadoc.

Jess Cceres Tello Pg. 15 - 15

Vous aimerez peut-être aussi