1. JSR 354 Moneda y Dinero CLOJUG 24-ENE-2015
http://www.clojug.org Imagen tomada de http://elpueblo.com.co/
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. 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. Agenda Introduccin Tasas de Cambio y Conversin Monedas y
Valores Monetarios Formato y Anlisis Extensiones 44 55 Documentacin
y Prctica66 11 22 33
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. 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. 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. 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
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. 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. 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. 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