Archive for the ‘ java ’ Category

Cambiar el nombre en el Javadoc de NetBeans

Siempre me ha tocado bastante las narices que NetBeans me genere siempre las nuevas clases incluyendo en el javadoc la etiqueta @author con mi nombre de usuario, es bastante molesto tener que irlo cambiando cada vez que generas una nueva clase y al final nunca miraba como se podía cambiar. Hasta hoy, que tengo un día menos perezoso de lo normal y coincidía que empezaba un proyecto nuevo (una práctica para la universidad) he buscado a ver como podía solucionarlo. Resulta ser bastante fácil.

NetBeans tiene una serie de plantillas que utiliza cada vez que generamos un nuevo fichero, en particular la que nos interesa en éste caso es la plantilla que usa cuando creamos una nueva clase java. Para encontrar éste fichero iremos a Tools > Templates bajamos hasta las últimas entradas y desplegamos la que se llama User Configuration Properties que contendrá User.properties que realmente no es más que eso, un fichero properties de java. Lo seleccionamos y pulsamos en la esquina inferior derecha el botón Open in Editor.

Se nos abrirá el fichero en cuestión y en mi caso, NetBeans 6.7.1, me aparecen únicamente comentarios. Si echamos un vistazo veremos que la última línea dice algo así como:

#user = Your Name <your.name at your.org>

La descomentamos quitando el # del principio de la línea y cambiamos el valor por el texto que queremos que aparezca tras la etiqueta @author del javadoc de nuestro código. Ojo! No es necesario ponerlo entre comillas, simplemente poned el texto tal cual.

No estaría demás mirar que más opciones se pueden configurar en éste fichero, igual nos podemos ahorrar trozos de código que metemos en todas las clases (constructores por defecto, constructores copia, sobrecargas del toString, del equals…). Lo que me escama es que no haya ningún diálogo para configurar ésto sin tener que tocar los ficheros aunque vete a saber… viendo lo que acojona la ventana de configuración de netbeans igual si que lo hay 😛

Anuncios

Novedades del JDK 7

Hoy, revisando noticias atrasadas, he visto la de Dos Ideas, sobre “Lo Nuevo en el compilador del JDK 7” y, aunque sea una noticia que incluya “java” y “compilador” en una misma frase (xDDDD) las explica muuuuy bien.

Entre las que más me han gustado a mi hay de todo, funcionalidades nuevas y también cosillas que simplifican bastante la forma de trabajar con cosas que ya existían.

Voy a resaltar las que me han parecido más interesantes:

  • Switch sobre String
  • Gestión Automática de Recursos
  • Mejoras en los números (literales numéricos)
  • Soporte para Collections

Sigue leyendo

Argumentos variables en Java

Nota rápida. A ésto no le di gran importancia nada más verlo, pero si tienes en cuenta las llamadas a las funciones ves donde está la ventaja 😉

Un método:

    public static void jeje(String[] strs) {
        for (String s:strs) {
            System.out.println(s);
        }
    }

y otro método:

    public static void jojo(String… strs) {
        for (String s:strs) {
            System.out.println(s);
        }
    }

Prácticamente igual y, seamos sinceros, no supone ninguna diferencia escribir uno en vez del otro. De hecho, para Java es el mismo método. ¿entonces? ¿para qué voy a escribirlo de otra manera?

Como siempre se trata de comodidad, veamos ahora como llamar a éstos dos métodos. El primero:

jeje(new String[]{“a”,”b”,”c”,”d”});

mientras que para llamar al segundo nos basta con ésto:

jojo(“a”,”b”,”c”,”d”);

Mucho más legible y menos engorroso. Además, si quieremos trabajar con índices, en ambos casos, el parámetro strs es un array. Tanto en una declaración como en otra podemos hacer un strs.lenght() o strs[i].

Tampoco os preocupéis por la eficiencia porque, no lo he mirado del todo, pero estoy casi seguro de que el analizador léxico transformará ese String… y la llamada en operaciones sobre arrays directamente, es sólo potencial de cara al desarrollador.

Fuente: LuAuF

Twitter en Java

Como ya dije el otro en el post en el que probábamos Twitter desde python, hoy cuento como hacer lo mismo desde Java.

La librería que vamos a utilizar para acceder a los servicios de twitter es Twitter4J, aunque hay alguna otras por ahí que también promete buenos resultados (como java-twitter). Aquí os dejo el link de descarga del zip con los jars y la página con los ejemplos en los que me he basado para probarlo.

Nuestro primer ejemplo consistirá en actualizar nuestro estado en twitter (he cambiado el orden, no por nada, sino por seguir el orden de los ejemplos originales), viene a ser algo como ésto:

import twitter4j.Twitter;
import twitter4j.TwitterException;
[…]

Twitter twitter = new Twitter(“nuestro_username“,”nuestro_password“);
twitter.updateStatus(“Twitting from Java…”);

Tan sencillo como en el ejemplo de python, una línea más si contamos el incluir la excepción necesaria. Aquí paso de la excepción porque sólo es un ejemplo 😉

Vamos con el siguiente caso, mostrar el estado de las personas que estamos siguiendo en twitter:

import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import java.util.List;
[…]

Twitter twitter = new Twitter(“nuestro_username”,”nuestro_password”);
        List<User> friends = twitter.getFriends();
        for (User f:friends) {
            System.out.println(f.getScreenName() + “: ” + f.getStatusText());
        }

