lunes, abril 30, 2007

Nos adueñamos del tiempo - Fechas en Java

¿Cansado de renegar con los objetos Date y GregorianCalendar?
¿Le han pedido que calcule la cantidad de días entre dos fechas?
¿Está a punto de apretar el gatillo? NO LO HAGA!!!!
Este post fue motivado por un foro de La Web del Programador, que tanto me ha ayudado y en donde intento colaborar también. ¿Se han fijado que muy pocas veces encontramos tutoriales o proyectos de ejemplo donde pongan fechas?. Debo confesar que en varios cursos iniciales las trato de evitar hasta que veo que los alumnos han avanzado en sus conocimientos. Quiero presentarles un API llamada JODA (no sé exactamente que significan las siglas), pero en especial las Joda-Time.

Por ejemplo, para calcular la cantidad de días entre dos fechas con el API de Java (java.util) debería hacer lo siguiente:

//Creo las dos instancias de fecha
GregorianCalendar gc = new GregorianCalendar(2000, 11, 20);
GregorianCalendar gc1 = new GregorianCalendar(2000, 11, 25);
//Obtengo los objetos Date para cada una de ellas
Date fec1 = gc.getTime();
Date fec2 = gc1.getTime();
//Realizo la operación
long time = fec2.getTime() - fec1.getTime();
//Muestro el resultado en días
System.out.println(time/(3600*24*1000));

Ahora, un par de consideraciones:
  • El método getTime() retorna un long que simboliza la cantidad de milisegundos transcurridos desde el 01/01/1970.
  • El resultado de restar los dos long da como resultado (nuevamente) cantidad de milisegundos.
  • La fórmula time/(3600*24*1000) sirve para pasar los milisegundos a días.
Ahora veamos cómo se hace con el API de Joda:

//Creo las dos instancias de fecha

DateMidnight jodafec1 = new DateMidnight(2000, 11, 20);
DateMidnight jodafec2 = new DateMidnight(2000, 11, 25);

//Realizo la operación
Period periodo = new Period(jodafec2.getMillis()-jodafec1.getMillis());
//Muestro el resultado en días
System.out.println(periodo.getDays());

Sin duda esta nueva forma reduce la complejidad de los cálculos, sólo veo una cosa en contra de esta API: utiliza demasiado los parámetros tipo Object, lo que nos daría un poco de riesgo al momento de comprobación de tipos, pero los mismos creadores lo admiten, en pos de la facilidad de extensión que tiene esta librería.

Saludos

sábado, abril 28, 2007

La informática y las condiciones de trabajo 2

Bien, este post está (obviamente) relacionado con "La informática y las condiciones de trabajo". Este tuvo un par de discusiones bastante interesantes. Pero han pasado muchas cosas en este periodo de tiempo.
Simplemente quiero pasarles un par de links para que lean. Me he dado cuenta de que todos los trabajadores de la informática, entre los que encontramos a los que capacitamos, los desarrolladores, los técnicos, los recibidos, los no recibidos, pero por sobre todo a los que quieren empezar a trabajar, ya saben lo que está sucediendo en las empresas de IT de Córdoba - Argentina.

Pero soy positivo, yo empiezo a ver aires de cambio en los trabajadores (lamentablemente no en las empresas).

Aquí van los links:

Este es lo que originó el segundo link: La voz del interior - "Como a EDS, Pyme tecnológicas piden que les subsidien el empleo"

Este es el segundo (leer las opiniones) .

Saludos

miércoles, abril 25, 2007

Modalidad "chismosa"

Efectivamente, hoy me puse los ruleros y voy a contar el último chisme que me he encontrado por la web.
En realidad no es muy nuevo que digamos, pero resulta que la Apache Software Foundation ( alabados sean), más precisamente Geir Magnusson Jr, VP del proyecto Harmony, ha escrito una carta abierta para Sun Microsystems, donde plantea varias quejas acerca de las licencias de Sun para el JDK-SE. La carta es bastante detallada y por momentos dura.
Pero la cosa no terminó ahí, ya que desde la página de Sun hay un intento de respuesta, de hecho, ellos mismos lo ponen como un "initial thoughts" donde dicen entre otras cosas, que no pueden mantener contentos a todos los stakeholders y que la prioridad está puesta en hacer accesible la plataforma Java a las comunidades GNU/Linux (pregunta: ¿no era Java ya multiplataforma? - quizá no entendí bien ese punto).

Desde este humilde blog, envío un "haya paz!!!" más un "haya open-source!!!!"-

Saludos

jueves, abril 19, 2007

Lo tenía en mis narices!!!

Algo que me gusta mucho de Java es que nunca se termina de aprender. Siempre hay algo más (esto puede parecer tedioso para muchos). Pero esto hace que nuestro cerebro se active.
Hace poco tiempo estaba charlando con un compañero de facultad y me contaba lo que tenían planeado para su tesis. Básicamente consistía en un VNC hecho con Java (más algunas cosas que francamente no creo que sean posibles).
El caso es que me contó de una clase de Java, en el paquete java.awt, se llama Robot y quizá para muchos de uds. sea común o nada nuevo (de hecho, no es nuevo, ya que existe desde la versión 1.4.2 del JDK).

Esta clase permite tomar el control de mouse y del teclado en el sistema operativo en el que estemos trabajando!!!!! (como pueden ver, la clase me ha gustado mucho). Y por si fuera poco, es recontra-archi-facilísima de usar, por ejemplo, para que mi programa Java presione el botón de inicio de Windows, simplemente hago lo siguiente:

Robot r = new Robot();
r.mouseMove
(30, 750);
r.mousePress
(InputEvent.BUTTON1_MASK);


Bueno, la pregunta del millón: ¿Y para que puedo usar esto? Respuesta: para lo que quieras, aunque la mayoría de las veces se usa para hacer programas que realicen test automatizados, como es el caso de Abbot Java GUI Test Framework.

Saludos

domingo, abril 08, 2007

Aprendiendo Eclipse 3.2

Hola, estoy experimentando un poco con Wink, un programa que permite realizar presentaciones del tipo Flash, capturando pantallas.
De paso voy a comenzar una serie de tutoriales o "How to" de eclipse, ya que no siempre resulta intuitivo para el principiante.

Así que aquí va la primera parte, pueden verla en línea aquí (no lo recomiendo a menos que tengan banda ancha, está un poco pesada), pero también pueden descargarla desde aquí.

Espero que les sirva.

Saludos

viernes, abril 06, 2007

Optimizando las conexiones JDBC

Estaba tratando de adentrarme más en el mundo de JDBC 4.0, pero me topé con información muy importante acerca de la performance y las mejores prácticas de programación con respecto al acceso a bases de datos.
En lugar de leer cientos de artículos y las especificaciones, les recomiendo tomarse una hora para ver el siguiente webcast: JDBC Performance Best Practices. Este webcast pertenece a JavaLobby, un excelente lugar para encontrar información útil.

No crean que soy vago por no detallar, pero este webcast lo merece...
Bueno, lo admito, también tiene su cuota de vagancia.

Saludos