Java Runtime Environment
Java Runtime Environment o JRE es un conjunto de utilidades que permite la ejecución de
programas Java.
En su forma más simple, el entorno en tiempo de ejecución de Java está conformado por una
Máquina Virtual de Java o JVM, un conjunto de bibliotecas Java y otros componentes
necesarios para que una aplicación escrita en lenguaje Java pueda ser ejecutada. El JRE actúa
como un "intermediario" entre el sistema operativo y Java.
La JVM es el programa que ejecuta el código Java previamente compilado (bytecode) mientras
que las librerías de clases estándar son las que implementan el API de Java. Ambas JVM y API
deben ser consistentes entre sí, de ahí que sean distribuidas de modo conjunto.
Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas en lenguaje Java,
mientras que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario un entorno
de desarrollo, denominado JDK, que además del JRE (mínimo imprescindible) incluye, entre
otros, un compilador para Java.
Java Development Kit
Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la
creación de programas en Java. Puede instalarse en una computadora local o en una unidad de
red.
En la unidad de red se pueden tener las herramientas distribuidas en varias computadoras y
trabajar como una sola aplicación.
JDK en Windows
En los sistemas operativos Microsoft Windows sus variables de entorno son:
JAVAPATH: es una ruta completa del directorio donde está instalado JDK.
CLASSPATH: son las bibliotecas o clases de usuario.
PATH: variable donde se agrega la ubicación de JDK.
Los programas más importantes que se incluyen son:
[Link]: es un visor de applets para generar sus vistas previas, ya que un applet
carece de método main y no se puede ejecutar con el programa java.
[Link]: es el compilador de Java.
[Link]: es el masterescuela (intérprete) de Java.
[Link]: genera la documentación de las clases Java de un programa.
Máquina virtual Java
Una máquina virtual Java (en inglés Java Virtual Machine, JVM) es una máquina virtual de
proceso nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y
ejecutar instrucciones expresadas en un código binario especial (el bytecode Java), el cual es
generado por el compilador del lenguaje Java.
Mas info: [Link]
Paquete Java
Un Paquete en Java es un contenedor de clases que permite agrupar las distintas partes de un
programa y que por lo general tiene una funcionalidad y elementos comunes, definiendo la
ubicación de dichas clases en un directorio de estructura jerárquica.
Ventajas
El uso de paquetes proporciona las siguientes ventajas:
Agrupamiento de clases con características comunes.
Reutilización de código al promover principios de programación orientada a objetos como
la encapsulación y modularidad.
Mayor seguridad al existir niveles de acceso.
Evita la colisión de clases que tengan el mismo nombre. Pueden existir clases con el mismo
nombre siempre y cuando su fully qualified class name sean únicos.
Mantenibilidad de código. Si un paquete se enfoca en la agrupación de clases con
características comunes, el cambio en la funcionalidad se limita a las clases contenidas en
dicho paquete, además, si es un paquete grande soporta la reusabilidad, si por el contrario
es pequeño soporta su mantenibilidad.
Contenido de un paquete
Un paquete puede contener:
Clases
Interfaces
Tipos Enumerados
Anotaciones
Atributos de un paquete Java
Un paquete Java tiene los siguientes atributos:
Son opcionales. Si no se define un paquete para un fichero de código Java se definirá un
paquete llamado "default" automáticamente.
Es definido un paquete por cada ficheros de código Java.
Los nombres de paquete que comienzan con el nombre java.* y javax.* son reservados.
El nombre del paquete equivale a una estructura de ficheros. El nombre de paquete
com.dominio_empresa.utilidades debería ser igual al directorio
[ruta_directorio]\com\dominio_empresa\utilidades. Si una clase incluida en un paquete
no se relaciona con su respectiva estructura de directorio, la clase no podrá usarse.
Convenciones en la definición de paquetes Java
Los siguientes son convenciones o estándares acordados en la definición de paquetes en Java:
El nombre del paquete se define de manera inversa al dominio de la organización o grupo.
Por ejemplo, [Link] puede ser usado como nombre de paquete así:
com.dominio_empresa.utilidades.
El nombre del paquete debería definirse en minúscula. Si existen varias palabras en el
nombre, se pueden separar con guión bajo (_).
Uso de paquetes
En los ficheros de código Java se usa la palabra reservada package para especificar a qué
paquete pertenecen. Suele indicarse como primera sentencia:
package [Link];
Para usar un paquete dentro del código se usa la declaración import. Si sólo se indica el
nombre del paquete, se importarán todas las clases que contiene:
import [Link].*;
Si además del nombre del paquete se especifica una clase, sólo se importa esa clase:
import [Link];
Después de añadir alguna de las sentencias anteriores, se puede hacer referencia a la clase
ActionEvent usando su nombre:
ActionEvent myEvent = new ActionEvent();
Si no se hubiera importado la clase o el paquete, cada vez que tuviéramos que usarla habría
que especificarla por su fully qualified class name, que no es más que el nombre del paquete
seguido por el nombre de la clase:
[Link] myEvent = new [Link]();
Si lo que se desea es importar todos los miembros estáticos de una clase, note la sentencia
static despúes de import. (A partir de J2SE 5.0 en adelante)
import static [Link].*;
Si lo que se desea es importar un sólo miembro estático de una clase. (A partir de J2SE 5.0 en
adelante)
import static [Link].CS_GRAY*;
Paquetes importantes de Java
Estos son los paquetes más importantes de la API de Java:
Paquete Descripción
[Link] Contiene clases para la creación de applets.
[Link] Contiene clases para crear interfaces de usuario con ventanas.
[Link] Contiene clases para manejar la entrada/salida.
[Link] Contiene clases variadas pero imprescindibles para el lenguaje,
como Object, Thread, Math...
El paquete [Link] es importado por defecto en el ficheros de código Java.
[Link] Contiene clases para soportar aplicaciones que acceden a redes TCP/IP.
[Link] Contiene clases que permiten el acceso a recursos del sistema, etc.
[Link] Contiene clases para crear interfaces de usuario mejorando la AWT.
Archivos JAR
Como hemos visto una aplicación en Java está compuesta por varios archivos .java. Al
compilarlos obtenemos varios ficheros .class (uno por fichero .java), y no un único archivo
ejecutable como ocurre en otros lenguajes. Para colmo, a menudo la aplicación está formada
no sólo por los archivos. class sino que usa archivos de sonido (usualmente .au en Java),
iconos, etc., lo que multiplica la cantidad de archivos que forman la aplicación compilada. Esto
hace que "llevarse" la aplicación para ejecutarla en un ordenador diferente resulte un poco
lioso: olvidar cualquiera de los archivos que componen la aplicación significaría que ésta no va
a funcionar correctamente. En el caso de un applet se añade el problema de la velocidad, al
tener que viajar todos los ficheros a través de internet.
Los ficheros Jar (Java ARchives) permiten recopilar en un sólo archivo varios archivos
diferentes, almacenándolos en un formato comprimido para que ocupen menos espacio. Es
por tanto, algo similar a un archivo .zip (de hecho están basados en archivos .zip). La
particularidad de los archivos .jar es que no necesitan ser descomprimidos para ser usados, es
decir que el intérprete de Java es capaz de ejecutar los archivos comprimidos en un archivo jar
directamente. Por ejemplo, si hemos recopilado todos los archivos necesarios para ejecutar
una aplicación en un archivo "[Link]", podemos lanzar la aplicación desde una terminal
de texto mediante:
java -jar [Link]
Applet de java
Un applet es una pequeña aplicación java, la cual está disponible en un servidor web del cual
nos la descargamos y ejecutamos dentro de una página web. Algunas de sus características
son:
Tamaño pequeño, esto es debido a que se requiere su descarga a través de la red. Aunque
existen applets de gran tamaño.
Uso de interfaces gráficos, utiliza las clases AWT y Swing, las cuales dotan a la interface del
applet de una gran versatilidad y operatividad para el usuario.
Mas info: [Link]