Sei sulla pagina 1di 30

Que es Java?

Java es en s una Tecnologa que podemos separar en lo siguiente:


Java es un Lenguaje de Programacin Orientado a Objetos.
Java es un Entorno de Desarrollo y Ejecucin Multiplataforma.
Java es una Aplicacin.
Como
crear:

Lenguaje de Programacin Orientada a Objetos Java sirve para


Aplicaciones Cliente
Aplicaciones Cliente / Servidor
Aplicaciones Web
Aplicaciones Cliente:
Son las aplicaciones que se ejecutan en un solo ordenador (por
ejemplo el porttil de tu casa) sin necesidad de conectarse a
otra mquina.
Aplicaciones Cliente/Servidor:
Son programas que necesitan conectarse a otra mquina (por
ejemplo un servidor de datos) para pedirle algn servicio de
forma ms o menos continua, como podra ser el uso de una
base de datos.
Aplicaciones Web:
Son programas Java que se ejecutan en un servidor de pginas
web. Estas aplicaciones reciben solicitudes (request) desde un
ordenador y envan al navegador (Internet Explorer, Firefox,
Safari, etc.) que acta como su cliente de respuesta en pginas
HTML.

Como

Entorno de Desarrollo Java cuenta con Herramientas:


Compilador (javac)
Interprete (java)
Generador de Documentacin (javadoc)
Empaquetador de .class (.jar)

Como Entorno de Ejecucin Java cuenta con:


Java Runtime Enviroment (JRE) suministrado por el Software Development
Kit (SDK) el cual contiene un conjunto de clases y libreras para poder
ejecutar tus aplicaciones Java.
Tambin puedes ejecutar aplicaciones Java desde el navegador ya que
suministran un intrprete para poder ejecutarlas.
Como Aplicacin:
Las Aplicaciones Java son programas que funcionan en cualquier maquina
donde est instalado el JRE.

Que es JRE?
Es el acrnimo de Java Runtime Enviroment o Entorno de Ejecucin
Java en sus inicios era denominada JVM (Java Virtual Machine)
Porque es necesario instalar el JRE?
Debido a la principal caracterstica de Java (Lenguaje Multiplataforma)
Multiplataforma se refiere a que si nosotros hemos creado un
programa Java, este puede ser ejecutado en cualquier plataforma de
SO (Sistema Operativo) ya sea Linux, Windows, etc.
Tambin al ser un Lenguanje Multiplataforma implica que el programa
escrito en Java debe ser Compilado para posteriormente ser
Interpretado por la JVM o JRE.

Caractersticas de Java como Lenguaje de Programacin


Java como Lenguaje de Programacin es:
Un Lenguaje de Tercera Generacin.
Orientada a Objetos.
Simple
Seguro
Portable
Multiplataforma
Lenguaje de Tercera Generacin (http://es.slideshare.net/gearsofwarfederico/clasificacion-delos-lenguajes-federico)

Java es un Lenguaje de Alto Nivel y Multiplataforma.


Por ser de Alto Nivel Java ocupa de un Compilador y un Traductor para poder
realizar las instrucciones de Alto Nivel a Lenguaje Maquina.
Por ser Multiplataforma un programa escrito en un lenguaje de tercera
generacin se puede utilizar en cualquier mquina con slo aplicar el
compilador apropiado.
Lenguaje Simple

Java fue diseado para hacer ms fcil el desarrollo de cdigo sin bugs.
Fcil de leer y escribir.
Elimina la complejidad de los lenguajes estructurados y da paso al
contexto de los lenguajes orientados a objetos.

Lenguaje Seguro

La Seguridad en el cdigo es conseguido mediante la implementacin del


Java Runtime Enviroment (JRE).
Existen muchas restricciones, especialmente para los applets, que limitan
lo que se puede y no puede hacer con los recursos crticos de una
computadora.

Lenguaje Portable

Como el cdigo compilado de Java (conocido como Bytecode) es


interpretado, un programa compilado de Java puede ser utilizado por
cualquier computadora que tenga implementado el intrprete de Java (JRE
o JVM).

Lenguaje Orientado a Objetos


Java como es un Lenguaje de Programacin Orientada a Objetos utiliza:
Encapsulacin
Herencia
Polimorfismo
Abstraccin
/Gestor Automtico de la Memoria (Garbage Collection)
Gestor de Excepciones

La POO es una manera de disear y desarrollar software que trata de imitar la realidad
tomando algunos conceptos esenciales de ella.
En este enfoque, las unidades de datos se consideran Objetos.
Cada Objeto se implanta como un mdulo individual (Clase), bien definido,
cuyas caractersticas (identidad, estado, comportamiento) son en gran medida
independientes del resto del sistema.

La Identidad es el nombre que distingue a un Objeto de otro (Nombre


de la Clase).
El Estado son las caractersticas que lo describen (Atributos).
El Comportamiento es lo que puede hacer (Mtodos).

As, una vez desarrollado un Objeto que representa a una determinada


entidad, es posible reutilizar ese Objeto cada vez que se requiera dicha
entidad.
Un rasgo primordial de los Lenguajes de Programacin Orientados a Objetos
(POO) es la capacidad de representar definiciones de Objetos (Clases) ,que
pueden usarse una y otra vez para construir mltiples Objetos
(Polimorfismo), con las mismas propiedades (Herencia), o modificarse para
construir nuevos Objetos con propiedades similares.

Empezando a Programar
1.- Debemos descargar e instalar los paquetes JDK y JRE que necesitemos.
2.- Debemos agregar las variables de entorno que necesitemos:

PATH - Variable donde se almacena las rutas donde se encuentran los


archivos ejecutables.
Aqu pondremos la ruta absoluta del directorio de instalacin del JDK y
agregar la Carpeta bin, que es donde se encuentran los ejecutables
como javac y java.
PATH=%PATH%; Directorio instalacin JDK\bin
CLASSPATH- Variable donde se almacena la ruta donde se encuentran las
clases de java que utiliza la JVM o JRE para ejecutar la aplicacin. No es
necesaria la variable al menos que quieras especificar un directorio
donde estn tus clases.
CLASSPATH= Directorio de instalacin del jdk\jre\lib;
Cuando utilizamos la Variable JAVA_HOME es para una buena prctica en
este caso sera:
JAVA_HOME= Directorio de instalacin del JDK
PATH=%PATH%;%JAVA_HOME%\bin;
Para agregar las variables de entorno como buena prctica yo uso un
archivo .bat
@echo off
title Menu Version de Java
:inicio
cls
echo ********************
echo *****-=[MENU]=-*****
echo ********************
echo 1) Java 6
echo 2) Java 7
echo ********************
echo 4) Salir
echo ********************
echo.
set /p var=Seleccione una opcion:
if "%var%"=="1" goto Java6
if "%var%"=="2" goto Java7
if "%var%"=="3" goto Java8
if "%var%"=="4" goto salir
::Mensaje de error, validacin cuando se selecciona una opcin fuera de rango
echo. El numero "%var%" no es una opcion valida, por favor intente de nuevo.
echo.
pause
echo.
goto inicio
:Java6
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.6.0_45\bin;%PATH%
goto salir

