While GeoTools has the ability to make contours of a raster coverage, it doesn't currently have any way to make contours if the user has a collection of points.
Thinking out loud, could be done by chaining two processes, a raster interpolation process first (barnes surfaces, if you can make it work) and then extract contours from there. Just a quick idea mind.
It’s more fun (and I suspect faster) to do a Delaunay Triangulation and then interpolate the values along the triangle edges. But will be interesting to compare the two methods.
see for code