Find JSRs
Submit this Search


Ad Banner
 
 
 
 

JSRs: Java Specification Requests
JSR 354: Money and Currency API

Updates to the Original JSR

The following information has been updated from the original JSR.

2020.05.20:
The Maintenance Leads moved the maintenance of the JSR to JCP 2.11.

2018.11.09:
On the successful completion of the Transfer Ballot, the Maintenance Lead role for JSR 354 has moved from Credit Suisse to Trivadis, Werner Keil, and Otavio Santana.

Specification Leads:
Anatole Tresch, Trivadis
Werner Keil
Otavio Santana

E-Mail Addresses:
anatole.tresch@trivadis.com
werner.keil@gmx.net
otaviopolianasantana@gmail.com

2018.10.22:
JSR 354 has been moved to JCP version 2.10 in preparation for the Transfer Ballot.

2013.01.09:

2.13 Please describe the anticipated schedule for the development of this specification.

Early Draft Review was planned for the end of March 2013. With successful progress it is intended that this JSR can be considered for inclusion in Java SE 9.

2012.12.21: The Specification Lead has changed to Anatole Tresch.

Specification Lead: Anatole Tresch, Credit Suisse

E-Mail Address: anatole.tresch@credit-suisse.com


Original Java Specification Request (JSR)

Identification | Request | Contributions

Section 1. Identification

Submitting Member: Credit Suisse

Name of Contact Person: Victor Grazi

E-Mail Address: victor.grazi@credit-suisse.com

Telephone Number: +1 212 538 5703

Fax Number: -


Specification Lead: Victor Grazi

E-Mail Address: victor.grazi@credit-suisse.com

Telephone Number: +1 212 538 5703

Fax Number: -


Initial Expert Group Membership:

Credit Suisse
Stephen Colebourne
Ben Evans
Goldman Sachs
Werner Keil

Supporting this JSR:

Credit Suisse
Stephen Colebourne
London Java Community
Caxton Associates
Goldman Sachs
JP Morgan/Chase
Werner Keil



Section 2: Request

2.1 Please describe the proposed Specification:

This JSR will provide a money and currency API for Java, targeted at all users of currencies and monetary amounts in Java.

The API will provide support for standard ISO-4217 and custom currencies, and a representation of a monetary amount.

It will support currency arithmetic, even across different currencies, and will support foreign currency exchange.

Additionally, implementation details surrounding serialization and thread safety are to be considered.

2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)

Java SE

2.3 The Executive Committees would like to ensure JSR submitters think about how their proposed technology relates to all of the Java platform editions. Please provide details here for which platform editions are being targeted by this JSR, and how this JSR has considered the relationship with the other platform editions.

This JSR is targeted at Java SE, but can be used in Java ME and Java EE as well. Other specifications, from Java ME or Java SE/EE, may wish to examine or contribute to this JSR, and eventually use the new model. Such changes are outside the purview of this JSR, but input from those groups will be welcomed.

2.4 Should this JSR be voted on by both Executive Committees?

No

2.5 What need of the Java community will be addressed by the proposed specification?

Monetary values are a key feature of many applications, yet the JDK provides little or no support. The existing java.util.Currency class is strictly a structure used for representing ISO-4217 currencies, but not associated values or custom currencies. It also provides no support for arithmetic or currency conversion, nor for a standard value type to represent a monetary amount.

2.6 Why isn't this need met by existing specifications?

The existing java.util.Currency class is strictly a structure used for representing ISO-4217 currencies. It does not provide the API?s for custom currencies, money arithmetic, currency exchange, or transport.

2.7 Please give a short description of the underlying technology or technologies:

This JSR will initially develop code using standard functionality based on Java SE 7.

In terms of design, it is intended that immutable classes will form the core. It is also intended to use interfaces for exposing the API.

2.8 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)

javax.money

2.9 Does the proposed specification have any dependencies on specific operating systems, CPUs, or I/O devices that you know of?

No

2.10 Are there any security issues that cannot be addressed by the current security model?

