This isn't 100% accurate.  The recommended way to programmatically launch a job is through the JobOperator.  That provides a wrapper to a JobLauncher among other components.