:Java7

echo Setting JAVA_HOME


set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_71
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.7.0_71\bin;%PATH%
goto salir

:salir
@cls
echo =====================
echo Display java -version
java -version
echo =====================
echo Display javac -version
javac -version
echo =====================

3.- Entramos a nuestra Consola de Comandos en este caso al cmd de Windows.

Tipos de Programa Java


Aplicaciones de Consola: Son los programas de Java donde el resultado se
va a visualizar a travs de una consola de comandos.
Si utilizas un IDE (Integraed Developmen Enviroment)
estos cuentan con su propia ventana de consola.
Una aplicacin de consola son los programas ms
fciles de programar.
Aplicaciones de Propsito General: Programas cuyo objetivo es el cubrir
diferentes necesidades.
Aplicaciones Standalone: Son aplicaciones desarrolladas para correr en
cualquier plataforma, que deben ser ejecutadas por un
intrprete.
Estas aplicaciones no tienen ningn tipo de restriccin,
pueden acceder a archivos, ejecutar cualquier tipo de
programas dentro de la misma maquina en la que se
encuentran ejecutndose.
En el programa fuente la Clase debe llamarse igual que
el nombre del archivo que la contiene con extensin
.java
Applets: Programas en Java que se ejecutan dentro de un navegador Web.
El nombre de la Clase principal debe estar referenciada dentro de un
archivo HTML. Adems cumplen con muchas restricciones de
seguridad en comparacin con las aplicaciones Standalone que el
programador ya no tiene que implementar.
4.- Ejecutaremos el archivo .bat previamente realizado y escogeremos la versin de
Java que necesitemos.
5.- Ahora abriremos un editor de texto de Windows.
6.- Escribiremos nuestro cdigo fuente en el editor.

Qu es Cdigo Fuente?
Es un cdigo entendible para un ser humano. Pero el ordenador no
entiende ms que Cdigo Binario denominado Cdigo Maquina.
Las partes que componen un programa en Java son:

El paquete en el cual se encontraran depositados los archivos


compilados (package).
La precarga de las clases predefinidas que se utilizaran (import).
La definicin de la clase que puede contener variables, mtodos y
otras clases internas (class).

Este orden debe mantenerse independientemente de que se requieran o no todas


las partes. En Java solo la primera es opcional y las dos siguientes son obligatorias
(Note que en nuestro ejemplo anterior HolaMundo no declaramos explcitamente el
nombre de una librera de clases la cual es obligatoria, lo que sucede es que Java
proporciona por default una librera java.lang es decir coloca a todos los programas
la lnea
import java.lang.*;
package x;
import java.*;
class X { }

Esta determina el paquete en el cual se almacenara la clase


generada o el archivo compilado
Estas instrucciones determinan las clases
predefinidas a precargar para poder hacer uso de
estas (libreras de clases).
Definicin de la clase. Entre las llaves se colocan
mtodos y variables as como otros mtodos si se
requiere.

Estructura de un programa en Jav a


paquetes
im ports
modif clase nom_class
{
variables de clase
mtodo 1 ()
{
}
mtodo 2 ()
{
}
}

clase

}
}

variables

mtodos

Clase

A continuacin escribiremos otro archivo java para mostrar la

