I want to run a program on a client, but I don't want the user to have any way of knowing what the program does, by decompiling it, etc. Are there (free) obfuscators out there that allow this to be done? Is there any other way to do this? Somehow 'loading' a class remotely, but having it actually run within the client environment? It looks like RMI only runs on the remote (server side).