Instalación de Java y Geany para programar en Ubuntu

Junio 2, 2009

Mi intención en la siguiente entrada es poder compartirles lo que para mi fue una búsqueda por varios espacios para poder defínitivamente programar en Java, con la ayuda de Geany. Esto fue gracias a personas que comparten sus conocimientos, espero que también a ustedes les funcione.

Instalación de Java en Ubuntu

Primeramente, buscando por la red, cómo instalar Java en Ubuntu, para programar me encontré con varios tutos, pero este me pareció más simple y entendible, en seguida los pasos que son copy & paste del mismo:

1. Antes que nada, debemos descargar el binario para Linux de JDK. Lo puedes descargar desde aquí, seleccionando la plataforma Linux y en la página posterior haciendo click en el segundo enlace de descarga (el primero es de arquitectura RPM). Una vez descargado, guardamos el archivo .bin en nuestra carpeta personal (/home/nombredeusuario).

2. Abrimos una terminal y nos logueamos como root (usando el comando su). Procedemos a crear el directorio de la instalación:

mkdir /usr/java

3. Le asignamos permisos de propietario a tu usuario (que es el que va a ejecutar JDK posteriormente), con el comando (ojo, cambiar tu_usuario por el de tu sesion en Debian o Ubuntu):

chown -R tu_usuario /usr/java

4. Copiamos el binario que descargamos anteriormente (JDK 6 update 11) al directorio que creamos (/usr/java) y le damos persmisos de ejecución:

cp /home/tu_usuario/jdk-6u11-linux-i586.bin  /usr/java

chmod a+x /usr/java/jdk-6u11-linux-i586.bin

5. Lanzamos la instalación del binario de JDK:

./jdk-6u11-linux-i586.bin

6. Aceptamos la licencia y procedemos con la instalación. Una vez concluída, debemos asignar permisos de propietario para nuestro usuario en la carpeta que se creó durante la instalación:

chown  -R tu_usuario  /usr/java/jdk1.6.0_11

7. Para ejecutar los comandos “java” y javac” desde cualquier ubicación hace falta editar el archivo .bashrc del superusuario (root) y de tu propio usuario. Para ello, debemos editar el archivo correspondiente para cada usuario con las siguientes lineas, mismas que se agregarán al final:

export JAVA_HOME=/usr/java/jdk1.6.0_05
export PATH=$JAVA_HOME/bin:$PATH

Para acceder a editar el archivo del usuario root:

nano /root/.bashrc

Para tu usuario:

nano /home/tu_usuario/.bashrc

8. Al terminar de añadir las líneas a ambos archivos, guardamos los cambio y cerramos la consola. JDK está instalado, con los permisos suficientes y listo para programar en Java.

En los pasos anteriores lo que hice diferente o pasos adicionales fue:

  • Loguearse como root en ubuntu no fué posible ya que hasta donde recuerdo, viene desactivada, así que tuve que activarlo con las siguintes instrucciones que no recuerdo donde tome:
  1. sudo passwd
  2. introducimos la contraseña del actual usuario.
  3. metemos la nueva contrasea del usuario root.
  4. de nuevo metemos la contraseña del usuario root y listo ya podemos loguearnos como root.
  • En el paso 7 en lugar de utilizar nano yo utilize gedit, ya que se me hace más fácil.

Tal como lo menciona Alan,  ya podemos programar. Esto si decidimos utilizar un editor sencillo, como gedit que viene prehinstalado en Ubuntu, para después compilar y ejecutar manualmente desde la consola. Sin embargo como queremos hacerlo con la ayuda de Geany como editor, procedemos a su instalación.

Instalación de Geany

Vamos a instalarlo enseguida desde Aplicaciones->Añadir y quitar… (seleccionando todas las aplicaciones libres o disponibles, aparece) buscamos Geany y los instalamos, una imagen a continuación del editor:

Pantallazo-HelloDate.java - -home-jacym-Programacion-code-piensa-en-java-object - Geany

