JDK Netbeans
JDK Netbeans
Introducción a Java
Java surgió en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron
de diseñar un nuevo lenguaje de programación destinado a electrodomésticos. La
reducida potencia de cálculo y memoria de los electrodomésticos llevó a
desarrollar un lenguaje sencillo capaz de generar código de tamaño muy
reducido.
El principal objetivo del lenguaje Java es llegar a ser el “nexo universal” que
conecte a los usuarios con la información, esté ésta situada en el ordenador local,
en un servidor de Web, en una base de datos o en cualquier otro lugar.
Robusto: El compilador Java detecta muchos errores que otros compiladores solo
detectarían en tiempo de ejecución o incluso nunca. (ej: if(a=b) then ... el
compilador Java no nos dejaría compilar este código.
Seguro: Sobre todo un tipo de desarrollo: los Applet. Estos son programas
diseñados para ser ejecutados en una página web. Java garantiza que ningún
Applet puede escribir o leer de nuestro disco o mandar información del usuario
que accede a la página a través de la red (como, por ejemplo, la dirección de
correo electrónico). En general no permite realizar cualquier acción que pudiera
dañar la máquina o violar la intimidad del que visita la página web.
Multithread: Soporta de modo nativo los threads, sin necesidad del uso de de
librerías especí�cas (como es el caso de C++). Esto le permite además que cada
Thread de una aplicación java pueda correr en una CPU distinta, si la aplicación se
ejecuta en una máquina que posee varias CPU. Las aplicaciones de C++ no son
capaces de distribuir, de modo transparente para el programador, la carga entre
varias CPU.
Instalación JDK y NetBeans
Instalación JDK
/*
* La clase "Prueba de funcionamiento".
*/
public class PruebaFuncionamiento {
public static void main (String[] args) {
System.out.println("Ya funciona");
}
}
COMPILACIÓN
c:/ejerjavasrc/javac ejemplo.java
Los �cheros .class contienen código bytecode, el código que es interpretado por la
máquina virtual Java.
Para compilar este �chero, abrir una ventana de línea de comandos, situate en la
carpeta y escribe el siguiente comando:
javac PruebaFuncionamiento.java
export PATH=$PATH:/usr/local/jdk1.6.0_17/bin/
Si hemos conseguido el �chero compilado PruebaFuncionamiento.class, solo nos
queda ejecutarlo y ver nuestra primera aplicación Java en funcionamento!
COMPILACIÓN
c:/ejerjavasrc/javac ejemplo.java
Los �cheros .class contienen código bytecode, el código que es interpretado por la
máquina virtual Java.
c:\ejerjavasrc>javac PruebaFuncionamiento.java
C:\Archivos de programa\Java\jdk1.6.0_17\bin
Cerrar la ventana de comandos y volverla abrir para que tenga efecto el cambio.
Si hemos conseguido el �chero compilado PruebaFuncionamiento.class, solo nos
queda ejecutarlo y ver nuestra primera aplicación Java en funcionamento!.
c:\ejerjavasrc>java PruebaFuncionamiento
Para ejecutar una clase main que se encuentre en una clase con package
seguiremos la siguiente sintaxis:
java nombre_paquete.nombre_clase
java Pruebas.PruebaFuncionamiento
Si accedemos a File -> New Project, vemos que por defecto el IDE contiene un
conjunto de plantillas que podemos utilizar en función del proyecto que vayamos
a crear. En nuestro caso seleccionamos la categoría Java with Ant y como
proyecto Java Appplication:
Proyectos estándar (El IDE genera un script Ant para compilar):
Para crear un proyecto File -> New Project (Ctrl. + Mayús + N), a continuación
aparecerá el asistente para la creación del proyecto, podemos seleccionar varias
categorías: aplicaciones web, aplicaciones generales y ejemplos hechos.
En nuestro caso seleccionamos la categoría Java with Ant y como proyecto Java
Application:
Marcamos el check Create Main Class, de esta forma nos creará una clase
principal.
Una vez hemos creado el proyecto, en la parte izquierda podemos ver tres
pestañas:
Una de las funciones más importantes del IDE es la creación, edición y corrección
de �cheros fuente en Java, que al �n y al cabo es donde más tiempo gastamos
cuando estamos programando. NetBeans IDE proporciona una amplia gama de
las herramientas que pueden facilitar el estilo personal de cualquier desarrollador.
En esta sección veremos aspectos de edición, terminación de código, etc..
En el menú principal, hacemos clic en Run-> Build Project (F11), para compilar el
proyecto.
En el menú principal, hacemos clic en Run-> Clean and Build Project (Msyús +
F11), para limpiar y compilar el proyecto.
En la ventana de proyectos botón de la derecha sobre el nombre del proyecto y
pulsar Build, para compilar el proyecto.
En la ventana de proyectos botón de la derecha sobre el nombre del proyecto y
Clean and Build, para eliminar los archivos objeto y compilar el proyecto.
En la ventana de proyectos botón de la derecha sobre el nombre del proyecto y
Clean, para eliminar los archivos objeto del proyecto.
También se puede ejecutar cualquier �chero que contenga un main por medio de
la opción Run -> Run Other (Shift-F6).
También se puede ejecutar cualquier proyecto haciendo clic con el botón derecho
sobre su nodo del proyecto en la ventana de los proyectos y eligiendo Run
Project.
Se puede añadir las declaraciones import para las clases de java en una de estas
dos formas:
INTRODUCCIÓN AL CLASSPATH
Cuando empezamos con java es bastante habitual obtener el error "class not
found" al intentar ejecutar nuestro programa, aunque estamos bastante seguros
de que todo está como debía: existe el .class, he puesto bien el classpath, etc.
Aquí vamos a tratar de explicar por qué se nos producen estos errores y cómo
están interrelacionados los directorios que ponemos en el classpath, también, por
supuesto, qué es eso del classpath, cómo hemos construido nuestro �chero .jar (si
es que lo hemos creado) y las directivas package que hemos puesto en nuestro
código. La relación es bastante estrecha y el poner uno de ellos de una manera y
otro de otra, hará que se nos produzca el error antes mencionado.
CLASSPATH
Vamos a suponer que tenemos un programa java compuesto por varias clases.
En ninguna parte de nuestras clases hemos puesto package y lo tenemos todo
compilado en un mismo directorio, por ejemplo /users/MI_PROYECTO ( o
C:\users\MI_PROYECTO en windows). Supongamos además que nuestro método
main() está en el �chero ClasePrincipal.class.
Código:
$ java ClasePrincipal
El comando java busca las clases que necesita en unos determinados directorios
y �cheros .jar. Por defecto los buscará en los .jar propios de java y en el directorio
en el que se esté ejecutando el comando java. Esto es cierto en la versión de java
1.4 y superiores. Para versiones anteriores es posible que no se busquen las clases
en el directorio actual.
En windows
Código:
set CLASSPATH=C:\users\chuidiang\MI_PROYECTO
En linux
Código:
java -cp /users/MI_PROYECTO ClasePrincipal
En windows
Código:
java -cp C:\users\MI_PROYECTO ClasePrincipal
Distintos directorios
¿Qué pasa si tengo mis clases repartidas en varios directorio?
Código:
CLASSPATH=/users/chuidiang/MI_PROYECTO/CLASES_1:/users/chuidiang/MI_PROYECTO/CLAS
export CLASSPATH
o bien
Código:
java -cp /users/MI_PROYECTO/CLASES_1:/users/MI_PROYECTO/CLASES_2 ClasePrincipal
Para windows, usando como separador el "punto y coma" ";" (El "dos puntos" se
usa para poner después de la unidad de disco, por ejemplo, "C:\" )
Código:
set CLASSPATH=C:\users\MI_PROYECTO\CLASES_1;C:\users\MI_PROYECTO/CLASES_2
o bien
Código:
java -cp C:\users\MI_PROYECTO\CLASES_1;C:\users\MI_PROYECTO/CLASES_2 ClasePrinc
Código:
CLASSPATH=/users/chuidiang/MI_PROYECTO/CLASES_1; export CLASSPATH
java -cp /users/chuidiang/MI_PROYECTO/CLASES_2 ClasePrincipal
Debemos poner todos los directorios implicados en sólo una de las dos opciones,
o en CLASSPATH, o en -cp.
Sólo se admite una opción -cp. Si ponemos varias, sólo se hará caso a una de
ellas. Sería incorrecto, por ejemplo
Código:
java -cp /users/chuidiang/MI_PROYECTO/CLASES_1 -cp /users/chuidiang/MI_PROYECTO/C
Esto sólo encontraría las clases de uno de los directorios. Debemos poner todos
los directorios en una sola opción -cp, separados por el "dos puntos" o el "punto
y coma", según sea linux o windows.
Con Package
Código:
package PAQUETE_1
public class MiClase
{
...
}
Esto "obliga" a que haya un directorio con el mismo nombre que el paquete (es
decir, un directorio PAQUETE_1) y dentro de él el �chero .class correspondiente (es
decir MiClase.class).
Una vez que lo tenemos organizado así, en classpath (me referiré ahora como
classpath a cualquiera de las dos, la variable CLASSPATH o la opción -cp)
tenemos que poner el directorio padre del directorio PAQUETE_1. Es decir, si
tenemos /users/MI_PROYECTO/PAQUETE_1, en classpath debe ponerse /users
/MI_PROYECTO.
Código:
import PAQUETE_1.MiClase;
Código:
package PAQUETE.SUB_PAQUETE.SUB_SUB_PAQUETE
...
Java nos permite con los "Packages" evitar esta situación de un modo bastante
elegante y ordenado. Un "Package" es básicamente una agrupación de clases,
por ejemplo la versión 1.2 de Java incluye un total de 59 "Packages" para
organizar todo su API.
El uso de "Packages" no solo nos permite organizar nuestras clases, sino que nos
permite diferenciar clases que siendo distintas tengan que tener el mismo
nombre, es decir, ayuda a java con la resolución de nombres.
Veamos ahora como utilizar los "packages" para nuestras clases. Lo primero que
tenemos que tener en cuenta es que todas las clases que van a pertenecer a un
mismo "package" tienen que estar en un mismo directorio que debe coincidir en
nombre con el nombre del "package". Vemos que por tanto el nombre completo
de una clase de un "package" equivale a su ruta desde el directorio que tomemos
de base para nuestras clases.
En segundo lugar para utilizar los "packages" en nuestras clases tenemos que
incluir al principio del �chero de la clase (antes de cualquier otra sentencia) la
linea:
Package nombreDelPackage;
De todas formas para ejecutar una clase main que se encuentre en una clase con
package seguiremos la siguiente sintaxis:
java nombre_paquete.nombre_clase
java Pruebas.PruebaFuncionamiento
JAR no es más que una versión especí�ca de tar para java. Permite "empaquetar"
en un único �chero .jar varias estructuras de directorios con sus �cheros.
Código:
jar cvf MiLibreria.jar *.class
Esto mete en MiLibreria.jar todas las clases del directorio actual. Las opciones cvf
son para indicar que debe crear el �chero MiLibreria.jar (opción c), que nos vaya
indicando lo que hace (opción v de "verbose" en inglés) y la f que indica que
detrás va el nombre del �chero .jar.
Código:
jar cvf MiLibreria.jar -C /users/chuidiang/MI_PROYECTO/CLASES_1 . -C/users/chuidiang/MI_P
Código:
jar cvf MiLibreria.jar /users/chuidiang/MI_PROYECTO/CLASE_1/*.class ...
puesto que metería todo el árbol de directorios hasta llegar a los .class y luego
metería los .class dentro de esos directorios.
Una vez que tenemos el .jar, en el classpath debemos poner el �chero .jar con su
path absoluto, separado de otros directorios de clases o �cheros .jar por el
separador adecuado al sitema operativo. Como dijimos anteriormente, un .jar es
como si fuera un (o varios) directorio empaquetado, por lo que podemos ponerlo
en un classpath como un directorio más. Por ejemplo
Código:
java -cp /users/MiLibreria.jar:/users/OTRO_DIRECTORIO:/users/OtroFichero.jar ClasePrincip
Si hemos puesto package en nuestras clases, nos pasa lo mismo que antes.
Debemos crear un directorio con el nombre del paquete y dejar en él nuestros
.class. Luego con jar debemos empaquetar el directorio con las clases que tiene
dentro
Código:
jar cvf MiLibreria.jar PAQUETE_1/*.class
Esto mete dentro de MiLibreria.jar el directorio con todas sus clases. Al poner en el
classpath este �chero .jar, todo irá correctamente, igual que antes. java busca en
el �chero .jar un directorio con el mismo nombre que el paquete y dentro de él la
clase. Por ello es importante empaquetar también el directorio.
Código:
jar cvf MiLibreria.jar /users/MI_PROYECTO/PAQUETE_1/*.class
Código:
jav cvf MiLibreria.jar -C /users/MI_PROYECTO PAQUETE_1
Código:
jar tvf MiLibreria.jar
Esto saca un listado con todos los �cheros y directorios que hay en el �chero .jar.
Al listar cada �chero .class, pone delante el directorio/directorios en los que está
metido (y que debe coincidir con su package si todo es correcto). Si no es así,
debemos rehacer el .jar.