JSR-331 at JavaOne 2012

I am presenting Constraint Programming for Java Developers at the JavaOne conference on Oct.1 at 10:00 – 11:00 am in San Francisco


About jacobfeldman

CTO at www.openrules.com http://www.linkedin.com/in/jacobfeldmanopenrules
This entry was posted in Uncategorized. Bookmark the permalink.

6 Responses to JSR-331 at JavaOne 2012

  1. Amel Bennaceur says:

    I would love to see your presentation…
    I have a hard time explaining how CP works.
    Most people see it as black magic and hence are suspicious…

    • jacobfeldman says:

      I made my presentation yesterday at this major Java event and it seems it generated quite an interest to CP among real-world developers. I had 60+ people at my session and a very involved audience of Java developers with many good questions afterwards. Oracle plans to publish my presentation but meanwhile you may find it at http://openrules.com/pdf/CONS3255_Feldman.pdf. I demonstrated many concrete CSP samples that you may find and run yourself – see the project “org.jcp.jsr331.tck” downloadable from http://openrules.com/jsr331. Let me know if you need any assistance.

      • Long says:

        I attended your session at JavaOne and thoroughly enjoy it. I can’t wait to see how I can apply to my projects.

      • Amel Bennaceur says:

        Thank you very much Jacob.
        I looked at the slides and the example gives the intuition but still I think (and many others do 😉 that CP becomes more interesting once we have combinatorial problems and we need some efficient exploration algorithms: backtracking, branch and bound, etc.
        So, I doubt any developers (even without a PhD in operation research) would do such for imbrications.
        I’m doing my PhD and I’m perfectly fine with implement OP algorithms, so what motivates me to use CP is that the solution is usually “elegant” and can easily be extended. Although I find it harder to explain (in a paper for example) as the search mechanism really depends on how the solver perform the propagation, etc. and of course we may write constraints differently depending on the solver we use…
        However, I think that the fact of having CP solvers implementing only a small set of mathematical operators and the lack of proper debugging mechanisms makes CP less attractive. For example, I wanted to specify constraints with ontology-based subsumption, which is a partial order relation, and had to do some coding to make it feasible in Choco. Moreover, the only way to correct a bug is by simple examples and it gets really fastidious :s while object programming languages have pretty good debugging mechanism.

  2. jacobfeldman says:

    Java developers appreciate how “elegantly” CP API allows them to represent complex CSPs treating unknown decision variables similarly to known integers or sets, utilizing different predefined binary and global constraints and combining them using traditional O-O techniques. I warned the audience that this simplicity should not mislead them that solving small problems with the default search algorithms will automatically resolve large scale problems, for which expert knowledge may make a major impact. But CP certainly puts Java developers in a very flexible framework to address the most complex problems.

    From practical experience with different CP solvers, I know that in real-world applications we always find a way to address the most complex problems that initially may look intractable. Let me disagree with your reasons for CP being “less attractive”. CP solvers (and JSR-331 too) usually cover not only a “small set of mathematical operators” but almost all major math and logical operators defined on different types of constrained objects. More importantly, you always may define your own operators. Of course, if you want to define operators/constraints on your own objects you have to implement them yourself. You can do it by simply combining the existing constraints and logical operators (see e.g. http://openrules.com/jsr331/JSR331.UserManual.pdf p.44) or by implementing completely new constraints with your own propagators. The latter capability is usually provided by a CP Solver, and JSR-331 has it too but not in the official standard (at least yet). Let me know if you want to try it and I will give you an access to an initial implementation of custom propagators.
    I agree that debugging may be tricky in some cases because of the non-deterministic nature of CP. However, CP solvers usually provide you with useful “hooks” to trace and to understand what’s going on. Besides, with open source solvers you may use the standard Java debugger with your own break points.

    Anyway, while general statements are usually too generic, it is always more productive to try a tool on your own problem and to address a concrete issue. If you have such issues with JSR-331, please let me know. Thanks,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s