JSR Community Expert Group

Summary | Proposal | Detail (Summary & Proposal) | Nominations JSRs: Java Specification Requests JSR 354: Money and Currency API

Stage Access Start Finish Maintenance Release Download page 29 Jun, 2020 Maintenance Review Ballot View results 09 Jun, 2020 15 Jun, 2020 Maintenance Draft Review Download page 26 May, 2020 08 Jun, 2020 Transfer Ballot View results 30 Oct, 2018 05 Nov, 2018 Final Release Download page 13 May, 2015 Final Approval Ballot View results 28 Apr, 2015 11 May, 2015 Proposed Final Draft Download page 13 Mar, 2015 Public Review Ballot 2 View results 29 Apr, 2014 12 May, 2014 Public Review 2 Download page 26 Mar, 2014 24 Apr, 2014 Public Review Ballot View results 07 Jan, 2014 21 Jan, 2014 Public Review Download page 24 Oct, 2013 23 Dec, 2013 Early Draft Review Download page 01 May, 2013 31 May, 2013 JSR Renewal Ballot View results 22 Jan, 2013 04 Feb, 2013 Expert Group Formation 21 Feb, 2012 21 Jan, 2013 JSR Review Ballot View results 07 Feb, 2012 20 Feb, 2012 JSR Review 05 Jan, 2012 06 Feb, 2012 Status: Active

JCP version in use: 2.11

Java Specification Participation Agreement version in use: 2.0





Description:

Provides an API for representing, transporting, and performing comprehensive calculations with Money and Currency.



Expert Group Transparency:

Public Communications

Issue Tracking



2.0Provides an API for representing, transporting, and performing comprehensive calculations with Money and Currency. Team

Specification Leads Werner Keil Keil, Werner Otavio Santana Santana, Otavio Anatole Tresch Credit Suisse Anatole Tresch Trivadis AG Expert Group Bakos, Greg

: Gergo Bakos Stephen Colebourne Cotton III, Ben D.

: Ben D. Cotton III Credit Suisse

: Matthias Buecker Credit Suisse

: Scott James Credit Suisse

: Sanjay Nagpal Credit Suisse

: Anatole Tresch Credit Suisse

: Anatole Tresch Grindei, Manuela Huesler, Thomas

: Thomas Huesler Jewell, Tony

: Tony Jewell JUG Chennai

: Rajmahendra Hegde Werner Keil Werner Keil Bob Lee Simon Martinelli Christopher Pheby Prestes, Jefferson

: Jefferson Prestes Otavio Santana Otavio Santana Swaminathan, Arumugam

: Arumugam Swaminathan Mohamed Taman Trivadis AG

: Anatole Tresch Contributors 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.



