Status: MaintenanceJCP version in use: 2.7Java Specification Participation Agreement version in use: 2.0

Description:
This specification defines a Java runtime API for constraint programming. The CP API prescribes a set of fundamental operations used to define and solve constraint satisfaction and optimization problems.

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

javax.constraints

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

Early Draft Review: March 1, 2010

Complete the Specification, Public Draft/Final Release: September 1, 2010

Maintenance Review: December 15, 2010

2.16 Please describe how the RI and TCK will be 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.

We expect that initial Reference Implementations (RI) will be developed
based on popular open source constraint solvers written in Java such as:

- Choco, available under BSD open source license
- Constrainer, available under LGPL open source license.

We plan to use Java Compatibility Test Tools to develop a Technology Compatibility Kit (TCK). TCK will be available at no cost to non-profits and qualified individuals.

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.

I expect that Prof. Narendra Jussien (Head of the CS department Ecole des Mines de Nantes, President of the AFPC) will be my co-lead for this JSR.

Section 2: Request

2.1 Please describe the proposed Specification:

This specification defines a Java runtime API for constraint programming. The standardized CP API aims to make CP technology more accessible for business software developers. It intends to create CP Standards that will define unified business interface(s) for modeling and solving real-world decision support problems as Constraint Satisfaction and Optimization Problems. Having unified interfaces will allow commercial application developers to model their problems in such a way that the same model can be tried with different CP Solvers. This will minimize vendor dependence without limiting vendor's innovation. At the same time the CP API will help to bring the latest research results to real-world business applications.
The CP API prescribes a set of fundamental operations used to define and solve constraint satisfaction and optimization problems. The sets of operations will allow a user to express its decision support problem in terms of:
- Decision Variables defined as constrained integer, real, and set variables
- Constraints defined on these variables using the standardized unary, binary and global constraints.
Clearly separating the problem definition from problem resolution, the sets of operations will allow a user to apply standardized search strategies to find feasible and optimal solutions of the problem. The CP API will also allow a user to create custom constraints and search strategies in a unified way making them independent from a particular CP solver.

This specification target the Java Platform, Standard Edition (Java SE) allowing a user to develop and deploy CP-based Java decision engines on desktops and servers, as well as today's demanding Embedded and Real-Time environments.

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.

To make sure that the proposed technology can be used with all of the Java platform editions, the standard CP interface will use only the standard Java constructions available for all JDKs starting with 1.4. However, concrete implementations of the proposed standardized interface will be able to take an advantage of the latest Java editions.

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

The CP API JSR will be voted by the SE/EE.

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

This specification addresses the community need to reduce the cost associated with incorporating CP solvers within business applications. It will also address the community need to reduce the cost associated with implementing vendor- and platform-independent decision support optimization tools and services.

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

Today CP is a proven optimization technique and many CP solvers empower real-world business applications in such areas as scheduling, planning, configuration, resource allocation, and real-time decision support. However, the absence of standards still limits the acceptance of CP by the business world.

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

The key underlying technology is the constraint solver such as Choco?, Gecode?, or ILOG CP? to name a few. A constraint solver usually comes with its own API to define constraint satisfaction and optimization problems using generic constrained variables and predefined constraints. A constraint solver supports different types of constrained variables (integer, boolean, real, sets) with different implementations of their domains. A constraint solver provides a set of predefined unary, binary and global constraints and it allows a user to introduce its own constraints. A constraint solver also provides different search algorithms with ability for a user to customize them or define new, problem specific ones. These algorithms can be used to find a feasible solution, all solutions or the optimal solution. Constraint solvers usually include sophisticated constraint propagation, goal execution, and backtracking mechanisms.

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

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

2. Complete the Specification, Public Draft/Final Release: April 15, 2010

3. Maintenance Review: June 30, 2010

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

The JSR Specification Lead has already contacted major CP vendors and well-known CP experts and involved them in a preliminary discussion at www.cpstandards.org. We will invite them to join the Expert Group right after the initial JSR Review and acceptance. We plan to have an kick-off meeting during the oncoming major CP conference CP-2009 that will take place at Portugal on 20-24 September 2009. A preliminary Java CP API that will become a basis for the JSR is being discussed by CP experts at the Discussion Forum at www.cpstandards.org. During the first 3 months we plan to finalize the Expert Group that will include the most active contributors to the Early Draft.

? The Expert Group business is regularly reported on a publicly readable alias: YES

? The schedule for the JSR is publicly available, it's current, and I update it regularly: YES

? The public can read/write to a discussion forum or wiki for my JSR: YES, a preliminary Java CP API that is considered to become a basis for the JSR is being discussed by CP experts at the Discussion Forum at www.cpstandards.org.

? The public can write to an alias with feedback and comments on my JSR: YES

? There is an issue-tracker for my JSR that the public can read: YES, the issue-tracker will be added to www.cpstandards.org

? I have spoken at conferences and events about my JSR recently: YES, at OMG meeting on Dec-2008 in Santa Clara, CA. "A Unified Business Interface for Modeling and Solving Constraint Satisfaction Problems" (http://openrules.com/presentations/OMG.Dec08.2008.JacobFeldman.v2.pdf) and at the Sixth International Conference on Integration of AI and OR Techniques in Constraint Programming for Combinatorial Optimization Problems, CP-AI-OR May-2009 in Pittsburgh, PA (http://wpweb2.tepper.cmu.edu/rlang/CPAIOR09/program.html)

? I am using open-source processes for the development of the RI and/or TCK. YES, our reference implementation is oriented to open source CP solvers

? The Community Update page for my JSR has links to and information about all public communication mechanisms and sites for the development of my JSR: YES, see www.cpstandards.org

2.16 Please describe how the RI and TCK will be 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.

We expect that a Reference Implementation (RI) will be developed based on one of two popular open source constraint solvers written in Java:

- Choco, available under BSD open source license
- Constrainer, available under LGPL open source license.

We plan to use Java Compatibility Test Tools to develop a Technology Compatibility Kit (TCK). TCK will be available at no cost to non-profits and qualified individuals.

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

No previous versions are available

2.18 Please provide the full text of the licenses that will apply to your Final Release Specification, Reference Implementation and Technology Compatibility Kit, or provide links to the same.

We plan to use the following licenses:

1. Final Specification: http://jcp.org/aboutJava/communityprocess/speclead/final-license.txt
2. Final Reference Implementation: The Common Public License (CPL), http://www.ibm.com/developerworks/library/os-cpl.html
3. Final Technology Compatibility Kit – The Common Public License (CPL), http://www.ibm.com/developerworks/library/os-cpl.html

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 starting point for the JSR is defined at www.cpstandards.org - see http://4c110.ucc.ie/cpstandards/javadoc/index.html

The user manuals for concrete solvers and well-known CP books will be used to define the standardized naming convention and common concepts

Section 4: Additional Information (Optional)

4.1 This section contains any additional information that the submitting Member wishes to include in the JSR.

This specification assumes the existence of parallel efforts to specify a CP modeling language and a unified XML schema for Constraint Satisfaction Problems. Java CP API is considered as a Java specific representation of generic CP concepts ? see more at http://4c110.ucc.ie/cpstandards/index.php/en/standards