Encapsulacin
Imaginemos que creamos una Clase con variables de instancia
pblicas a las cuales podemos acceder sin problemas desde fuera de la
misma clase.
public class MiClase {
public int tipo;
}
class AccesoDirecto {
public static void main (String [] arg){
MiClase mc = new MiClase();
mc.tipo = -5; //1
}
Analizando el cdigo anterior podemos darnos cuenta de que las
variables tipo int y la Clase son pblicas y pueden ser accedidas

directamente a travs de una instancia de la clase MiClase, esto


compila sin ningn problema, sin embargo, qu pasa si ingresamos un
valor que no se supone debe de tener una variable (en este caso el -5
que le asignamos)?, simplemente no hay nada que nos detenga para
hacerlo.
La nica manera de proteger el cdigo es escribiendo un mtodo que
nos permita regular los valores que cada variable puede tener y
escondiendo las variables para que no se pueda acceder a ellas de
manera directa, esto es el principio bsico de
Encapsulamiento.
Si se desea flexibilidad, buen mantenimiento y extensibilidad, nuestro
diseo en el cdigo debe de incluir Encapsulamiento, para ello
debemos de hacer lo siguiente:

Mantener las variables de instancia protegidas (puede ser


con un modificador de acceso, p.ej., private).

Hacer mtodos de acceso pblicos para forzar al acceso a las


variables por medio de dichos mtodos en lugar de acceder
directamente.

Utilizar las convenciones de cdigo para los nombres de los


mtodos, p. ej., set y get

El ejemplo anterior modificado para un buen encapsulamiento


quedara as:
public class Miclase{
private int tipo;
public void setTipo(int t){
tipo = t;
}
public int getTipo(){
return tipo;
}
}
class AccesoDirecto{
public static void main (String [] arg ){
MiCalse mc = new MiClase();
mc.setTipo(5);
System.out.println("El Tipo es: " + mc.getTipo());
}

Herencia
Consideraremos la Herencia como la transmisin de los mtodos y
atributos de una Clase (Clase Padre o Sper Clase) a otra (Clase Hija
o Subclase). Esto es una de las bases de la reutilizacin de cdigo,
en lugar de copiar y pegar.
Existen dos tipos de Herencia:
Herencia Simple: una Clase puede heredar de una nica
Clase.

Herencia Mltiple: una clase puede heredar de varias clases.

Java NO SOPORTA la herencia Mltiple.


Gracias a la herencia se pueden establecer jerarquas entre clases.

La Clase Object es el Padre de todas las Clases.


Si una Clase se declara como final no se puede heredar de ella.
Si una Clase B Hereda (extends) de una Clase A entonces:

B incorpora las estructura (atributos) y comportamientos


(mtodos) de la Clase A.
B puede aadir nuevos atributos.
B puede aadir nuevos mtodos.
B puede redefinir mtodos (overload y overwrite).

Se debe tener presente que los objetos, sean reales o su proyeccin en


software, se abstraen en clases.

Por ejemplo: de la clase perro pueden existir dos objetos Fido y Firulis (esta es su
identidad). Fido es un san bernardo enorme, pinto, de 5 aos de edad; mientras que
Firulis es un labrador, negro, de 3 aos (este es su estado). Ambos perros ladran,
merodean, juguetean, comen y duermen (este es su comportamiento).
Si nos pidieran que hiciramos un programa orientado a objetos que simulara lo
anterior haramos la clase Perro que tendra las variables raza, color y edad, y los
mtodos ladrar(), merodear(), juguetear(), comer() y dormir(). Firulis y Fido son
los identificadores que podramos usar en una aplicacin que pretenda mostrar
dos objetos de la clase Perro.

Otros conceptos de la POO son el de abstraccin y el de encapsulamiento, que estn muy


ligados y tienen que ver con el diseo de programas. Ambos se refieren a que los objetos deben
hacer tareas que les son propias y no de otros. Por lo comn, los objetos de la realidad no dan
problemas porque ya existen. No fue difcil abstraer la clase Perro ni encapsular su
comportamiento porque existe en la realidad. Para llevar esto al mbito del software analicemos
el caso del programa Hola Mundo. Hagamos el proceso de abstraccin para encapsular sus
caractersticas y su comportamiento.

El primer Hola Mundo lo populariz Brian Kernighan en los aos 70 del siglo XX, en un libro
que caus mucho inters en su tiempo y que escribi junto a Dennis Ritchie: The C
Programming Language. Hoy en da, es una tradicin presentar los lenguajes con un programa
de este tipo, que lo que debe hacer es mostrar la frase Hola mundo en la pantalla, y sirve para
probar que el lenguaje est debidamente instalado y funcionando. Entonces, abstrayendo esto,
podemos decir que el comportamiento de los objetos del tipo Hola Mundo es mostrar un
mensaje y su caracterstica, el mensaje mismo.
Lo que sigue es mostrar cmo los elementos de lenguaje Java nos permiten apegarnos a la
orientacin a objetos; para eso es necesario conocer dichos elementos, pero antes, para finalizar,
un breve resumen.
Hemos introducido cinco conceptos de la POO:
1. La identidad, que es el nombre que distingue a los objetos
2. El estado, que se refiere a sus caractersticas o atributos
3. El comportamiento, que indica los mtodos que se deben programar para que los objetos
realicen acciones
4. La abstraccin, que es el mecanismo mental para aislar su naturaleza
5. El encapsulamiento, que exige que sus caractersticas y mtodos estn bien definidos y no se
confundan con los de otros

JRE
Ejecuta cdigo compilado por una JVM y realiza la carga de clases (Class Loader),
verificacin de cdigo(Verificador de Cdigo - Bytecode verifier) y finalmente
ejecucin de cdigo.

En Java todas las versiones siguen los mismos estndares de datos, esto permite que un programa
que hayamos hecho con una versin antigua, pueda ser ejecutado con una versin ms nueva sin
necesidad de ningn cambio.
Adems de los cambios en el lenguaje en s, con el paso de los aos los recursos disponibles para
los programadores Java que ofrece la empresa que desarrolla el lenguaje (antiguamente Sun
MicroSystems, actualmente Oracle) han crecido enormemente. La denominada biblioteca de
clases de Java (Java class library) ha pasado de ofrecer unos pocos cientos de clases en JDK 1.0
hasta cerca de 6000 en Java SE 8. Se han introducido recursos completamente nuevos, como
Swing y Java2D, mientras que muchos de los mtodos y clases originales de JDK 1.0 han dejado
de utilizarse.
Hemos usado el trmino api en las bsquedas: estas siglas corresponden a
Application Programming Interface o interfaz de programacin de aplicaciones. De
momento, pensar que API equivale a recursos que nos ofrece el lenguaje Java (o si
se prefiere, recursos que nos ofrece la empresa que lo desarrolla) para crear
aplicaciones. Por ejemplo, podemos pretender ordenar una lista de nmeros

denominada Lista1. Podemos hacerlo de dos maneras: escribir las instrucciones


paso a paso para que tenga lugar la ordenacin, o usar un recurso ya disponible
(algo as como Lista1.usarRecursoOrdenar). A medida que vayamos avanzando,
nos iremos familiarizando poco a poco con el API de Java.

El primer concepto a abordar es el de compilacin. Compilar significa


traducir el cdigo escrito en Lenguaje entendible por humanos (por ejemplo Java,
C, Pascal, Fortran), a un cdigo en Lenguaje Mquina, que entienden las
mquinas, pero no entendible por nosotros. Se hace esto porque a los humanos nos
resultara casi imposible trabajar directamente con el lenguaje de los ordenadores.
Es por eso por lo que usamos un lenguaje ms asequible para nosotros (en nuestro
caso Java) y luego empleamos un traductor (compilador). La creacin de programas
en muchos lenguajes se basa en el proceso: escribir cdigo fuente --> compilar y
obtener programa ejecutable. El compilador se encarga de evitar que se pueda
traducir un programa con cdigo fuente mal escrito y de hacer otras verificaciones
previas, de modo que el cdigo mquina tiene ciertas garantas de que cumple
cuando menos con los estndares de sintaxis obligatorios de un lenguaje.

En este esquema, el archivo ejecutable no es vlido para cualquier ordenador. Por


ejemplo, si se ha generado el ejecutable para Windows, no podr utilizarse en
Macintosh. Sin embargo el proceso en Java no se corresponde con el grfico
anterior. Esta fue una caracterstica novedosa de Java respecto a otros lenguajes
cuando se lanz la primera versin de Java. La novedad introducida fue que Java se
hizo independiente del hardware y del sistema operativo en que se
ejecutaba. En otros lenguajes exista el problema de compatibilidad descrito. Sin

embargo, Java se hizo independiente de la plataforma aadiendo un paso


intermedio: los programas Java no se ejecutan en nuestra mquina real (en nuestro
ordenador o servidor) sino que Java simula una mquina virtual con su propio
hardware y sistema operativo. En resumen, el proceso se ampla en un paso: del
cdigo fuente, se pasa a un cdigo intermedio denominado habitualmente
bytecode entendible por la mquina virtual Java. Y es esta mquina virtual
simulada, denominada Java Virtual Machine o JVM, la encargada de interpretar el
bytecode dando lugar a la ejecucin del programa.

Esto permite que Java pueda ejecutarse en una mquina con el Sistema Operativo
Unix, Windows, Linux o cualquier otro, porque en realidad no va a ejecutarse en
ninguno de los sistemas operativos, sino en su propia mquina virtual que
se instala cuando se instala Java. El precio a pagar o desventaja de este esquema
es que todo ordenador que quiera correr una aplicacin Java ha de tener instalado
Java con su mquina virtual. Las diferencias entre ambas concepciones podemos
verlas en los siguientes esquemas.

La mquina virtual era un aspecto importante que diferenciaba a Java de otros lenguajes cuando
irrumpi en el mercado de los lenguajes de programacin; permita escribir y compilar el
programa una sola vez en lugar de varias veces y ejecutar ese cdigo en cualquier plataforma
(write once, run anywhere).
Otra razn de su gran xito ha sido que cuando surgi se convirti en un lenguaje ms orientado
a objetos que todos los otros lenguajes existentes. Adems cabe destacar su potencia y el permitir
crear programas de aspecto y funcionamiento muy similar al tambin muy popular entorno
Windows. Esto afianz su reconocimiento como un lenguaje de programacin innovador.
Aclarar que al ser Java un programa que se interpreta en una mquina virtual, el archivo
resultante de la compilacin es un archivo con la extensin .class interpretable por la mquina
virtual. Este archivo .class est escrito en un lenguaje de mquina virtual (bytecode).

Para que la Mquina Real (nuestro ordenador) ejecute el programa, hay que interpretar
(traducir) el archivo .class a un cdigo en Lenguaje de Mquina Real. Esta es la labor de lo que
llamamos intrprete o traductor del lenguaje de la mquina virtual a la mquina real.
Los archivos respectivos que se encargan de estas tareas son:
El compilador Java --- > javac.exe. Se encarga de compilar el cdigo fuente.
El intrprete Java

--- > java.exe. Se encarga de interpretar los archivos .class (bytecode).

COMPILAR E INTERPRETAR NUESTRO PRIMER PROGRAMA


Veamos los pasos para compilar e interpretar nuestro primer programa escrito en lenguaje Java.
PASO 1: Creacin del cdigo fuente
Abrimos el Bloc de notas de Windows (Inicio -> Todos los programas -> Accesorios -> Bloc de
notas), que usaremos ahora como editor de trabajo por su simplicidad. Ms adelante veremos un
editor ms sofisticado.
Si prefieres usar otro editor en este momento no hay problema (por ejemplo WordPad, Notepad,
etc.). Da igual mientras que se grabe el contenido como texto sin formato (en cdigo ASCII).
Una vez que tengamos el bloc de notas abierto escribiremos nuestro primer programa, que
mostrar un texto Hola Java en la ventana consola DOS (ventana del sistema que ms adelante
explicaremos cmo manejar). Aclarar que por el momento no debemos preocuparnos de entender
lo que escribimos: esto lo explicaremos ms adelante. Nuestro objetivo ahora es simplemente
comprobar que podemos ejecutar un programa escrito en Java.
El cdigo de nuestro programa en Java, escrito en el bloc de notas, ser el siguiente:
/* Primer Ejemplo Hola Java - aprenderaprogramar.com */
public class Ejemplo {
public static void main(String[ ] arg) {
System.out.println("Hola Java");
}
}
Los caracteres de llaves y corchetes se escriben pulsando ALT GR + la tecla correspondiente.
A continuacin procedemos a grabar nuestro programa: pulsamos en Archivo -> Guardar como y
le ponemos como nombre Ejemplo.java. Estamos siguiendo una norma dictada por Java, que es
el nombre del archivo (Ejemplo.java) y el nombre del programa (que hemos definido dentro del
archivo despus de escribir public class, y que tambin es Ejemplo) sean idnticos.

Resumidamente: hemos de hacer coincidir nombre del archivo y nombre del programa, tanto en
maysculas como en minsculas, y la extensin del archivo habr de ser siempre .java.

Para seguir un orden y evitar problemas posteriores durante la compilacin, haremos lo


siguiente. Crearemos una carpeta en C: denominada Ejercicios y ubicaremos el programa
Ejemplo.java dentro de esta carpeta.

PASO 2: Compilacin y ejecucin del programa


Vamos a proceder a la compilacin e interpretacin de este pequeo programa Java. Lo haremos
usando la ventana consola del DOS. Para visualizar esta ventana debemos proceder as: Inicio ->
Todos los programas -> Accesorios -> Smbolo del sistema. Sobre la ventana consola
escribiremos el comando cd C:\Ejercicios y pulsaremos enter. Esto nos traslada a la carpeta
donde se ubica nuestro archivo (Ejemplo.java). Si hemos accedido correctamente al escribir
dir y pulsar enter nos debe aparecer el archivo Ejemplo.java. A continuacin daremos la
instruccin para que se realice el proceso de compilacin del programa, para lo que
escribiremos javac Ejemplo.java, donde javac es el nombre del compilador (javac.exe) que
transformar el programa que hemos escrito nosotros en lenguaje Java al lenguaje de la mquina
virtual Java (bytecode), dando como resultado un nuevo archivo Ejemplo.class que se crear
en este mismo directorio. Si te aparece un mensaje de error revisa todos los pasos anteriores que
hemos explicado, pues es posible que no se hayan creado las variables de entorno o que el
archivo no est bien ubicado, etc. Para comprobar si se ha creado el archivo escribiremos en la
ventana consola el comando dir. Comprobaremos que nos aparecen dos archivos:
Ejemplo.class (bytecode creado por el compilador) y Ejemplo.java (cdigo fuente creado por
nosotros).

Finalmente, vamos a pedirle al intrprete que ejecute el programa, es decir, que transforme el
cdigo de la mquina virtual Java en cdigo mquina interpretable por nuestro ordenador y lo
ejecute. Para ello escribiremos en la ventana consola: java Ejemplo.
El resultado ser que se nos muestra la cadena Hola Java. Si logramos visualizar este texto en
pantalla, ya hemos desarrollado nuestro primer programa en Java.

CUL ES EL MEJOR IDE PARA JAVA?


Hemos generado nuestro primer programa Java usando las herramientas ms bsicas posibles: el
bloc de notas y la ventana consola de DOS. Los programadores utilizan herramientas ms
sofisticadas ya que facilitan el trabajo enormemente. Dentro de estas herramientas podramos
hablar de entornos de desarrollo (IDEs) o frameworks.
A veces ambos trminos se confunden. Nosotros nos referiremos a IDE como a un programa que
nos permite desarrollar cdigo en un lenguaje y que incorpora habitualmente:
a) Un espacio para la escritura de cdigo con cierta ayuda interactiva para generar cdigo y para
indicar los errores de sintaxis que se cometan por parte del programador.
b) La posibilidad de compilar y ejecutar el cdigo escrito.
c) La posibilidad de organizar los proyectos de programacin.
d) Herramientas auxiliares para programadores para deteccin de errores o anlisis de
programas (debuggers).
e) Otras opciones como utilidades para pruebas, carga de libreras, etc.

