You are on page 1of 10

Fundamentos del Lenguaje de Programación Java

CONCEPTOS GENERALES
¿Qué es Java?

Java es un lenguaje de programación de alto nivel de propósito
general, multiplataforma, semicompilado, orientado a objetos y
multihilo.

¿Qué quiere decir multiplataforma y semicompilado?

Un programa es un conjunto de órdenes que ejecuta un procesador;
estas órdenes dependen de cada procesador, por tanto un programa
hecho para un procesador no será entendido por otro procesador;
del mismo modo un programa hecho para un Sistema Operativo no se
ejecutará en una máquina con otro Sistema Operativo ya que los
programas a menudo hacen llamadas al Sistema Operativo para, por
ejemplo, saber los archivos de un directorio, realizar una
conexión TCP/IP, utilizar la pantalla, ... Java es independiente
de la máquina y del Sistema Operativo lo que permite ejecutar un
programa hecho en Java en, por ejemplo, un computador con Linux o
Windows, en un PDA, en un teléfono móvil, ...

Para conseguir esto el código fuente se compila a un lenguaje que
no es específico de la plataforma, sino que es un código
intermedio denominado "bytecode". Este código no es ejecutado
directamente, ya que no es comprendido por la máquina, sino que es
interpretado por un programa denominado Máquina Virtual o más
específicamente JVM (Máquina Virtual de Java). La JVM es
específica de la plataforma. De esta forma para ejecutar un
programa Java sólo necesitamos la máquina virtual de la plataforma
que estemos usando. Así, por ejemplo, existen máquinas virtuales
para Sistemas Operativos Windows, Linux, Apple y Solaris. La mayor
parte de los navegadores tienen una máquina virtual instalada para
poder visualizar los applets, que son pequeñas aplicaciones Java
que se incrustan en las páginas Web.

La WWW (World Wide Web) es una inmensa red de computadores de todo
tipo y dado que Java es un lenguaje multiplataforma se hace ideal
para superar los problemas de incompatibilidad.

Un lenguaje interpretado es siempre lento, pero las actuales JVM
utilizan un JIT (Just in Time). El JIT se encarga de compilar el
código aún más para reducirlo, reduciendo también de este modo el
tiempo de ejecución. Estos JIT en determinadas ocasiones pueden
hacer que el código no sea correctamente ejecutado. Si se quieren
ver los applets tal cual se han programado es posible usar el
browser que proporciona Sun Microsystems: Hot Java.

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 1
Fundamentos del Lenguaje de Programación Java
¿Qué quiere decir de propósito general?

Es un lenguaje de propósito general ya que con él se pueden hacer
multitud de cosas: crear tanto programas simples de consola hasta
grandes programas en entorno gráfico, hacer los bonitos applets
que lucen en las páginas Web, los servlets (programas cliente-
servidor más potentes que los clásicos CGI), las JSP (Java Server
Pages, similares a las páginas PHP o ASP), los sockets (programas
para redes de computadores)...

¿Qué quiere decir orientado a objetos?

Algunos lo califican de lenguaje de objetos ya que no es un
lenguaje adaptado como C++ que desciende de C, sino es un lenguaje
que desde el principio ha sido de objetos: (casi) todo en él son
objetos.

Anteriormente al crear programas grandes en C éstos se hacían
inmanejables ya que unas líneas de código afectaban al resultado
de otras y era muy difícil su actualización y posterior
reutilización del código. Cuando nació C++, para crear una ventana
bastaba una línea de código en la que se especifica el tamaño, el
texto de título, etc.., en cambio en C eran necesarias 5 páginas
de código. Lo que se hace en la orientación de objetos es meter
todas esas líneas de código en un archivo aparte y nos olvidamos
de él. Posteriormente podremos reutilizar ese código vinculándolo
a nuestro programa, e incluso crear un tipo de ventanas nuevas por
medio de la herencia, así podremos hacer ventanas que no puedan
ser redimensionadas, como los cuadros de diálogo. De esta forma
los programas son más estructurados y reutilizables.

