Move and Copy are separate operations. Copy leaves the existing node in place and creates a new node. Move will move the node preserving the NodeRef in particular.
In Java look at the FileFolderService which has copy and move methods. I think they are also available on the Java Script API.
A final couple of considerations are that sometimes you don't want to copy and move everything, so there are various policies you can use to control which properties and aspects are copied and copy also has an option to retain information of the source node.