Skip to content
kbrockhoff edited this page Jul 4, 2012 · 9 revisions

Java Value Type (a.k.a. Whole Value) Framework

Whole Value - A whole value is a quantity used to describe things in a domain. Whole values are not themselves things, but measures of things. As such they do not have an identity of consequence.

-- Ward Cunningham Whole Value

Vision

We believe evolving the most commonly used Java libraries to a consistent API for all whole value objects can greatly enhance software development productivity through facilitating Java Virtual Machine (JVM) Languages, Model-Driven Architecture (MDA) and Service Data Objects (SDO).

Business Case

Dynamic, loosely-typed languages such as Groovy running in the JVM offer great potential for major gains in programmer productivity. However, increased development speed with scripting languages comes with lower enforcement of sound coding practices by the interpreter/compiler. The promised, increased ROI can easily be offset by excessive maintenance costs. Therefore, a higher degree of coding discipline needs to be imposed by factors other than the programming language. We believe restricting entity class properties to a limited number of datatypes is a key factor in imposing this discipline.

Objective

We are developing an unobtrusive, flexible API for handling Whole Values in Java and all other JVM-enabled languages. It will seamlessly handle the mapping and conversion between Whole Value Java objects and DBMS, XML and JSON representations of the same data. We intend to make it compelling enough to gain wide adoption by programmers. After building momentum, we intend to propose a new Java Specification Request (JSR) resulting in the inclusion of the ValueTypeJ principles into the Java Platform, Standard Edition API.

High Level User Requirements

Provide Whole Value classes for those areas where classes do not already exist in the Java SE API. Enable consistent operator overloading and value conversions in all JVM-enabled dynamic languages. Provide a comprehensive, easily-learnable library for Whole Value conversion between Java and XML and back that can be dropped into any of the most popular Java-XML serialization frameworks. Provide a complete set of classes for converting Whole Value properties of Java entity objects to RDBMS persistence for all the most popular ORM frameworks. Provide a Fluent API.

Success Criteria

Rapid application development and resulting low maintenance costs of other codeKaizen software projects utilizing this framework. Approval of a codeKaizen-led JSR incorporating the ValueTypeJ principles and lessons learned within the Java SE API. Existence of other projects to provide a similar framework for other languages.

Sub Projects

  • Project website
  • Base Java library
  • Hibernate integration
  • EclipseLink integration
  • TopLink integration
  • Validation frameworks integration
  • Eclipse Modeling Framework integration
  • JAXB integration
  • SDO integration
  • JSON Tools integration
  • Groovy integration tests
  • Scala integration tests
  • Jython integration tests
  • JRuby integration tests
  • JavaScript (Rhino) integration tests
  • Domain Value Types Framework integration