Pero, ¿qué es un objeto?

Básicamente un objeto es un conjunto de variables y funciones
interrelacinados. En un objeto las variables que guardan los
valores de sus características se llaman propiedades y las
funciones se llaman métodos.

Los lenguajes orientados a objetos son más fáciles de programar ya
que se acercan más a nuestra forma de pensar, así si creamos un
objeto 'vehículo terrestre', una de sus propiedades sería su
color, su número de ruedas, su velocidad,... Y un método sería
acelerar, frenar, que cambiarían las propiedades del objeto: en
estos dos casos la velocidad. Además gracias a la 'herencia'
podríamos crear un nuevo tipo de vehículos que podríamos
clasificar en coches, camiones, motos,... que poseerían las mismas
propiedades y los mismos métodos que un 'vehículo terrestre' más
algunos característicos de ese tipo de 'vehículo terrestre', como
por ejemplo un método 'descargar' en el caso de los camiones, y un
número de ruedas diferentes.

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 2
Fundamentos del Lenguaje de Programación Java
La orientación a objetos y la máquina virtual de Java

Gracias a la orientación a objetos y la máquina virtual de Java es
posible descargar un programa de la red en pocos segundos ya que
los programas que creamos, en general, se basan todos ellos en las
clases que incorpora la máquina virtual de Java (algo así como los
archivos de librerías). Es decir, todos los archivos necesarios
para que el programa funcione ya los incorpora la máquina de
destino, los posee la JVM. De esta forma los programas en Java son
robustos y potentes.

La seguridad en Java

Puede suponer que un applet es un programa que se incluye en una
página Web, y un virus también es un programa, y por tanto Java
pueda ser el lenguaje perfecto para los creadores de virus. Pues
no, una de las características principales de Java es su
seguridad. Cierto que se pueden incluir programas en una página
Web y que un virus es un programa, pero la JVM le informará cuando
el programa intente hacer algo dudoso, como puede ser la
utilización de archivos de nuestro disco duro.

Breve historia de Java

Java nació como iniciativa de Sun de crear un lenguaje para
electrodomésticos. Para ello tenía que crear un lenguaje
independiente de la plataforma, ya que el chip de una calculadora
no es el mismo que el de un televisor, por ejemplo. Este se llamó
OAK, pero la idea no resultó y casi cuando se iba a rechazar el
proyecto un programador tuvo la brillante idea de crear un
navegador Web que soportara incrustar aplicaciones Java
denominadas applets. Desde el primer momento se puede apreciar la
capacidad de este lenguaje: el navegador estaba hecho en Java. Sun
Microsystems le cambió el nombre porque "OAK" ya estaba registrado
y eligió Java, que es como se llamaba el Café en el que se reunían
los programadores de esta empresa. La idea de incrustar pequeñas
aplicaciones en las páginas Web tuvo una tremenda aceptación, lo
que impulsó y popularizó a este lenguaje. Hay que tener en cuenta
que aunque Java debe su popularidad a Internet y está enormemente
vinculado a ella, la WWW no es su único lugar ni su única
capacidad, ni mucho menos.

¿Cómo empiezo a programar en Java?

Es imprescindible bajarse un compilador. Se recomienda el Java 2
Standard Development Kit de Sun Microsystems, disponible para
Windows, Linux y Solaris. Contiene lo necesario para empezar a
programar en Java y es gratis, aunque la licencia impide su
redistribución. Contiene un compilador, un visualizador de

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 3
Fundamentos del Lenguaje de Programación Java
Applets, un debugger, un decompilador,... hasta 15 programas.
Todos los programas que incorpora se deben ejecutar en la consola
ya que no tienen interfaz gráfica, lo que resulta un tanto
engorroso, y no contiene un editor, por tanto se deben escribir
los proyectos con un editor de texto convencional, como por
ejemplo el Bloc de Notas, aunque también existen programas que
resaltan con colores las palabras reservadas del lenguaje, los
comentarios,... que hacen un poco más agradable la tarea de
programar. Aunque la programación sin un entorno de desarrollo que
nos permita hacer muchas cosas con unos simples clic de ratón es
muy pesada, es como realmente se aprende.