Ahora el nuevo programa nos aparecerá en una nueva categoría en Aplicaciones->Programación, luego, ya podemos teclear el siguiente código* en el archivo nuevo que aparece por default o desde una plantilla Java en Archivo-> :

//: object/HelloDate.java
 import java.util.*;

/** The first Thinking in Java example program.
 * Displays a string and today's date.
 * @author Bruce Eckel
 * @author www.MindView.net
 * @version 4.0
 */
 public class HelloDate {
 /** Entry point to class & application.
 * @param args array of string arguments
 * @throws exceptions No exceptions thrown
 */
 public static void main(String[] args) {
 System.out.println("Hello, it's: ");
 System.out.println(new Date());
 }
 } /* Output: (55% match)
 Hello, it's:
 Wed Oct 05 14:39:36 MDT 2005
 *///:~

A continuación tenemos que hacer lo siguiente para poder compilar y ejecutar desde el editor.

Intrucciones para hacer funcionar correctamente Geany

Si intentamos compilar y ejecutar desde el editor, nos mandará un mensaje indicando que no encuentra javac o java. Buscando de nuevo por la red me tope con la guía de ubuntu, donde pude darme cuenta que las instrucciones que resuelven este problema son las siguientes:

(He decidido editarlo, para adaptarlo a la instalación que se sigue, para evitar equivocaciones)

1. Setear javac de JDK como una "alternativa" (todo en la misma linea), ya que el sistema no lo reconoce:

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.6.0_XX/bin/javac" 1 (XX la vesion del JDK que se descargo)

$  sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk1.6.0_XX/bin/javac" 1 (XX la vesion del JDK que se descargo)

Seteamos el nuevo Java como una de las "alternativas de java":

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jre1.6.0/bin/java" 1

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.6.0_XX/bin/java" 1

aquí las ejecute en orden inverso a como aparece en la guía, por qué primero necesitamos compilar y luego ejecutar, de esta forma se puede comprobar que efectivamente ejecutando ambas ordenes nos permiten ya compilar y ejecutar.

Configuración de la variable de entorno ClASSPATH

Ahora, para programar en ocasiones necesitamos importar paquetes, clases o archivos jar, creadas anteriormente para eso es necesario configurar la variable CLASSPATH, de acuerdo a la información que revise aquí, existen dos formas: la primera que sólo es funcional mientras este prendida la pc y que se hace desde la consola y la segunda que se queda lista de forma permanente, en seguida lo que hice:

En Ubuntu lo solucionamos modificando el archivo /etc/profile, recuerda hacerlo como root.

# vim /etc/profile

(e igual aqui utilize gedit, puede ser cualquier editor). A continuación se agrega la siguiente linea, donde indicamos el directorio donde podra encontrar los arhichos para su uso en nuestros programas.

CLASSPATH=/directorio/

Para establecer mas de un directorio los separamos con dos puntos ":".

CLASSPATH=/directorio1/:/diretorio2/

Hasta aquí todo hiba bien, pero luego tenia problemas al ejecutar; fue luego que mrcomputer en un comentario daba la solución e indica el por qué:

Lo qu haces es añadir el directorio actual para que a la hora de ejecutar una aplicacion busque los .class también en el directorio actual.

, quedando de la siguiente forma, con un directorio:

CLASSPATH =/directorio/:./

pero si quiero un directorio más, ¿cómo?, no encontraba cómo, pero, siendo un poquito observador fue fácil:

CLASSPATH =/directorio1/:./:/directorio2/:./

bueno solo guardamos los cambios y listo ya podemos programar, con la ayuda del editor e importar otras clases indicadas en los directorios en nuestros programas.

Finalmente, espero que ha alguien más le sirva esto que probe para programar en Ubuntu, es una forma de no perderme para después. Por cualquier duda, critica constructiva, o algún error mio, comenten por favor.

Saludos!

JM.

