Jean-Marie Dautelle ha escrito este artículo sobre JSR-275 que busca estandarizar las medidad y sus unidades mediante el uso de clases concretas y extensibles.
Actualmente en Java no existe forma simple de lidiar con las medidas usadas para un mismo fin, en el artículo la autora menciona un error en un software desarrollado para la NASA que costó USD$ 125 millones porque la mitad de los programadores usaron unidades inglesas y la otra unidades métricas. Esta especificación busca una forma consistente para lidiar con las unidades de forma tal que no importa si el input esté en celsius o en fahrenheits, el sistema tomará los valores correctos.
Por ejemplo, para obtener el peso de una persona se pondría:
class Person {
void setWeight(Measurable<Mass> weight);
}De esta forma se podría obtener el valor en la unidad que uno quisiera:double weightInKg = weight.doubleValue(KILOGRAM);
Como puedes ver, al querer obtener el peso en una unidad que no aplica para Masas, el compilador te informará del error.
La especificación también tiene métodos estáticos para realizar operaciones entre las unidades, por ejemplo la operación KILO multiplica por mil una unidad y ofrece la posibilidad de crear unidades propias, aquí un ejemplo de la autora:
Unit<Pressure> PASCAL = NEWTON.divide(METER.pow(2)).alternate("Pa");
Unit<Duration> HOUR_MINUTE_SECOND = HOUR.compound(MINUTE).compound(SECOND);
Excelente agregacion al JDK 7, una solucion a un problema no tan frecuente.
Saludos
puede que no sea un problema frecuente, pero en si es un gran problema y la solucion propuesta no es muy dificil de implementar
Pues para nada poco frecuente. En este momento ya estoy estudiando la especificación y revisando la implementación de referencia de JScience porque para mí es de uso inmediato. Trabajo con cosas de comercio exterior y cuestiones de almacenaje, poder convertir entre unidades diferentes y almacenar datos capturado por personas acostumbradas a distintos sistemas de unidades es una gran ventaja para mi. Por supuesto que voy a tratar de meter este framework en el desarrollo que estoy haciendo actualmente.
Muchas gracias ecamacho por el pitazo.
Saludos.
Por nada darkcavie, que bueno que te haya resultado útil. Si llegas a usarlo en tu proyecto no estaría de más algún artículo en un blog o aquí mismo para que nos cuentes tu experiencia :-P
Escribe tu comentario