This doesn't seem fully fleshed out yet, but is the idea here to launch a new JVM when running in client mode? One reason that might be necessary is that we'd want to set the amount of memory used by the driver (which btw will require getting something like https://github.com/apache/incubator-spark/pull/615/ merged). But for the classpath I think we might be able to merge (https://github.com/apache/incubator-spark/pull/299) and then if the user calls addJar it will be added to the driver program as well.