If you know how to create sockets and threads in java it's not that difficult.
First create a request and read the headers to get the Content-length
header. Then devise a strategy to split your request in chunks of for example 500K each request. Then start say 10 requests using a thread for each request. In each request you have to define the Range
header.
Resuming your download is a matter of storing the ranges you haven't downloaded yet.
I suggest you read this HTTP/1.1 Header Fields RFC here if you really want to get a good grasp on the protocol used.
However if you're looking for an easy way out rsync or scp should suffice.