No

2.11 Are there any internationalization or localization issues?

Although currency is dependent on location, and regional currency changes occur frequently, it is beyond the scope of this API to maintain regional information, and it is up to the implementer to code for regional variations using the tools provided by the API.

2.12 Are there any existing specifications that might be rendered obsolete, deprecated, or in need of revision as a result of this work?

All functionality of the java.util.Currency class will be incorporated into the specification. java.util.Currency class can be deprecated.

2.13 Please describe the anticipated schedule for the development of this specification.

Early Draft Review by mid-2012. With successful progress it is intended that this JSR can be considered for inclusion in Java SE 8.
Early Draft Review was planned for the end of March 2013. With successful progress it is intended that this JSR can be considered for inclusion in Java SE 9.

2.14 Please describe the anticipated working model for the Expert Group working on developing this specification.

It is intended that this JSR is run as transparently as possible. The mailing list will be open to anyone in the Java community to contribute to. The reference implementation source base will also be publicly viewable. The project will have a homepage at java.net. JIRA Issue tracking and versioning will be hosted on java.net and tools such as blogs and internet forums will be used to advertise the ongoing process as appropriate.

2.15 Provide detailed answers to the transparency checklist, making sure to include URLs as appropriate:

Is the schedule for the JSR publicly available, current, and updated regularly? YES
Can the public read and/or write to a wiki for the JSR? YES
Is there a publicly accessible discussion board for the JSR that you read and respond to regularly? YES
Have you spoken at conferences and events about the JSR recently? NOT YET

Are you using open-source processes for the development of the RI and/or the TCK? YES, these will be based on Java SE and open source tools such as JUnit.

What are the Terms of Use required to use the collaboration tools you have prepared to use with the Expert Group, so that prospective EG members can judge whether they are compatible with the JSPA? http://www.java.net/javanet-web-site-terms-use

Does the Community tab for my JSR have links to and information about all public communication mechanisms and sites for the development of my JSR? IT WILL WHEN FILING IS COMPLETE

2.16 Please describe how the RI and TCK will de delivered, i.e. as part of a profile or platform edition, or stand-alone, or both. Include version information for the profile or platform in your answer.

TCK and RI will be developed as standalone modules. RI is intended for distribution as part of Java SE version 8 but can run standalone

2.17 Please state the rationale if previous versions are available stand-alone and you are now proposing in 2.13 to only deliver RI and TCK as part of a profile or platform edition (See sections 1.1.5 and 1.1.6 of the JCP 2 document).

The RI and TCK will be available free of charge in both binary and source forms using a business-friendly, Open Source license: the Apache Software License.

2.18 Please provide a description of the business terms for the Specification, RI and TCK that will apply when this JSR is final.

We will be using the Standard Spec License for the JSR specification http://jcp.org/aboutJava/communityprocess/speclead/final-license.txt, and Apache 2.0 License for the RI and TCK: http://www.apache.org/licenses/LICENSE-2.0.html

2.19 Please describe the communications channel you have established for the public to observe Expert Group deliberations, provide feedback, and view archives of all Expert Group communications.

The entire community can request access to the mailing list jcurrency_mail@javamoney.java.net. The EG will occasionally have closed discussion to discuss procedural matters, e.g times and locations of meetings. The results of those discussions will always be posted publicly.

2.20 What is the URL of the Issue Tracker that the public can read, and how does the public log issues in the Issue Tracker?

http://java.net/jira/browse/javamoney

2.21 Please provide the location of the publicly accessible document archive you have created for the Expert Group.

http://java.net/projects/javamoney/downloads





Section 3: Contributions

3.1 Please list any existing documents, specifications, or implementations that describe the technology. Please include links to the documents if they are publicly available.

See https://github.com/JodaOrg/joda-money/blob/master/Notes.txt

3.2 Explanation of how these items might be used as a starting point for the work.

The specification should be derived from the experiences of the expert group, as well as considerations from other existing APIs. Those APIs should be reviewed for any possible additional strategy guidance.