Existen diversos IDEs para Java. Vamos a citar algunos de ellos:

a) Eclipse: software libre que se puede descargar en http://www.eclipse.org. Es uno de los


entornos Java ms utilizados a nivel profesional. El paquete bsico de Eclipse se puede expandir
mediante la instalacin de plugins para aadir funcionalidades a medida que se vayan
necesitando.

b) NetBeans: software libre que se puede descargar en http://www.netbeans.org. Otro de los


entornos Java muy utilizados, tambin expandible mediante plugins. Facilita bastante el diseo
grfico asociado a aplicaciones Java.

c) BlueJ: software libre que se puede descargar en http://bluej.org. Es un entorno de desarrollo


dirigido al aprendizaje de Java (entorno acadmico) y sin uso a nivel profesional. Es utilizado en
distintas universidades para la enseanza de Java. Destaca por ser sencillo e incluir algunas
funcionalidades dirigidas a que las personas que estn aprendiendo tengan mayor facilidad para
comprender aspectos clave de la programacin orientada a objetos.

d) JBuilder: software comercial. Se pueden obtener versiones de prueba o versiones


simplificadas gratuitas en la web http://www.embarcadero.com buscando en la seccin de
productos y desarrollo de aplicaciones. Permite desarrollos grficos.

e) JCreator: software comercial. Se pueden obtener versiones de prueba o versiones


