To check completeness of download, you can obtain the size from the webpage, and use methods of the java.io.File class to check its size. For timing, look for posts like this one.
It's impossible to measure the download speed of the Internet, because there is no such thing. All you can do is measure the download speed from a specific server, and Fred already told you how to do that. As for the knowing when the download is complete - when the InputStream for it returns -1 when you call its read methods you're done.
You can try going through the Java Tutorials looking for something about speed. I tried myself and didn’t find anything, however. Maybe the search facility will help.