1. What type of a server will this be? Is this a simple HTTP server supplying the patch or will it be the game server through a socket?
Once the above is decided upon the rest should be fairly simple.
2. Verify the user and do a version check, I don't know how you'd want to supply the version info, but if you are using your own protocol you can simply design your own commands and issue a version command of some sort.
3. I guess you would need to have some sort of patch document which outlines what file needs to be replaced by what and which files are no longer needed.
4. Fairly simple, if you are using HTTP just have the client ask for a list of what it needs to download and then have the client issue a request for each file.
5. Have a look at
java.util.zip (Java Platform SE 6)
6. Dunno what you mean really, once files have been unzipped you will need to start the game and that should load in the new files automagically shouldn't it?
7. Should this not be a part of 4/5 where you are unzipping files and then also deleting old stuff not needed any more.
I'm not sure exactly what you are looking for here but you need to decide what protocol to use for this. If you're only making an offline game which will be patched automatically you could have a look at using HTTP which is simple and already supported. If you wish to do it your own way you could have a look into any third party libraries for this like
Apache MINA - Index
If you need any more specific help, just ask some more and eventually you should get an answer.
// Json