Java vs .NET

http://dai.ly/duoJGg

Debian elimina Eclipse IDE de los repositorios, ¿lo hará también Ubuntu?

No entiendo muy bien la razón de esta decisión, pero como vemos nada más empezar el changelog de la última actualización de Debian 5.0.5, eclipse es eliminado de los repositorios. Eclipse es un IDE (Integrated development environment) muy usado y extendido, no sólo para Java si no para otros lenguajes como C/C++ o PHP con soporte de multitud de plugins, y me atrevería a decir que es el mejor o uno de los mejores junto con NetBeans y posiblemente IDEA, y es 100% open source.

Por ello no entiendo esta decisión, que podría reflejarse directamente en Ubuntu al estar este basado en Debian, pero aunque no me cuesta nada descargar Eclipse de la página oficial y ejecutarlo sin ningún problema, tenerlo en los repositorios es sin duda una ventaja que hace que además esté más integrado con el sistema.

De hecho, y como veis en la imagen, si hacemos una búsqueda del paquete eclipse en debian packages con la distribución estable, el paquete no existe, y en versiones antiguas, si.

changelog
anuncio
Fuente

Como preparar Eclipse para desarrollar aplicaciones para móviles en Java (J2ME)

En primer lugar tenemos que bajar el Sun Java Wireless Toolkit desde aquí:

http://java.sun.com/products/sjwtoolkit/download.html

y antes de instalarlo, instalaremos las dependencias necesarias con:

sudo apt-get install libxpm-dev libxt-dev libx11-dev libice-dev libsm-dev libc6-dev libstdc++6-dev

ahora sí, instalaremos el Sun Java Wireless Toolkit que hemos descargado, como es un fichero .bin primero tendremos que darle permisos de ejecución y luego ya lo podremos ejecutar desde la consola, todo ello con (el nombre del archivo puede variar dependiendo de la versión descargada):

chmod +x sun_java_wireless_toolkit-2.5.2_01-linuxi486.bin.sh
./sun_java_wireless_toolkit-2.5.2_01-linuxi486.bin.sh

Tendremos que leer el contrato y aceptarlo, introducir el path de la JVM, que para mi caso es este:

/usr/lib/jvm/java-6-sun/bin/

y coger las opciones pertinentes para que lo instale.

Ahora vayamos con Eclipse, instalaremos el plugin EclipseME (Mobile Edition) siguiendo estas instrucciones:

http://eclipseme.org/docs/installation.html
http://eclipseme.org/docs/installEclipseME.html
http://eclipseme.org/docs/configuring.html

Si todo salió bien, en Window > Preferences deberíais ver un apartado que se J2ME.

Y con esto tendremos todo listo para desarrollar nuestras aplicaciones para movil!

Traducir Eclipse a Español

Traducir Eclipse al español es tan fácil como ir a esta página, y coger el enlace correspondiente a nuestra versión de Eclipse (la versión Galileo aún no es la definitiva pero ya está disponible para su descarga aquí).

Abrimos Eclipse y accedemos a Help > Software Updates y accedemos a la pestaña Available Software, pulsamos Add Site… y ponemos el enlace de nuestra versión de Eclipse.

Ahora nos saldrá una nueva fuente como veis en la imagen, que si la desplegamos nos permitirá traducir nuestro Eclipse a varios idiomas, entre ellos el español.

Visto en: Ubuntulife

Leer ficheros con la clase Scanner

Aparte de leer por teclado con la clase Scanner como expliqué aquí, con la cual podemos leer de una manera muy sencilla ya sea con el método .next() hasta que encuentra un espacio, o bien con .nextLine() toda la linea, podemos leer también ficheros de una forma muy fácil.

Lo primero será crear el fichero a leer, un txt en el que escribiremos varias lineas por ejemplo varios nombres con número que pueden indicar edad, todo separado por comas o con espacios, esos a nuestro gusto:

Manuel , 13 , 500,
María, 50, 1000
Arturo, 35, 900

Lo primero será crearnos un File e indicamos la ruta del fichero que crearmos antes que llamamos “fichero.txt”, y luego un objeto Scanner al que le pasaremos el File (en vez de el System.in para leer por teclado), y finalmente cerraremos el fichero.

Además tendremos que capturar la expeción  FileNotFoundException, por ejemplo con un try-catch:

try {
File fich = new File ("/ruta/fichero.txt");
Scanner scn = new Scanner (fich);

//aquí el bucle

scn.close();

}

catch (FileNotFoundException fnfe){
fnfe.printStackTrace();
}

Para leer las lineas nos valdremos de un bucle, en el que utilizaremos los métodos .hasNextLine() que nos dice si hay o no otra linea mediante un boolean y el metodo .nextLine() que nos devuelve dicha linea.

while (scn.hasNextLine()){
			String linea = scn.nextLine();
			System.out.println(linea);
		}

Este método nos irá imprimiendo por consola las líneas que tenga el fichero.

Si queremos que nos divida los datos por espacios o por comas, o por lo que pongamos entre dato y dato.
Gracias al método .useDelimiter(), podremos añadir los elementos con los que delimitar la cadena, en este caso \\s se corresponde al espacio, y \\s* indica 0 o más espacios.