*Código extraido del libro Piensa en Java de Bruce Eckel, 4ta edición.


Los objetos son manejados por referencias

Mayo 6, 2009

En esta ocasión  comentaré algo sobre las referencias en Java. En este lenguaje de programación, cualquier cosa, es considerado como un objeto, que dispone de una sintaxis adecuada a este concepto. A  cada objeto se le designa un identificador, que es el que manejamos dentro de nuestro programa, pero éste no es mas que una referencia al objeto, no el objeto directamente.

Para darse una idea, es como tener un cochecito (sería el objeto) que dispone de un control remoto (la referencia), donde siempre que contemos con la referencia mantendremos comunicación con el cochecito, si alguna persona nos pide, haz avanzar el coche, frenar, acelerar, todo esto lo haremos desde la referencia e inmediatamente, éste lo hará sobre el objeto. Teniendo el control (referencia) en mano, podemos movernos de un lugar a otro, sin necesidad de llevar con nosotros el cochecito y seguiremos manejándolo.

Otra cosa interesante, es que no necesitamos del cochecito para que exista el control remoto, éste puede existir de forma autónoma.  Es decir que podemos crear una referencia sin necesariamente asociarla a un objeto. Por poner un ejemplo si necesitamos guardar alguna palabra u oración lo que hacemos es crear una nueva  referencia de  tipo String.

String miPalabra;
String miOracion;

En este momento, unicamente tenemos la referencia al objeto, si se nos ocurrierá mandar algún mensaje a alguna de las referencias anteriores, nos devolvería error, ya que aún no existe un objeto (no tenemos cochecito) asociado a éstos.  Una recomendación que nos hacen es que al momentos de crear referencias tenemos que inicializarlas, para evitar problemas posteriores.


String miPalabra = "abcde";

String miOracion = "Aprendiendo a programar en Java";

Aqui hay que resaltar que se esta inicializando las cadenas de una forma no genérica de Objetos,  sino con textos entre comillas “”,  mismo que el lenguaje permite, pero es indispensable usar un tipo genérico en adelante.

Bueno, ya para concluir, espero haber comprendido y poder explicarme en este tema fundamental del Lenguaje Java, nos vemos la próxima, cualquier duda o comentario que ayude a entender mejor estos conceptos, son bienvenidos.


Herencia

Marzo 21, 2009

Reutilizar código existente es una de las cualidades de Java. Existen dos principales técnicas, la primera es la composición y la segunda es la herencia. Ambas técnicas usan las clases concebidas anteriormente sin realizar algun cambio en el código.

La primera forma de crear nuevas clases basicamente crea objetos de otras clases ya creadas que integrarían la nueva clase. Mientras que la segunda crea una nueva clase más especializada que de la que desciende.

De acuerdo a lo que estuve estudiando, el concepto de herencia es uno de los elementos escenciales para poder hablar de Programación Orientada a Objetos, he aquí una definición propuesta por Bruce Eckel en su libro Piensa en java sobre la composición y enseguida el de  herencia :

Nos limitamos a crear objetos de una clase existente dentro  de una nueva clase.

Se basa en crear una nueva clase como un tipo de una clase existente. Literalmente lo que hacemos es tomar la forma de la case existente y añadirla código sin modificarla.

La primera técnica hace uso de las funcionalidades inherentes del objeto creado, no su forma, en cambio la segunda técnica lo hace.

La sintaxis de la herencia en Java es la siguiente:


class ClasePadre{
 //sentencias
}

class ClaseHija extends ClasePadre{

//sentencias

}

Como podrán darse cuenta me falta mucho por aprender, pero con su ayuda iria un poco mejor, espero cualquier sugerencia, o cualquier comentario constructivo para ir mejorando. Nos vemos la próxima, seguiré estudiando. Y finalmente darte gracias por pasarte por qui.

¡Saludos!


¿Como aprendo programación o volverme programador?

Noviembre 10, 2008
Man composited with binary code