Actualmente se distribuye el J2SDK junto con el JRE y se van
añadiendo API que antes se distribuían por separado. El JRE es
también un conjunto de aplicaciones, en este caso estas
aplicaciones son exclusivamente para ejecutar los programas. El
JRE está destinado al usuario final de la aplicación. La licencia
permite su redistribución así es que es una buena idea
empaquetarlo junto con nuestras aplicaciones.

Nociones básicas y un poco más técnicas

Prepararse para usar el JDK

Lo primero que debemos hacer, claro está es descargarse el Java 2
Standard Development Kit desde la página de Sun. Es opcional pero
tremendamente recomendado bajarse la documentación que está en
inglés. Posteriormente procederemos a instalarlo; este proceso es
sencillo, basta con indicar lo que se quiere instalar y dónde.
Para incluir la documentación (opcional), una vez se haya
descargado, se deberá extraer la carpeta 'docs' y pegarla en el
directorio donde se instaló el J2SDK.

¿Qué es el path y el classpath?

Este paso es opcional pero muy útil. Para una cómoda utilización
de los programas del kit se puede cambiar la variable de entorno
'path' y otra variable: el 'classpath'. La primera de ellas
contiene la ruta de acceso de los programas que con más frecuencia
uses, de modo que para ejecutar un programa bastará con escribir
su nombre y Windows lo buscará, de este modo nos ahorramos tener
que escribir toda la ruta de directorios hasta llegar a él. La
segunda indica al JDK dónde debe buscar los archivos a compilar o
ejecutar, sin tener que escribir en cada ejecución la ruta
completa.

Así se ejecutaría el compilador de java sin haber cambiado las
variables, en MS-Dos y con el JDK instalado en el directorio
C:\jdk1.3 y la clase a compilar de nombre 'miclase.java' en
C:\proyectosJava:

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 4
Fundamentos del Lenguaje de Programación Java

C:\>C:\jdk1.3\bin\javac C:\proyectosJava\miclase.java

Así se escribiría si se cambian adecuadamente las variables:

C:\>javac miclase.java

Es decir, no sería necesario incluir la ruta de acceso del
programa ni del archivo a compilar.

Cambiar el path

Para saber qué valores contiene la variable PATH escribiremos lo
siguiente:

C:\>path

Y se listarán los valores que actualmente posee separados por ';'.
Normalmente serán: 'C:\Windows' y 'C:\Windows\COMMAND'. Para
añadirle el directorio que contiene los programas del JDK
('C:\jdk1.X\bin' por defecto y la X va a depender de la versión
del JDK que se tiene instalada) lo más cómodo y sencillo es editar
con un procesador de textos (por ejemplo el Bloc de Notas o el
WordPad) el archivo 'C:\Autoexec.bat'. En él aparecerán los
valores anteriores separados por ';'. Bastará con añadir el
nuestro ('C:\jdk1.X\bin') separado por un ';', y guardarlo. Es
recomendable poner nuestro directorio al principio en lugar de
añadirlo al final, ya que si queremos ejecutar el programa
javaw.exe del JDK el intérprete de comandos buscará el programa en
los directorios definidos en la variable de entorno PATH y
encontrará un programa de mismo nombre en el directorio C:\Windows
que no es el que nosotros queremos ejecutar.

Para terminar habrá que reiniciar el computador. Con esto lo que
conseguimos es definir la variable path cada vez que se ejecuta el
archivo Autoexec.bat, es decir, cada vez que se inicia Windows.

Cambiar el classpath

Para saber qué valores contiene el CLASSPATH (no contiene ninguno
por defecto) bastará con teclear:

C:\>set