simplificadas gratuitas en la web http://www.jcreator.com. Este IDE est escrito en C++ y omite
herramientas para desarrollos grficos, lo cual lo hace ms rpido y eficiente que otros IDEs.

f) Otros.

QU ES UN PROYECTO JAVA? ORGANIZACIN DE ARCHIVOS .JAVA, .CLASS Y


OTROS

Un proyecto Java podemos considerarlo como una serie de carpetas ordenadas y organizadas de
acuerdo con una lgica para mantener organizado el cdigo. Un proyecto suele constar de
archivos .java, archivos .class y documentacin.
Los archivos .java contienen el cdigo fuente (entendible por humanos) que en un momento
dado podemos modificar con un editor de textos y suelen encontrarse en carpetas de nombre src
(source). Los archivos .class contienen el bytecode (no entendible por humanos pero s por la
mquina virtual Java) y suelen encontrarse en carpetas de nombre bin (binary).
La organizacin de los archivos en carpetas y la presencia de otros adicionales depende del
entorno de desarrollo que utilicemos. Adems, Java introduce un esquema organizativo a travs
de paquetes (packages) que comentaremos ms adelante.
Para trabajar con proyectos en la mayora de entornos, incluido BlueJ, debemos tenerlos en un
soporte grabable accesible (por ejemplo en una carpeta de nuestro disco duro). No es vlido por
tanto un cd, dvd, unidad remota restringida o carpeta del disco duro con restricciones. El motivo
es que los entornos de desarrollo trabajan grabando informacin en la carpeta del proyecto que se
encuentre activo. Por tanto un soporte no escribible no es adecuado. Si queremos trabajar con un
proyecto contenido en un cd o dvd, primero lo copiaremos a nuestro disco duro y despus lo
abriremos para trabajar con l.