Como vemos es también muy sencillo, igualito al ejemplo del otro día en python. Hay una sóla cosa que no me gusta demasiado porque puede liar… ¿por qué el objeto se llama “User” y el método “getFriends”? vamos, canta un poco cuando el método “getFriends” devuelve un objeto de tipo “User”, sería mucho más lógico que devolviese un objeto de tipo “Friend”. Pero bueno, sería sólo un cambio de nombre de la clase, aunque sería un poco más claro. Eso suponiendo que yo esté haciendo las cosas bien…

Quedan más ejemplos, en el link que os dejado arriba cubren también el envío/”recepción” de mensajes directos, la búsqueda de tweets, paginación, autenticación mediante OAuth (como se hace Taske con RememberTheMilk), … pero todo eso se escapa de lo que quería mostrar.

Me esperaba que éstos ejemplos ocuparan bastante más en java que lo que ocuparon en twitter (y que sería bastante más lento) pero la verdad es que las dos APIs son clavaditas, un puntazo! 😀

Posiblemente me anime a hacer algo que permita utilizar twitter para llevar los logs de aplicaciones (sobretodo ahora, que si vuelvo en verano, la aplicación que estaba haciendo en el curro pasa a pre-producción en un par de delegaciones :D), algo muy básico, pero que permita controlar los posibles errores sin tener que coger el teléfono cada dos por tres 😛

Delay en Java

Otra entrada breve para dejar una receta que muchas veces tengo que andar buscando por ahí porque no me suelo acordar. Ésta vez es sobre programación, cosa que igual no interesa mucho a los que siguen éste blog por los contenidos sobre linux (que viene a ser el tema principal del blog).

De hecho, por si a alguien no le interesa mucho la programación voy a cortar aquí ya la parte del post que se ve en portada, así será más cómodo ver el resto de las entradas 😀

Sigue leyendo

NetBeans será “casi” libre

Según leo en barrapunto, los chicos de Sun han decidido hacer con NetBeans lo mismo que hicieron en su día con Java y cuasi-liberarlo. Dentro de poco NetBeans será licenciado bajo la GPL Linking Exception, la misma licencia que permite que actualmente tengamos el jdk (Java Development Kit) en los repositorios de ubuntu. Si, vale, netbeans aparece, pero tenemos que descargar por nuestra cuenta el paquete de su web para que la cosa funcione, con la nueva licencia ya no habrá más problemas.

La razón que han dado no es muy lógica (como citan en la noticia de barrapunto) ya que han dicho que: “lo último que necesitamos son más licencias que hagan que los programadores se tengan que hacer abogados si quieren utilizar dos productos juntos.” Me supongo que dicen eso porque la GPL Linking Exception ya la han usado antes, sino lo más lógico sería pasarla a GPL.

A pesar de que hay varios comentarios en contra, me parece un gran adelanto. Además, mi editor favorito sigue siendo Eclipse, aunque para hacer interfaces gráficos sigo llevándome mis clases editadas con eclipse a NetBeans porque el editor que incorpora sigue siendo mucho más ligero que el plugin Visual Editor que hay disponible para Eclipse.

Ahora sólo nos falta un C++ Builder que sea libre y permita trabajar con gtk. No, no me gusta glade, prefiero el “arrastra y suelta donde te de la gana” antes que los contenedores.

Agilizando OpenOffice

 

 

Ya llevo dos recetas para aligerar las aplicaciones… y no, no es que tenga un ordenador malo, tampoco es lo mejor que podía haber pillado pero me he decantado por la movilidad frente a la potencia. Es bastante modesto, un Intel Centrino con procesador de bajo consumo a 1.3Ghz y 1Gb de ram. Todo en un portátil de 12.1” que ahora que Ubuntu Feisty Fawn no me pilla los ventiladores (tengo que mirarlo, lo voy a apuntar en el gReminder xD) se calienta la ostia en cuanto le doy bastante caña.

Al tema, el caso es que yo soy de los que evitaba al máximo el uso de OpenOffice por lo que tardaba en arrancar… he llegado a hacerme un script para transformar los .doc en .pdf antes de abrirlos… hasta hoy. Hoy he visto me han enseñado una opción que permite dejar pre-cargado un lanzador rápido de OpenOffice. La verdad es que funciona realmente bien, se queda en el tray y permite arrancar desde ahí cualquiera de las aplicaciones de la suite ofimática libre por excelencia (hasta que salga una que no tire de java o se impongan las online). El precio? asequible, unos 20mb de ram en mi caso que crecen según lo que vayas abriendo y bajan al dejar de usarlo un rato. Ahora, estaba ocupando unos 8kb de ram y me ha abierto el writer en 5segs, una mejoría más que notable.

Os índico como activarlo, os vais a Herramientas -> Opciones y seleccionáis en el arbol de la izquierda la opción Memoria de Trabajo y marcáis la casilla “Inhabilitar inicio rápido systray” si, parece lo contrario, pero tiene que estar marcada, debe ser un error un traducción. Después de haberlo abierto ahora mismo me abre el writer instantáneamente y ha pasado a ocupar sus 20mb de ram.

Al menos a mi, me merece la pena.

PD: me supongo que la diferencia será que precarga la máquina virtual de java en memoria pero no puedo asegurarlo, quizás cargue ciertos objetos ya instanciados en memoria, no lo sé… ¿alguien lo sabe? Qué lo comente!