Ejemplos java y C/linux

Google
 

Tutoriales

Enlaces

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Para reconocer la autoría debes poner el enlace http://www.chuidiang.com

HOLA MUNDO EN JAVA

Supongamos que ya nos hemos instalado el SDK de java. ¿Qué hacemos ahora?. Pues lo más normal es hacerse un programa de "hola mundo" para ver de qué va esto.

En este tutorial supongo que ya sabes cosas como básicas, como qué es una clase, un método, variables, etc. Simplemente voy a resaltar las particularidades de java y las cosas que suelen dar problemas a la gente que empieza.

CREAMOS EL PROGRAMA

Para aprender bien las cosas de java, lo mejor es empezar los primeros programas con un editor de textos normalito (notepad, vi, xemcas, etc). No se te ocurra usar Word, WordPad, StarOffice o cualquier otro procesador de textos en condiciones, ya que los ficheros que almacenan no los entiende nadie, salvo ellos mismos. Por supuesto, mucho menos el compilador de java.

También es bueno para empezar compilar y ejecutar a mano, desde línea de comandos. Es mejor no usar un IDE (estilo eclipse, netbeans, jbuilder, etc). El IDE es muy listo y hace muchas cosas él sólo o con un simple click de ratón, por ejemplo, compilar y ejecutar. La consecuencia de esto es que tú no aprendes a hacerlas y luego, sin el IDE o con otro IDE distinto, estás perdido. También es bastante normal que los IDE añadan cosas propias de su cosecha, especialmente JBuilder, que no son estandard de java. Si las usas sin querer, estarás aprendiendo algo que no es java, sino propio del IDE.

Así que vamos en plan "rupestre": Lo primero que hacemos, es abrir una ventana de comandos (una de ms-dos en windows o una shell/bash de linux). En esa ventana nos vamos a un directorio que hayamos elegido para nuestro programa y abrimos el editor. En windows nos vale el notepad, en linux podemos usar el vi. Atención a las mayúsculas y minúsculas en el nombre del fichero y el nombre de la clase.

$ vi HolaMundo.java
c:\> notepad HolaMundo.java

Ahora escribimos nuestro programa

public class HolaMundo
{
    public static void main (String [ ] args)
    {
        System.out.println ("Hola mundo");
     }
}

Salvamos el programa y salimos del editor.

LA CLASE HolaMundo

Veamos qué es lo que hemos escrito:

Hemos hecho una clase que hemos llamado HolaMundo.

En java es habitual meter cada clase en un fichero distinto. Es obligatorio que la clase se llame igual que el fichero. Importan las mayúsculas y las minúsculas, así que no es lo mismo HolaMundo que holaMundo ni que Holamundo. Como nuestra clase se llama HolaMundo, debemos llamar a nuestro fichero HolaMundo.java.

Si hubiera varias clases en el mismo fichero, java sólo permite que se pueda usar una de ellas desde código que esté fuera del fichero. Esa clase que se puede ver desde todos lados debe llevar el modificador public. Además, la clase public debe ser obligatoriamente la que se lllama igual que el fichero.

En resumen, si hacemos un fichero HolaMundo.java, debemos meter dentro obligatoriamente y para que todo vaya bien una clase pública que se llame HolaMundo. Eso es lo que tenemos en la primera línea.

public class HolaMundo

¿Desde dónde hasta dónde va la clase?. En java lo marcamos con una llaves. Inmediatamente después del nombre de la clase, abrimos unas llaves. Luego hacemos el código de nuestra clase y finalmente la cerramos.

public class HolaMundo
{
...
}

EL MÉTODO MAIN

Dentro de la clase podemos poner código de muchas maneras distintas. Una forma habitual es hacer "métodos". Un método es un trozo de código al que damos un nombre para poder identificarlo y llamarlo desde cualquier sitio.

En java hay un nombre especial de método que es main. Cuando a java le decimos que debe ejecutar el código de una clase, busca en dicha clase el método con nombre main y es el método que ejecuta.

Para que java entienda el método main, este debe estar declarado de una forma muy concreta, que es la siguiente

public static void main (String [ ] args)
{
...
}

Debe ser public. Eso quiere decir que se le puede llamar desde cualquier lado.

Debe ser static.  Esto quiere decir que se le puede llamar sin necesidad de instanciar la clase (lo veremos más adelante, no te asustes. Dejémoslo en que hay que ponerlo para que el código nos quede más simple y porque el main obliga a ponerlo).

Es void. Eso quiere decir que ese método no devuelve ningún resultado.

El parámetro del método, que va entre paréntesis detrás de él, es un array de String (cadenas de texto). Como no lo vamos a usar, de momento lo ignoramos y no detallo exáctamente qué quiere decir eso. Baste saber que hay que ponerlo siempre que hagamos un método main en una clase.

SACAR TEXTO POR LA PANTALLA

En java tenemos disponible la clase System que está accesible directamente en cualquier sitio, es decir, podemos usarla sin hacer nada especial siempre que queramos. Esta clase contiene cosas relacionadas con nuestro sistema, con nuestro ordenador. Dentro, entre otras cosas, tiene un atributo out que es público. Al ser público podemos acceder a él libremente. Para acceder a este atributo debemos indicar que está dentro de System. Eso se hace poniendo System.out.

Este atributo System.out esta ligado a la pantalla y es otra clase que a su vez tiene métodos. Tiene método para poder enviarle cadenas de caracteres que saldrán en pantalla. Los dos métodos más usados son print() y println(). Ambos sacan el texto que pongamos entre los paréntesis por pantalla, sólo que el segundo añade además un "nueva línea", de forma que lo siguiente que escribamos saldrá en una línea nueva. Si más adelante queremos escribir en la misma línea, debemos usar print().