y aparecerá la lista de variables de entorno con sus
correspondientes valores. Si no aparece la variable CLASSPATH
quiere decir que ésta no contiene ningún valor. Entre ellas se
encuentra también la variable de entorno path.

Para asignarle un valor teclearemos lo siguiente en una ventana de
MS-DOS:

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 5
Fundamentos del Lenguaje de Programación Java

C:\>set CLASSPATH=C:\MisClasesDeJava

Siendo MisClasesDeJava el directorio donde tenemos nuestras clases
de Java.

Para introducir varios directorios los separaremos por punto y
coma:

C:\>set CLASSPATH=C:\MisClasesDeJava;C:\MisOtrasClasesDeJava

Finalmente, si la variable CLASSPATH ya contiene valores y
queremos añadir más tendremos que hacerlo del siguiente modo:

C:\>set CLASSPATH=C:\MisClasesDeJava;%CLASSPATH%

Otra cosa a tener en cuenta es que normalmente desearemos apuntar
a una clase que se encuentra en el mismo directorio; si en la
variable CLASSPATH no está incluido específicamente ese directorio
el programa no la encontrará aunque como se ha dicho el archivo
esté en el mismo directorio. Esto se puede remediar incluyendo el
directorio actual de forma relativa, es decir, el intérprete de
comandos, tanto en MS-DOS como en Unix, utiliza "." como forma de
apuntar al directorio actual así como ".." para indicar el
directorio inmediatamente superior. (Así con el comando "cd"
cambiamos de directorio, y al hacer cd .. cambiamos al directorio
superior). La forma de cambiar la variable CLASSPATH con los
valores que ya contiene, el directorio actual y el directorio
C:\MisClasesDeJava sería así:

C:\>set CLASSPATH=.;C:\MisClasesDeJava;%CLASSPATH%

Si queremos definir la variable CLASSPATH cada vez que iniciemos
Windows basta con añadir el comando set, con los valores adecuados
como se ha visto, al archivo C:\Autoexec.bat como se indicaba con
la variable PATH.

El primer proyecto

El código fuente se debe escribir en un archivo de texto plano, es
decir sin formato, para lo que se recomienda usar el Bloc de Notas
o WordPad en caso de Windows. Éste debe ser guardado en un
archivo, de nombre el de la clase que estemos creando, y de
extensión '.java'.

Habrá que tener en cuenta al escribir el código que Java es
sensible a las mayúsculas y minúsculas, lo que quiere decir que
'Hola' no es lo mismo que 'hola'. Al escribir código es muy
conveniente comentarlo, sobre todo si vamos a compartirlo con
otros desarrolladores o para futuras actualizaciones.

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 6
Fundamentos del Lenguaje de Programación Java
Comentar y documentar el código

En Java existen tres tipos de comentarios: los que soportan sus
antecesores C y C++ y uno muy importante y novedoso: el comentario
de documentación.

"//" Es el comentario de C. Indica que todo lo que viene a
continuación de la línea es un comentario.
"/*" y "*/" Es el comentario de C++. Indica que todo lo
comprendido entre estos dos signos es un comentario. Puede ser
multilínea, no así el anterior.

Aquí hay un ejemplo en el que se usan estos dos tipos de
comentarios:

// este es un comentario de C. El compilador omitirá lo que
aparezca a su derecha

/*este es un comentario de varias líneas
de esta forma omitirá también esta línea
y esta*/

Se pueden usar combinaciones de comentarios, pero no se admiten
comentarios anidados como este:

//Esta línea será omitida por el compilador así que saltará
directamente a la siguiente. /*Así que esta cabecera de comentario
no la verá
y se creerá que esta línea es código
y ésta también*/

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 7
Fundamentos del Lenguaje de Programación Java
Algunas preguntas y sus respuestas

¿Qué es el código fuente de Java?

Código fuente de Java es el código que usted escribe en el
lenguaje de programación Java. Código fuente Java se convierte al
bytecode de Java por el compilador de Java.

