Archivo de Java

lis.to un gestor de tareas donde hay mucho que aprender

Desde hace unos días vengo probando lis.to. Es un gestor de tareas sencillo, que permite crear tareas y organizarlas por carpeta que pueden ser de proyectos, contextos, o lo que quieras. A cada tarea le puedes asignar una fecha y una hora de finalización y poner un recordatorio de manera que te avise antes de la finalización.

listo1

Cuando se edita una tarea se puede rellenar toda la información en una ‘entrada rápida’, indicando la fecha de finalización y la carpeta mediante los símbolos = y @. Además se puede añadir un texto libre a la tarea y el programa lo resalta con un icono en la lista de tareas.

listo21

No es una aplicación compleja, sino que te haces con ella en cinco minutos, pero que más allá de su uso me ha llamado la atención la manera en que está hecho. En primer lugar lis.to está hecha con Java y el interfaz gráfico con Swing. Es multiplataforma y funciona perfectamente en Windows y en Mac. En Windows la interfaz parece más nativa que en Mac, sobre todo por dos cosas: la barra de iconos deja bastante que desear y el panel lateral tipo iTunes tampoco está muy logrado. Sin embargo hay otras muchas cosas muy bien hechas y que quiero aprender cómo están hechas. La primera es que las tareas no se guardan en ninguna base de datos, sino en un archivo XML. También me ha gustado la manera de hacer el autocompletado cuando se asigna una carpeta en la entrada rápida. Lo último que me ha llamado la atención es la manera de desplegar/replegar parte del formulario de edición de tareas cuando se pulsan los triángulos azules. Como se puede descargar un jar y se puede descomprimir, se puede curiosear las clases que se han usado el programa y, con un poco de suerte y un mucho de google, encontrarlas y estudiarlas.

Actualización 15/Mar/2010: Lis.to está alojado en Google code y se puede descargar su código en este enlace: http://code.google.com/p/listo/. Pulsando el la pestaña código y haciendo checkout con un cliente subversion podemos descargar todo el código fuente.

la guerra de los java-ide

Con la llegada de IntelliJ IDEA CE ya son tres los contendientes en la guerra de los IDE para Java dentro del campo de batalla open source. Hasta ahora quienes quisieran un IDE potente y no estuvieran dispuestos a pagar por las ediciones comerciales existentes podían optar por Eclipse o Netbeans, pero ahora hay un contendiente más. IntelliJ IDEA CE viene precedido por la fama de la edición comercial de su IDE, y tiene un nutrido grupo de usuarios. Uno de ellos es Ken Orr, el desarrollador de los Mac widgets y que ha anunciado recientemente que se marcha a trabajar a Apple.

No entro a valorar cual de los tres IDE es mejor, por qué estoy demasiado verde como para hacerlo y además todos me vienen grandes de momento, pero sí creo que hay que considerar la posibilidad de probar IntelliJ IDEA CE.

macwidgets for java

En el largo camino del aprendizaje de Java estoy buscando librerías que permitan desarrollar aplicaciones que tengan una estética lo más cercana posible a OS X. Una de ellas, la que pienso que consigue un aspecto más próximo a Aqua es macwidgets. Con esta librería se pueden conseguir barras de botones, paneles laterales y ventanas HUD, entre otros controles, realizados con Java.

El desarrollador de la librería mantiene un blog llamado Exploding pixels donde cuenta cosas relacionadas con el desarrollo de la librería y sobre diseño de interfaces de usuario en el mundo Mac. Uno de los post más comentados en este blog es el que critica la posición de las pestañas en Safari 4, diciendo que al estar por debajo de la barra de direcciones crea confusión pues realmente la barra de direcciones parece compartida entre las pestañas, cosa que no es cierta por su comportamiento. El post en cuestión es Why can’t Safari get tabs right?.

Volviendo a las macwidgets, la mejor manera de hacerse una idea de su aspecto es verlas en funcionamiento. Una de las aplicaciones que las utilizan es jCodeCollector, una aplicación gratuita que permite guardar trozos de código clasificándolo por categorías. El aspecto del programa es tan maquero como muestra la imagen siguiente:

jcc20

erratas en traducciones

En mi aprendizaje de Java he decidido comenzar por un libro generalista, que hable de todos los aspectos del lenguajes. El libro en cuestión es Java 6 de Rogers Cadenhead que es la traducción de Java 6 in 21 days. Aunque el tema de aprender algo en 21 dias no se me pasa por la cabeza, elegí el libro porqué me pareció bastante completo y porque tenía un par de capítulos sobre Swing. Prefiero los libros traducidos a los originales en inglés porque aunque en inglés me defiendo, leerme un libro completo en inglés al final se me pone cuesta arriba y muchas veces termino dejándolo a la mitad.

Cuando el libro está traducido, hay un elemento que influye casí tanto en el resultado final como la propia calidad del libro: el traductor. La traducción de Java 6 deja bastante que desear, como muestra el siguiente párrafo de original, página 77 del original:

Casting between primitive types enables you to convert the value of one type to another primitive type. It most commonly occurs with the numeric types, and there’s one primitive type that can never be used in a cast. Boolean values must be either true or false and cannot be used in a casting operation.

La traducción del párrafo es la siguiente, página 94 de la versión traducida:

Moldear entre tipos primitivos le capacita para convertir el valor de un tipo en primitivo en otro. Ello sucede mayormente entre tipos primitivos y hay un tipo primitivo que nunca puede usarse en un molde. Los valores booleanos deben ser o True o False y no pueden usarse en una operación de arrojo.

La verdad es que traducir casting por moldear tiene narices, pero lo de la operación de arrojo es para nota. Se nota a la legua que el traductor no sabe de lo que está escribiendo, y muchas veces desvirtua por completo el sentido de lo que pretende expresar el autor original. Es una pena, porque el libro es bueno, pero la traducción lo hace bajar puntos a la hora de recomendarlo. Realmente si no tienes problemas con el inglés, creo que merece la pena pedir el libro a Amazon y leer el original.

el rey ha muerto, ¡ viva el rey !

Por fin se ha resuelto uno de los temas que más de cabeza me han llevado en los últimos meses. En mi trabajo de día llevaba tiempo rondando la posibilidad de una restructuración del departamento donde trabajo, y por fin se ha producido. Esta restructuración supone entre otras cosas que el desarrollo se debe realizar en la medida de lo posible en el entorno corporativo, que está basado en Java con un framework propio. Así que toca aprender Java, y centrarse en todo lo referido a programación para entornos web.

Esto tiene una repercusión también en mi trabajo de noche. Mi intención es seguir manteniendo los programas de alanit, pero me atrae mucho la posibilidad de programar para Mac. Java es un buen lenguaje para programar en OS X, incluso hay look & feels de Java que simulan Aqua bajo Swing. Y muchas más cosas sorprendentes que iré contando por aquí poco a poco.