<html>
<head>
<title>3.0 JDT Launching Change Notes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<h1>3.0 JDT Launching Change Notes</h1>
<p>This document describes important changes in the 3.0 JDT launching support, relative 
  to the 2.1 release.</p>
<h2>API Changes</h2>
<h3>VMRunnerConfiguration contains environment</h3>
<p>Two methods have been added to the <code>VMRunnerConfiguration</code> type
  to support the setting and retrieving of environment variables.
<p>Implementors of <code>IVMRunner</code> should call <code>VMRunnerConfiguration.getEnvironment()</code> 
  and pass that environment into the executed VM. Clients who use <code>DebugPlugin#exec(String[] 
  cmdLine, File workingDirectory)</code> can do this by calling <code>DebugPlugin#exec(String[] 
  cmdLine, File workingDirectory, String[] envp)</code> instead. Simply passing 
  in the result from <code>getEnvironment()</code> is sufficient.</p>
<h3>VMRunnerConfiguration and Bootstrap Classes</h3>
<p>In prior releases, the <code>VMRunnerConfiguration</code> had one attribute 
  to describe a boot path. The attribute is a collection of <code>Strings</code> 
  to be specified in the -<code>Xbootclasspath</code> argument. Three new attributes 
  have been added to the VM specific attributes map to support VMs that allow 
  for prepending and appending to the boot path. The newly added attributes are 
  defined in <code>IJavaLanuchConfigurationConstants</code>:</p>
<ul>
  <li><code>ATTR_BOOTPAH_PREPEND</code> - an array of strings describing paths 
    in the local file system to be prepended to the boot path (the <code>-Xbootclasspath/p</code> 
    argument)</li>
  <li><code>ATTR_BOOTPATH</code> - an array of strings describing paths in the 
    local file system to be placed on the boot path (the <code>-Xbootclasspath</code> 
    argument)</li>
  <li><code>ATTR_BOOTPATH_APPEND</code> - an array of strings describing paths 
    in the local file system to be appended to the boot path (the <code>-Xbootclasspath/a</code> 
    argument)</li>
</ul>
<p>The old attribute,<code> getBootClassPath()</code> still exists, and contains 
  a complete path equivalent to that of the three new attributes. However, <code>VMRunners</code> 
  that support the new boot path options should take advantage of the new attributes, 
  found in the VM specific attributes map (i.e. <code>VMRunnerConfiguration.getVMSpecificAttributesMap()</code>). 
  The attributes are computed dynamically at launch time based on the classpath 
  attribute associated with a launch configiuration. The boothpath attributes 
  themselves are not stored in launch configurations.</p>
<h3>Default VM Arguments</h3>
<p>To allow a specific set of VM arguments to be used every time a specific VM 
  is launched (without having to specify the arguments on all associated launch 
  configurations), a new &quot;VM arguments&quot; attribute has been added to 
  <code>IVMInstall</code>, along with getter and setter methods. Although clients 
  may implement this interface, the additional API is intended to be non-breaking, 
  since clients who implement the interface should be subclassing <code>AbstractVMInstall</code>, 
  where the new feature is implemented. Existing VM runners need to honor the 
  new attributes when launching a VM. A convenience method (<code>combineVmArgs</code>) 
  has been added to <code>AbstractVMRunner</code> to combine VM arguments specified 
  on a runner configuration and a VM install.</p>
</body>
</html>
