Find JSRs
Submit this Search

Ad Banner

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: Maintenance
JCP version in use: 2.11
Java Specification Participation Agreement version in use: 2.0

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

Expert Group Transparency:
  Public Communications
  Issue Tracking


Specification Leads
  Werner Keil Keil, Werner
  Otavio Santana Santana, Otavio
Star Spec Lead Anatole Tresch Credit Suisse
Star Spec Lead Anatole Tresch Trivadis AG
Expert Group
  Greg 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 Pheby, Christopher
: Christopher Pheby
Prestes, Jefferson
: Jefferson Prestes
  Otavio Santana Otavio Santana Swaminathan, Arumugam
: Arumugam Swaminathan
  Mohamed Taman Trivadis AG
: Anatole Tresch

Updates to the Original JSR

The following information has been updated from the original JSR.

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

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:

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


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:

Original Java Specification Request (JSR)

Identification | Request | Contributions

Section 1. Identification

Submitting Member: Credit Suisse

Name of Contact Person: Victor Grazi

E-Mail Address:

Telephone Number: +1 212 538 5703

Fax Number: -

Specification Lead: Victor Grazi

E-Mail Address:

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?


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.)

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


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


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 JIRA Issue tracking and versioning will be hosted on 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?

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, and Apache 2.0 License for the RI and TCK:

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 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?

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

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.


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.