For now, we have been using GraphHopper as the underlying graph data structure for this project. It seems to be giving rather fast results.
On the jgrapht branch, we try converting the graph data structure to JGraphT. The calculations become significantly slower, but we need to consider the advantages of using JGraphT (or possibly another graph library) over GraphHopper.
@ebocher