code: public static Kernel startJanusWithModule(Module startupModule, Class<? extends Agent> agentCls, Object... params) throws Exception {
  		// Set the boot agent classname
  		System.setProperty(JanusConfig.BOOT_AGENT, agentCls.getName());
  		// Get the start-up injection module
  		final Kernel k = startWithoutAgent(startupModule);
  		final Logger logger = k.getLogger();
  		if (logger != null) {
  			logger.info(MessageFormat.format(Messages.Boot_22, agentCls.getName()));
  		}
  		final UUID id = k.spawn(agentCls, params);
  		if (id != null) {
  			System.setProperty(JanusConfig.BOOT_AGENT_ID, id.toString());
  		} else {
  			System.getProperties().remove(JanusConfig.BOOT_AGENT_ID);
  		}
  		return k;
  	}
docs: Launch the Janus kernel and the first agent in the kernel.
  
  <p>Thus function does not parse the command line. See {@link #main(String[])} for the command line management. When this
  function is called, it is assumed that all the system's properties are correctly set.
  
  <p>The startupModule parameter permits to specify the injection module to use. The injection module is in change of
  creating/injecting all the components of the platform. The default injection module is retreived from the system property
  with the name stored in {@link JanusConfig#INJECTION_MODULE_NAME}. The default type for the injection module is stored in
  the constant {@link JanusConfig#INJECTION_MODULE_NAME_VALUE}.
  
  <p>The function {@link #getBootAgentIdentifier()} permits to retreive the identifier of the launched agent.
  
  @param startupModule the injection module to use for initializing the platform.
  @param agentCls type of the first agent to launch.
  @param params parameters to pass to the agent as its initliazation parameters.
  @return the kernel that was launched.
  @throws Exception - if it is impossible to start the platform.
  @since 0.5
  @see #main(String[])
  @see #getBootAgentIdentifier()