while (scn.hasNextLine()){
			String linea = scn.nextLine();
			Scanner sl = new Scanner(linea);
			sl.useDelimiter("\\s*,\\s*");

			System.out.println(sl.next());
			System.out.println(sl.next());
			System.out.println(sl.next());

		}

Como importar clases entre distintos proyectos en Eclipse (II)

Ya os conté como hacerlo de una forma rápida y sencilla aquí, y ahora os cuento otra solución que se suele utilizar más en grandes proyectos.

La solución es generar un fichero .jar con el bytecode de nuestro proyecto, con la evidente pega de tener que recompilar y crear el jar si cambiamos algo en el proyecto que estamos intentando utilizar en otro.
Lo podemos hacer con los siguientes pasos:

  1. Para empezar tendremos que compilar el proyecto que quieres usar en otro u otros.
  2. Ahora nos dirigimos al directorio bin y añadimos todo el contenido en un fichero .zip
  3. Renombramos el .zip a .jar
  4. Sólo queda incluir la librería .jar como uno de los jars de tu proyecto.

Como importar clases entre distintos proyectos en Eclipse (I)

Importar clases dentro de un mismo proyecto es trivial, sólo tenemos que hacer un import elPaquete.laClase, y ya podremos crear objetos de las clases que se encuentran en el paquete que acabamos de importar.

Sin embargo, cuando intentamos importar entre distintos proyectos, veremos que no podemos hacerlo con este método, de hecho, no es trivial el cómo hacerlo.

Se puede hacer de dos formas, en esta entrada explico la primera y explicaré la otra en otra entrada

Añadir a las fuentes de un proyecto, las fuentes de otro

  1. Pinchamos sobre el proyecto al que queremos importar paquetes de otros proyectos, y con click-derecho accedemos a las propiedades (Properties) y ahí accedemos a “Java Build Path”.
  2. En esta ventana accedemos a la pestaña “Source” y pinchamos en “Link Source”.
  3. Aquí podemos añadiremos el directorio de fuentes de otro proyecto que queremos importar. En “Linked Folder Location” ponemos la ruta de la carpeta src del otro paquete. En “Folder Name” nos pondrá src por defecto, pero este nombre ya existirá asique lo cambiamos por el nombre que queramos.
  4. Ya está hecho, ahora nos saldrá dentro del proyecto otra carpeta que apunta a la carpeta que indicamos y podremos importar dicho paquete para crear clases de este.

Cambios de base en Java de manera sencilla

Siempre es útil saber cambiar un número de una base a otra cuando programas, ya sea para pasarlo a binario, a decimal, a hexadecimal, o la base que quieras.

Aquí os dejo unas formas muy sencillas de hacer esto en Java.

Para este fin nos valdremos tan solo de la clase Integer, y los métodos parseInt y toString.

Convertir cualquier número de cualquier base a decimal

Lo explicaré con ejemplos. En el siguiente código, convertimos un número binario a decimal, declarándonos un int. Con el método parseInt, el primer parámetro será el número en binario (en forma de String), y en el siguiente, su base (2).

int a = Integer.parseInt("101", 2);
System.out.println (a);

El resultado por consola, será un 5.
Otro ejemplo de lo mismo:

int a = Integer.parseInt("11", 16);
System.out.println (a);

El número 11 en hexadecimal, es el 17 en decimal, que es lo que muestra por consola ese código. Esto es aplicable a cualquier base.

Convertir un número decimal, a cualquier base

Con el método toString de la clase Integer, podremos convertir un número decimal a la base que queramos de forma muy similar al ejemplo anterior.

En este caso guardamos el resultado en un String, y pasamos como primer parámetro el número decimal, y como segundo la base a la que queremos convertirlo. El resultado por consola será el número decimal en la base indicada. Por ejemplo:

String b = Integer.toString(7, 2);
System.out.println (b);

El número 7, en base binaria es el 111, que será el resultado por consola.

String c = Integer.toString(11, 16);
System.out.println (c);

El número 11 en hexadecimal es la letra B.

Un método sencillísimo para convertir entre bases, tan sólo en una línea de código.

Saludos!

Clase Scanner en Java, leer datos más rápido

Esta clase que se encuentra disponible desde Java 1.5, nos permite leer datos de una forma más sencilla que el clásico InputStream con un BufferedReader.

Para utilizarla tan solo tenemos que crearnos un objeto de tipo Scanner (importando previamente el paquete java.util.Scanner) e indicandole a este que lea de la consola con System.in. Nos quedaría lo siguiente:

Scanner pruebaScanner = new Scanner(System.in);

Una vez hecho esto sólo tenemos que utilizar la función .next , para leer por consola hasta que encuentre un retorno de carro y salto de linea. El valor lo guardaremos en un String.

String texto = pruebaScanner.next();

Con esto podríamos estar leyendo por teclado hasta que se introduzca una palabra determinada por ejemplo “fin”, utilizando un bucle while:

while (!texto.equals("fin")) {
           texto = pruebaScanner.next();
            System.out.println(texto);
       }