Vamos a comentar la analoga entre lo que hemos hecho usando BlueJ y lo que hicimos en
epgrafes anteriores usando el bloc de notas y Java directamente.

PASO DADO

Escritura de cdigo
fuente

Compilado

ANTES

AHORA

Con el bloc de notas

Con el editor de un IDE


(BlueJ)

Ventana consola DOS del


sistema operativo mediante la
instruccin javac Ejemplo.java

Pulsando el botn u opcin


de men Compile del IDE.

Ejecucin

Ventana consola DOS del


sistema operativo mediante la
instruccin java Ejemplo

Invocando la ejecucin con


el IDE mediante la opcin
void main (String [ ] arg)

Resultado

Se muestra Hola Java en la


ventana consola DOS del
sistema operativo.

Se muestra Hola Java en la


ventana consola del IDE.

Tabla: Comparacin entre dos formas de ejecutar un programa en Java


Esta comparacin nos sirve para entender que independientemente del IDE (BlueJ,
Eclipse, NetBeans, etc.) que usemos, los procesos que en el fondo tienen
lugar son los mismos. La gestin se podr hacer en un tipo de ventana u otra, y
pulsando unos botones u otros, pero lo que realmente permite que estos entornos
den lugar a resultados es el sistema Java (destacando compilador y mquina virtual)
que se encuentra en nuestro ordenador.

Hemos realizado una primera incursin en Java pero para proseguir se nos hace indispensable
hablar de conceptos fundamentales de la programacin orientada a objetos: objetos y
clases. Estos trminos parecen resultarnos familiares.
En la vida diaria podemos pensar en objetos como una manzana o un libro y podemos distinguir
clases de cosas: por ejemplo clases de plantas. Sin embargo, en programacin el trmino objeto y
el trmino clase no guardan una correlacin exacta con el significado de estas palabras en la vida
diaria. Podemos buscar ciertas similitudes e incluso hacer analogas didcticas. Pero no trates de
buscar siempre equivalencias entre objetos y clases en programacin con objetos y clases de la
vida diaria porque esa correspondencia exacta no existe y te llevar a confusin. Al escribir un
programa en un lenguaje orientado a objetos tratamos de modelar un problema del mundo real
pensando en objetos que forman parte del problema y que se relacionan entre s. Daremos ahora
una primera definicin de objeto y clase, que tendremos que ir matizando conforme avancemos
en el curso.

Objeto: entidad existente en la memoria del ordenador que tiene unas propiedades (atributos o
datos sobre s mismo almacenados por el objeto) y unas operaciones disponibles especficas
(mtodos).

Clase: abstraccin que define un tipo de objeto especificando qu propiedades (atributos) y


operaciones disponibles va a tener.

Estas definiciones son quizs poco clarificadoras. Con un ejemplo vamos a entenderlo mejor. En
primer lugar pensemos en un programa que trata de gestionar datos sobre los vehculos de
transporte pblico de una ciudad, por ejemplo Mxico D.F.

En este ejemplo hemos considerado que el problema consta de tres tipos de vehculo: taxi,
autobs y tranva, y que esos tipos los denominamos clases. Qu haramos en Java para definir
una clase? Indicar sus propiedades y operaciones (mtodos) disponibles, por ejemplo:

/* Ejemplo Clase Taxi - aprenderaprogramar.com */


Clase Taxi {
Propiedades:
Matrcula identificativa
Distrito en el que opera
Tipo de motor diesel o gasolina
Coordenadas en las que se ubica
Operaciones disponibles:

Asignar una matrcula


Asignar un distrito
Asignar un tipo de motor
Ubicar en unas coordenadas
}