El código dentro del main será entonces

System.out.println ("Hola Mundo");

COMPILAMOS EL PROGRAMA

Para compilar usamos el programa javac. Dicho programa está en el subdirectorio bin de donde hayamos instalado java. Es importante para que todo vaya bien que ese directorio bin esté en el path de busqueda de ejecutables.

Para comprobar si está, probamos a ejecutarlo

$ javac
c:\> javac

Si obtenemos un error del estilo "comando no se reconoce" o "command not found" o similar, es que javac no está en la variable de entorno PATH y debemos ponerlo.

$ PATH=$PATH:/directorio_java/bin
C:\> set PATH=%PATH%;directorio_java\bin

Si la ejecutar javac obtenemos un mensaje de "Usage: javac" y la lista de opciones, es que todo está correcto y podemos compilar nuestro programa.

Para compilar el programa, estando en el mismo directorio en el que está el fichero HolaMundo.java escribimos

javac HolaMundo.java

Si todo va bien, no obtendremos ninguna salida de error y habrá aparecido un fichero HolaMundo.class. Este fichero es nuestro programa compilado y lo que se puede ejecutar.

Si obtienes algún error, es que hay algo mal en algún sitio. Revisa que has escrito bien el comando javac y el nombre del fichero. Revisa también que tu fichero contiene lo mismo (mayúsculas y minúsculas incluidas) que el de este ejemplo.

EJECUTAR EL PROGRAMA

Una vez que tenemos HolaMundo.class, podemos ejecutarlo y ver el resultado. Para ejecutar este HolaMunod.class necesitamos un programa llamado java que está también en el bin de donde tengamos instalado java. Si hemos conseguido compilarlo, es que este directorio está en el PATH y no deberíamos tener problemas.

Si tienes un java más o menos moderno, bastará con hacer esto estando situados en el directorio donde esté el fichero HolaMundo.class

$ java HolaMundo
Hola Mundo
C:\> java HolaMundo
Hola Mundo

El comando java admite como parámetro el nombre de la clase, no el del fichero. La clase se llama HolaMundo, el fichero se llama HolaMundo.class. Por eso NO HAY QUE PONER .class AL EJECUTAR. Este despiste suele ser habitual en la gente que empieza y llega a dar bastantes quebraderos de cabeza hasta que se cae en la cuenta.

Si tienes un java más antiguo, es posible que no te funcione. Si obtienes un error del estilo "Class Not Found", verifica que estás en el mismo directorio que HolaMundo.class y que has escrito bien las mayúsculas y minúsculas. Si todo está bien y te sigue fallando, no queda más remedio que liarnos con el CLASSPATH...

CLASSPATH

java busca los ficheros .class en determinados sitios. Las versiones más antiguas de java los buscan en el directorio en el que está instalado java. Las versiones más modernas los buscan en los mismos directorios y en el directorio actual. Si estás con un java moderno, java encontrará tu fichero HolaMundo.class y no tendrás problemas. Si estás con un java antiguo, entonces no lo encontrará y te dará el error de que no encuentra la clase HolaMundo.

Afortunadamente, java se puede configurar para que busque clases en otros directorios de los de defecto. Hay dos formas de hacerlo.

VARIABLE DE ENTORNO CLASSPATH

Una es por medio por la variable de entorno CLASSPATH. Simplemente debemos definir la variable diciéndole en qué directorios están los ficheros .class. En windows estos directorios van separados por punto y coma. En unix van separados por dos puntos.

Podemos dar este path relativo o absoluto. Pongo las dos opciones en cada sistema operativo, elige la que quieras.

$ CLASSPATH=.
$ CLASSPATH=/home/usuario/mi_proyecto_HolaMundo
$ export CLASSPATH
C:\> set CLASSAPTH=.
C:\> set CLASSPATH="C:\Dcouments and Settings\usuario\mi_proyecto_HolaMundo"

Bueno, hay varios detalles que comento por si las moscas.

En unix suele ser necesario poner "export CLASSPATH" después de definir la variable.  En unix, cuando se define una variable nueva por primera vez, si queremos que los demás procesos (por ejemplo java cuando lo ejecutemos) la vean, es necesario ejecutar un export.

En cuanto a windows, que tiene la costumbre de poner espacios en los nombres de directorio y ficheros, suele ser necesario meterlo todo entre comillas, para que sepa que el comando no termina en el espacio.

Una vez hecho esto, deberíamos poder ejecutar el programa HolaMundo sin problemas.

OPCION DEL COMANDO JAVA

La otra opción para definir el CLASSPATH es hacerlo como opción en la linea de comandos de java. Se haría así

$ java -cp . HolaMundo
$ java -cp /home/usuario/mi_proyecto_HolaMundo HolaMundo
C:\> java -cp . HolaMundo
C:\> java -cp "C:\Documents and Settings\usuario\mi_proyecto_HolaMundo" HolaMundo

Bueno, aquí debo advertir que no sé seguro si la opción es -cp o -classpath. Creo que la versión de windows admite las dos formas, pero la de unix sólo -cp. O quizás sea según la versión de java. En fin, si no te va así, prueba a poner -classpath entero.

Si usas esta opción, se ignora el valor de la variable CLASSPATH, así que por norma general y para evitar errores, elige qué forma te gusta más y usa sólo esa.

Puedes ir ahora a ver qué son los paquetes en java y cómo hacer un "hola mundo" dentro de un paquete, o bien volver a ver qué tienes que bajarte de java para empezar.

Estadísticas y comentarios

Numero de visitas desde el 4 Feb 2007: