Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Como
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.
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
Lenguaje Portable
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.
Empezando a Programar
1.- Debemos descargar e instalar los paquetes JDK y JRE que necesitemos.
2.- Debemos agregar las variables de entorno que necesitemos:
:Java7
:salir
@cls
echo =====================
echo Display java -version
java -version
echo =====================
echo Display javac -version
javac -version
echo =====================
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:
clase
}
}
variables
mtodos
Clase
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
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.
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.
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
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
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.
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.
f) 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
Ejecucin
Resultado
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).
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:
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.
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
HolaMundoOO
Mtodo
mostrarSaludo ()
Variable
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
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
De varias /* */
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
Estructura de datos
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.
}
public void mostrarSaludo(){
java.lang
}
}
}
public void mostrarSaludo(){
System.out.println(saludo);
}
}