Archivos de código fuente de Java suelen tener la extensión .java.

¿Qué es un compilador de Java?

Un compilador de Java es un programa que convierte el código
fuente Java en bytecode de Java. Un compilador de Java básico se
incluye como parte de la JDK (Java Development Kit). Este
compilador de Java se llama "javac".

¿Qué es un Java Decompiler?

Un Java Decompiler es un tipo especial de decompilador que tiene
un archivo de clase como entrada y produce el código fuente Java
como salida.

¿Qué es el JDK?

El JDK es el Java Development Kit. Está formado por el compilador
y las herramientas que permiten a los usuarios crear aplicaciones
en Java. Sun distribuye el JDK como parte de J2EE, J2SE y J2ME.

¿Qué es el bytecode de Java?

Bytecode de Java se produce por el compilador de Java y ejecutado
por la JVM (Java Virtual Machine). Bytecode de Java no es
exactamente el código fuente, y no es exactamente código
compilado, es algo intermedio. Bytecode de Java es una de las
cosas que hacen posible que el código Java para correr en
diferentes plataformas.

¿Qué es la máquina virtual de Java (JVM)?

Una Máquina virtual de Java es simplemente un pedazo de software
que permite la tecnología Java a ser reconocido y ejecutado con
éxito en una amplia gama de plataformas de hardware. Máquinas
virtuales de Java son populares, porque proporcionan un entorno
necesario para que el bytecode de Java se ejecute. La flexibilidad
de una JVM permite a un applet de Java ser escrito sólo una vez,
pero ser capaz de funcionar en prácticamente cualquier sistema
operativo.

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 8
Fundamentos del Lenguaje de Programación Java
¿Qué es el JRE?

El JRE es el Java Runtime Environment. El JRE consta de la Máquina
Virtual de Java, las bibliotecas Java y todos los demás
componentes necesarios para ejecutar aplicaciones Java y applets.

Sun distribuye el JRE por separado, o como parte de J2EE, J2SE y
J2ME.

¿Qué es el J2SE?

J2SE es Java 2 Standard Edition. J2SE características:

• Portabilidad
• API de JDBC para acceso a bases de datos
• CORBA tecnología
• Java security

J2SE consta de dos componentes: Núcleo de escritorio Java y Java.

Núcleo de Java proporciona la funcionalidad de back-end, mientras
que Java Desktop proporciona GUI (Interfaz Gráfica de Usuario)
funcionalidad.

J2SE contiene tanto el Java Development Kit (JDK) y el Java
Runtime Environment (JRE).

¿Qué es el J2EE?

J2EE es Java 2 Enterprise Edition. J2EE de Sun es preferido para
la plataforma Java de varios niveles de aplicaciones
empresariales.

J2EE mejora J2SE con:

• Enterprise JavaBeans componentes
• Servlets de Java API
• JavaServer Pages
• XML

¿Qué es el J2ME?

J2ME es Java 2 Micro Edition. J2ME está diseñado para funcionar en
PDA's, teléfonos móviles, set-top boxes, y en los vehículos
inteligentes.

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 9
Fundamentos del Lenguaje de Programación Java
¿Qué es un paquete Java?

Un paquete Java es un conjunto de clases que se agrupan juntos.
Este grupo ayuda a organizar las clases Java.

¿Qué es un archivo .jar?

Un archivo jar es un archivo de Java. Un archivo jar es una
colección de archivos de clase.

¿Qué es un applet de Java?

Un applet de Java es un programa de diseño de Java para ejecutar
Java en un navegador Web habilitado.

¿Qué es un servlet de Java?

Un servlet es un programa Java que se ejecuta en un servidor Web.
Un servlet Java es muy similar a un applet de Java, con excepción
de los servlets que se ejecutan en el servidor Web en vez de ser
descargados a la Web del cliente.

Preparado por Yasna Meza Hidalgo – SCJP 5.0 Página 10