I've checked in my proposal for the java.util.concurrent module at
https://svn.apache.org/repos/asf/incubator/harmony/enhanced/classlib/trunk/s
andbox/juc-proposal.

 

The README gives a high level overview of the content. I've generated some
documentation and published it here for easier browsing:
http://people.apache.org/~ndbeyer/concurrent/project-reports.html.

 

Design -

Most of the code is straight from Doug Lea and the JSR group. The only piece
I've added are the service interfaces that the VM must implement and I've
uplifted the original code, where necessary to utilize these VM service
interfaces.

 

org.apache.harmony.concurrent.AtomicSupport [1] - The service interface for
'java.util.concurrent.atomic' features such as CAS (compare and swap) and
volatile read/writes.

 

org.apache.harmony.concurrent.LocksSupport [2] - The service interface for
'java.util.concurrent.locks' support. This is similar to the
java.util.concurrent.locks.LockSupport contract.

 

These service interfaces would need to be implemented by a VM provider and
their implementations are registered using Service Provider configuration
files, as defined by the JAR specification [3]. The rationale for the design
of the support classes was to preserve as much of the original code as
possible, so as to facilitate future maintenance and isolate the external
variability with well-defined service contracts.

 

If you wan to see what source code changed, then extract the
'concurrent.tar.gz' and compare the 'concurrent' folder from there to the
'concurrent/src/main/java/java/util/concurrent' folder.

 

TODOs -

* Implement the service interfaces by a VM!!

* Setup the build scripts (trivial) - currently there's a 'pom.xml' that's
in the project, which can be used with Maven to run a build and generate
documentation (mvn package site). It was just quicker for me to do this
while I as hacking.

* Consider and possible implement base/default service providers for win32
and linux that VMs can use if they like.

* Determine the best place to integrate the TCK source, which is also
available at Doug Lea's site.

* There are a LOT of changes, fixes and enhancements to the code at Doug
Lea's site; consider what code we should additional take.

 

Let the discussions begin.

 

-Nathan

 

[1]
http://people.apache.org/~ndbeyer/concurrent/apidocs/org/apache/harmony/conc
urrent/AtomicSupport.html

[2]
http://people.apache.org/~ndbeyer/concurrent/apidocs/org/apache/harmony/conc
urrent/LocksSupport.html

[3]
http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service%20Provider

 

 

Reply via email to