The objective of this project is to propose an extension of the Executor
mechanism to outsource its computation on remote resources.
Through this interface a java developer should be able to transparently
use a either ScheduledThreadPoolExecutor or a ScheduledProActiveExecutor.
You will work in groups of 4 students and the project will proceed as follows:
Your project will have to be submitted as a tar.gz
archive named as follow :
name1-name2-name3-name4.tar.gz
which will deflates as a single directory named
name1-name2-name3-name4
, and organized as follow :
name1-name2-name3-name4/src/
containing sources of the project, packaged and documentedname1-name2-name3-name4/classes/
containing the compiled class filesname1-name2-name3-name4/lib/
containing your dependenciesname1-name2-name3-name4/compile/
containing your ant script (responsible for the compilation)name1-name2-name3-name4/doc/
containing je javadac and 5-10 pages report
which clearly describe your software architecture with entities, communications, etc...
You will motivate your design patterns decisions in this report.The next two classes will be reserved to the project. Your progression will be evaluated. Final version of the project will have to be sent by email at brian.amedro [at] activeeon.com, with all the group members in cc, no later than monday march 19th.
Criterias which will be taken into account for the project evaluation will be :
A project which does not compile will not be evaluated !
The java.util.concurrent.ExecutorService interface represents an asynchronous
execution mechanism which is capable of executing tasks in the background.
An ExecutorService is thus very similar to a thread pool. In fact, the implementation of
ExecutorService present in the java.util.concurrent package is a thread pool implementation.
A nice description is given here:
Executor Service
For this project you will create an ExecutorService that instead of relying on a threadpool to execute submitted tasks, send them to a ProActive Scheduler.
As sending tasks to a remote machine can take some time, your interface will have to
offer a batching mechanism :
In front of this service, you will have to implement an use case which will submit some tasks on your Executor.
Your are free to propose something for this, but it will have to imply some RESTful communications. For exemple, you can retrieve some data from Google through their APIs and process them thanks to your Executor.