JSR354: Moneda y Dinero

download JSR354: Moneda y Dinero

If you can't read please download the document

Transcript of JSR354: Moneda y Dinero

  1. 1. JSR 354 Moneda y Dinero CLOJUG 24-ENE-2015 http://www.clojug.org Imagen tomada de http://elpueblo.com.co/
  2. 2. JSR 354 Moneda y Dinero Anatole Tresch @atsticks Regular Conference Speaker Specification Lead JSR 354 Proyecto en Java.net http://java.net/projects/javamoney JSR https://jcp.org/en/jsr/detail?id=354 Proyecto en Github http://javamoney.github.io/ Twitter @jsr354
  3. 3. JSR 354 Moneda y Dinero Los valores monetarios son parte fundamental de muchas aplicaciones, sin embargo, el JDK provee poco o ningn soporte para stos. La clase existente java.util.Currency es solamente una estructura para la representacin de las monedas actuales (ISO-4217), pero no para representar sus valores asociados o monedas personalizadas. El JDK tampoco ofrece soporte para operaciones aritmticas con monedas o conversin entre ellas ni tampoco un tipo de valor estndar para representar un valor monetario. Texto tomado de la especificacin del JSR-354
  4. 4. Agenda Introduccin Tasas de Cambio y Conversin Monedas y Valores Monetarios Formato y Anlisis Extensiones 44 55 Documentacin y Prctica66 11 22 33
  5. 5. Introduccin El Equipo Credit Suisse Stephen Colebourne JUG Chennai Goldman Sachs Werner Keil Y otros... Credit Suisse Stephen Colebourne London Java Community Caxton Associates Goldman Sachs JP Morgan/Chase Werner Keil Grupo Soporte Grupo Experto JUG Chennai London Java Community CEJUG JUGs Participantes https://jcp.org/en/jsr/detail?id=354 https://java.net/projects/adoptajsr/pages/WhoIsAdoptingJSRs##350_-->_#359 Anatole Tresch Credit Suisse Lder del JSR
  6. 6. Introduccin Limitaciones actuales de java.util.Currencies No soporta monedas histricas Por ejemplo, en la antigua Roma existan las monedas ureo y Denario, entre otras No soporta monedas no-estandar (no definidas en ISO-4217) Por ejemplo, hay pases en dnde vacas y camellos pueden representar valores monetarios No soporta monedas virtuales BitCoin, Facebook credits, Linden Dollar (Second life), etc. No se puede extender
  7. 7. Introduccin Objetivos del JSR-354 Proveer un API para el manejo de monedas y dinero en Java Soportar el estndar ISO-4217 y monedas personalizadas (por ejemplo virtuales), as como la representacin de valores monetarios Ofrecer operaciones aritmticas entre valores monetarios, incluso de diferentes monedas, y conversin entre stos
  8. 8. Introduccin Retos del JSR-354 Que sea un API simple, pero aplicable a los casos ms comunes Mantener un rendimiento ptimo que permita usarlo en aplicaciones de alto desempeo como por ejemplo aplicaciones de comercio electrnico. Que se pueda extender, dado que existen diferencias en cuanto a la precisin, conversin y formato de los valores monetarios. Ejemplos: Redondeo de valores monetarios en Suiza y Argentina El formato de la Rupia India: 12,34,00,000
  9. 9. Introduccin Paquetes principales JSR-354 Principal: javax.money CurrencyUnit, MonetaryContext, MonetaryCurrencies, MonetaryAmount MonetaryOperator... Formato: javax.money.format MonetaryFormats, MontaryAmountFormat... Conversin: javax.money.convert CurrencyConversion, ExchangeRate...
  10. 10. Introduccin javax.money.MonetaryContext Describe las capacidades que tiene una moneda Por ejemplo describe aspectos comunes como precisin, escala, etc. Accesible dese cualquier valor monetario +MonetaryAmount.getMonetaryContext():MonetaryContext Inmutable, serializable y apta para concurrencia
  11. 11. Monedas y Valores Monetarios Monedas //Representa una moneda public interface CurrencyUnit { public String getCurrencyCode(); public int getNumericCode(); public int getDefaultFractionDigits(); public CurrencyContext getCurrencyContext(); } //Fabrica de monedas public final class MonetaryCurrencies{ public CurrencyUnit getCurrency(String currencyCode); public CurrencyUnit getCurrency(Locale locale); public boolean isCurrencyAvailable(...); public Collection getCurrencies(CurrencyQuery query); }
  12. 12. Monedas y Valores Monetarios Monedas //Moneda por cdigo ISO-4217 CurrencyUnit usDolar = MonetaryCurrencies.getCurrency("USD"); CurrencyUnit euro = MonetaryCurrencies.getCurrency("EUR"); CurrencyUnit pesos = MonetaryCurrencies.getCurrency("COP"); //Moneda por localidad CurrencyUnit euro = MonetaryCurrencies.getCurrency(Locale.GERMANY); CurrencyUnit yen = MonetaryCurrencies.getCurrency(Locale.JAPAN); CurrencyUnit canadianDollar = MonetaryCurrencies.getCurrency(Locale.CANADA);
  13. 13. Monedas y Valores Monetarios Valores Monetarios public interface MonetaryAmount extends CurrencySupplier, NumberSupplier, Comparable { public MonetaryContext getMonetaryContext(); ... public MonetaryAmount with(MonetaryOperator operator); public R query(MonetaryQuery query); public MonetaryAmountFactory