Que tal , a penas inicio, en esto de los blogs, asi que espero comprendan, y me dejen sus comentarios, para mejorar. Pasando al tema del post, les comento que esta pregunta (tema del post) me la he estado haciendo desde hacer varios meses o años, por que no sé realemente que me ha pasado o esta pasando.

Tuve una formación academica (universitaria), aunque no destaque como buen estudiante, siempre mostre la aptitud de resolver problemas de programación que nos dejaban los profesores, y además comprendia o me empeñaba en enteder el problema y encontrar la solución, aunque no fuera la mejor.

En fin, mostraba una mayor interes por aprender o resolver problemas en comparación de mis otros compañeros. Ahora, cerca ya de 8 años, a partir de ingresar al nivel universitario, no puedo decir que sé programación o llamarme programador.

¿Cual fué la causa de que yo no sepa programación o sea un programador?, la respuesta es muy siemple, no he querido. No sé si tenga todas las cualidades que requiera, esta area del conocimeinto, pero si sé que soy una persona que lucha por lo que quiere. Y aunque no llegue a ser el mejor en esto, quiero intentarlo y descublirlo, por ello, me he planteado como objetivo:

Ser cada dia un mejor aprendiz y estudiante en este mundo maravilloso que es la programación, añadiendo pequeños logros o fracasos.

Para lograr este objetivo, me he propuesto ir reafirmando conocimientos básicos de programación, e ir avanzando pasito a pasito, con los conocimentos que involucren esta area de la Ciencia. Como sabemos, este camino es difícil, y habra momentos en que caiga y no encontre como lenvantarme (cosa que siempre me ha pasado), pero ahora es diferente. Pues ya me ahora tengo un objetivo que cumplir.

Mis experiencias las hiré plasmando en este espacio, donde pretendo compartir momentos de éxito o fracaso. Como todos saben, el material para aprender esta ahi, accesible. Y mi disco duro me delata, pues tengo varios Gbs, de documentación. Voy a deselpolvar ese material, para ir aprendiendo y que todo ese espacio no sea en vano.

Estas son algunas entradas de muchas que nos enseñan a como se aprende Programación o se cómo se vuelve uno Programador, con mayor o menor detalle, muy personales o generales, nos dan una pauta para avanzar por este mundo de la Programación, que nos sirven de mucho cuando no sabemos por donde empezar o como seguir avanzando:

  1. ¿Cómo ser un programador Autodidacta?
  2. tips para programar mejor
  3. ¿Cómo aprendo a programar en Java?
  4. 20 Tips para ser un mejor programador
  5. Cómo Convertirse en un Programador
  6. Cómo Ser Un Programador: Un Resumen Corto, Comprensivo y Personal

A mi paso por la red he encontrado muchos, los ire agregando poco a poco, para conocer como aprenden los demas e ir aprendiendo de sus experiencias. Les adelanto que estoy leyendo sobre la teoría de la POO(Programación Orientada al Obejeto), talvez no sea lo correcto pues aún no conozco buena parte de la Programación Estructurada, pero ahora por mi Proyecto (pero esta es otra historia) necesito aprenderlo, ya les platicaré que he aprendido sobre este tema.

Finalmente, darles gracias por su tiempo para dar lectura a este post. Esperando puedan dar su opinión , o critica, para hacer mejorar las cosas.

Martin.

Actualización:

7.- El programador serio

Aqui, un paisano, hablando de cómo se llega realmente a serlo.

Actualización: 03/12/2008

8.- Guia de preparación como programador Java

Una experiencia de Julio Laguna, de como aprender Java desde cero, y adentrarse al mundo de la programación con este lenguaje. Me parece muy interesante el contenido, una de ellas, tal como dice, es que muchas veces hace falta saber como iniciarse (una guia), por que tanta información en la red nos ahoga y no sabemos que hacer, y aqui nos da algunos consejos que nos permiten avanzar en el aprendizaje de este lenguaje.