El haber definido as el taxi significar que todo objeto de tipo Taxi que creemos tendr una
matrcula identificativa, un distrito en el que opera, un tipo de motor y unas coordenadas en las
que se ubica. La creacin de un objeto sera algo as como: Crear un objeto Taxi con matrcula
BFG-7452, distrito Norte, tipo de motor Diesel y coordenadas Desconocidas.
El uso de una operacin sobre un objeto sera algo as como: Taxi BFG-7452 --> Ubicar en
coordenadas (X = 128223, Y = 877533). Las operaciones en Java se denominan mtodos,
veremos cmo se definen ms adelante.
Decimos que un objeto es una instancia de una clase. Por ejemplo el taxi matrcula BFG-7452
es una instancia de la clase Taxi. Varios objetos (p.ej. taxis) de una misma clase decimos que
constituyen instancias mltiples de la clase. Ms adelante veremos que tanto una clase como un
objeto en Java pueden representar otras cosas adems de lo que ahora hemos explicado, pero
todo a su tiempo.
Hacer esto ha sido posible porque al crear objetos en Java por defecto se dispone de algunos
mtodos comunes a cualquier objeto. Nosotros en realidad todava no hemos definido mtodos
propios para los objetos tipo Taxi.
En un programa, cada objeto de tipo Taxi podra informar de su posicin, de su tipo de motor,
etc. o ser llamado para que tome determinada posicin (coordenadas), o para modificar el tipo de
motor que tiene establecido, entre muchas otras cosas.
Prueba a crear objetos tranva y a consultar el identificador de su espacio de memoria. Prueba
tambin a borrar objetos del banco de objetos. Para ello pulsa sobre su icono y con el botn
derecho del ratn elige la opcin Remove.

Por ltimo, vamos a indicar un convenio que sigue la mayora de los programadores: a las
diferentes clases les pondremos nombres que comiencen por mayscula como Taxi. Por el
contrario, a los objetos les pondremos nombres que comiencen por minscula. En nuestro caso
podramos haber nombrado a los objetos como taxi_BFG_7452 para respetar el convenio. Seguir
esta norma no es obligada, pero hacerlo es recomendable para mantener un buen estilo de
programacin. Las empresas suelen mantener un manual de estilo que sirve de gua para que
todos los programadores que trabajen en un proyecto sigan unas normas comunes.

Elementos del lenguaje Java

Identificadores

Sentencias

Bloques de cdigo

Comentarios

Expresiones

Operadores

Metacaracteres

Palabras reservadas

Identificadores
Son los nombres que pueden tener las clases, los mtodos y las variables y no pueden contener
espacios ni caracteres especiales. Estos nombres deben respetar ciertas convenciones segn la
siguiente tabla:
Tipo de identificador

Convencin

Ejemplo

Clase

Comienza con mayscula

HolaMundoOO

Mtodo

Comienza con minscula

mostrarSaludo ()

Variable

Comienza con minscula

saludo

Si el identificador est formado por ms de un vocablo, a partir del segundo las iniciales deben
ser maysculas. Adems, se recomienda que los nombres de las clases sean sustantivos, los de
los mtodos verbos y que las variables expresen con claridad su contenido.
Sentencias

Son las rdenes que se deben ejecutar en el programa y terminan siempre con un punto y coma:

;
Bloques de cdigo

Son el principal mecanismo de encapsulamiento y se forman con un grupo de sentencias y de


otros bloques de cdigo delimitados por una llave de apertura y una de cierre (considerados
metacaracteres en java, como veremos ms adelante):

Otro concepto que vamos a introducir ahora es el de bloque. Vamos a denominar bloque al
cdigo comprendido dentro de los smbolos { y }. Por lo tanto en el programa anterior podramos
distinguir dos bloques. En ocasiones indicaremos junto al smbolo de cierre del bloque algn
comentario que nos permita saber a qu bloque cierra ese smbolo. Esto no es necesario ni
obligado, pero cuando los programas son largos nos puede ayudar. Ejemplo:

{}
Comentarios

Son lneas de texto insertas en el programa para documentarlo y facilitar su lectura. Los tipos de
comentarios ms usados son:
Tipo

Caracteres que
Ejemplo
los identifican

De una
//
sola lnea

//La clase Sring la importamos de java.lang

De varias /* */

/*Aunque el compilador importa la librera java.lang

completa es conveniente importarla explcitamente por


razones didcticas*/

lneas

Expresiones

Las expresiones son entidades formadas por dos o ms miembros separados entre s por
operadores que los evalan y los relacionan.
Por ejemplo;
saludo=Hola Mundo;

Operadores
Los operadores son signos especiales para hacer acciones especficas y son el mecanismo con el
cual los objetos interactan relacionando los datos y devolviendo nuevos valores; los
mostraremos conforme los necesitemos. Se clasifican as:

Aritmticos

De comparacin y lgicos

De asignacin

Metacaracteres

Existen otro tipo de caracteres particulares que sirven para el control y la significacin puntual
en las sentencias y los bloques de cdigo:

([{\^-$|]})?*+

Palabras reservadas
Hay un grupo de palabras en Java con las cuales, entre otras cosas, se realizan las tareas
principales, se delimitan los alcances de los objetos, sus datos y sus mtodos, etc. Se pueden
clasificar as y las mostraremos tambin conforme avancemos:

Tipos de datos

Sentencias condicionales

Sentencias iterativas

Tratamiento de las excepciones

Estructura de datos

Modificadores y control de acceso

