I have a hard time understanding codebase in Java RMI. I'm supposed to download a class from the Client to use it on the server side. I'm not really sure how to understand that. Is the point to create an object on the Server side that is not distributed ? Because when I have distributed objects I never needed to use codebase and yet the Server didn't have the classes. But then why would the classes be in the codebase and not in Server classpath ? Does it have anything to do with interfaces ? So basically I really don't get in what type of case would I need to do that.
If the classes were only located in the codebase, I would find it easier to understand, but it appears that the classes are also in the client classpath which is very confusing.
And then, what does codebase look like anyway ? I couldn't find a single visual representation that I could replicate.