La imagen anterior muestra que, a pesar de la sencillez del programa, son muchos
los elementos que estn involucrados. Las reglas de organizacin de dichos
elementos conforman la sintaxis cuya comprensin nos obligar a desmenuzar el
programa HolaMundoOO en el siguiente apartado.
Primero hay que saber que los comentarios estn fuera del programa, no estn
dentro de su mbito, el compilador no los interpreta, son seales que el
programador
usa
para
facilitar
la
comprensin
del
cdigo.
El mbito ms externo es donde importamos los recursos que se requerirn para el
programa y donde declaramos el programa mismo. Aqu est el principio de todo.
En Java siempre desarrollaremos clases, y siempre usaremos clases ya hechas
que importaremos. Los recursos mnimos para programar estn en el paquete lang
de la librera java que el compilador importa por omisin, aunque aqu (ya lo
decamos en un comentario de la clase HolaMundoOO) lo haremos explcitamente
por
razones
didcticas.
As que al comenzar a desarrollar un programa debemos primero determinar las
clases externas necesarias para ayudar a la clase que crearemos nosotros, y
despus crear sta. Para la primera labor usamos la palabra reservada import y
todas las clases invocadas as podrn ser utilizadas en cualquier lugar del bloque de
cdigo de la clase; para la segunda, empleamos las palabras reservadas public

class seguidas del nombre que deseemos asignarle; debe ser nico,
preferentemente un sustantivo, iniciar con mayscula y expresar claramente su
funcin porque ser el identificador de la clase; despus van dos llaves que
contendrn el bloque de cdigo, como muestra la figura siguiente.

El rectngulo representa el mbito o alcance. Los objetos del paquete lang estn
disponibles
en
todos
lados.
Dentro del bloque de la clase est el lugar donde deben crearse las propiedades o
atributos y declararse los mtodos. Las propiedades deben escribirse primero, fuera
de cualquier mtodo y su alcance ser toda la clase, que es lo que significa el
rectngulo interno en la siguiente figura.

Aqu hace falta hablar de la sintaxis de la creacin e inicializacin de las variables. En Java, toda
variable se crea estableciendo su tipo seguido de un nombre, que deber ser nico en el mbito
donde se le declara; se inicializan siempre con una expresin. Crear significa asignarles un
espacio en memoria, mientas que inicializar es darles un valor:
String saludo; Crea una variable llamada saludo.
saludo= Hola mundo; La inicializa
Cuando las variables son atributos deben crearse nicamente y debe hacerse fuera de los
mtodos; por otro lado, sern inicializadas dentro de alguno de ellos en el que convenga. Es
posible hacer ambas labores en una sola lnea pero ser slo aqullas que sirven a las tareas de
los mtodos:
String muestra= Esto es una muestra;

Los mtodos, por su parte, se declaran estableciendo primero el nivel de acceso. En este caso
mostrarSaludo() tiene acceso pblico (para eso usamos la palabra reservada public), que
significa que cualquier objeto externo puede invocar la tarea encapsulada en el mtodo. Hay
otras posibilidades, por ejemplo prvate, que es tambin una palabra reservada, y que significa
que el mtodo slo puede ser usado al interior de la clase en la que es declarado. Despus del
nivel de acceso, est el tipo de datos que el mtodo devuelve; mostrarSaludo() no regresa ningn
valor; para indicar esto se usa otra palabra reservada: void, que, como veremos despus, podr
ser sustituida por cualquier tipo de datos. Todos los mtodos deben tener su propio bloque de
cdigo, en el que, como ya dijimos, est encapsulada su tarea. El mtodo en cuestin inicializa
saludo, e invoca la clase System (que importamos del paquete lang al principio) cuyo atributo
out es un objeto que tiene el mtodo println(cadena) cuya tarea es imprimir una lnea con el
texto que recibe como parmetro en la salida estndar del sistema. El mtodo mostrarSaludo() y
su alcance estn representados en el rectngulo ms interno de la siguiente figura.

En cuanto a la sintaxis, falta decir que otra de las responsabilidades de cualquier


clase es autoconstruirse por lo que tendr un mtodo que se llamar igual que la
clase misma, deber ser pblico, no tiene modificador del tipo que devuelve y lo
llamamos el constructor, con lo anterior la clase queda como sigue (obsrvese
que en este mtodo se inicializa el atributo):
import java.lang.*;
public class HolaMundoOO{
String saludo; //La clase Sring la importamos de java.lang
//Creamos el mtodo constructor con el mismo nombre de la clase
public HolaMundoOO(){
propiedades

saludo="Hola mundo";//En el constructor se inicializan las

}
public void mostrarSaludo(){

java.lang

System.out.println(saludo);//La clase System la importamos de

}
}

Finalmente, otro mecanismo de encapsulamiento es crear paquetes para guardar en


ellos las clases que hacen labores afines. Esto se logra con la palabra reservada
package seguida del nombre que identificar al paquete; stos se escriben slo con
minsculas. La versin final de la clase HolaMundoOO que queda encapsulada en el
paquete holamundo, que importa de java.lang las clases String y System, que tiene
el atributo saludo de tipo String, que se autoconstruye e inicializa la propiedad, que
tiene un mtodo que muestra saludo usando la clase System queda as (Atindanse
los comentarios):

package holamundo;//Los paquetes son subdirectorios


import java.lang.String;
import java.lang.System;
public class HolaMundoOO{
String saludo;
//Creamos el mtodo constructor con el mismo nombre de la clase
public HolaMundoOO(){
propiedades

saludo="Hola mundo";//el constructor inicializa las

}
public void mostrarSaludo(){
System.out.println(saludo);
}
}

Potrebbero piacerti anche