# Eclipse 3.4 Java Debug Build Notes

## Summary of API changes in 3.4

### Java Launch Shortcuts

The core Java launch shortcuts are available to be extended/reused.

The following classes are provided as API in the package `org.eclipse.jdt.debug.ui.launchConfigurations`:

- `JavaAppletLaunchShortcut` - the standard implementation for Java applets, used in the platform
- `JavaApplicationLaunchShortcut` - the standard implementation for Java application, used in the platform
- `JavaLaunchShortcut` - an abstract implementation of a shortcut to launch Java artifacts, used as the parent class to the two aforementioned classes

The methods exposed to consumers from the parent class `JavaLaunchShortcut` and through the two subclasses are:

- `getConfigurationType()` - returns the type of configuration this shortcut creates
- `createConfiguration(IType type)` - creates a launch configuration for the specified `IType`
- `chooseType(IType[] types, String title)` - allows an `IType` to be selected from the given list
- `findTypes(Object[] elements, IRunnableContext context)` - searches for specific `IType`s from the given list of elements
- `getTypeSelectionTitle()` - returns the title for the type selection dialog used by the shortcuts for user input
- `getEditorEmptyMessage()` - returns the error message displayed to users who try to use one of the shortcuts on an empty editor
- `getSelectionEmptyMessage()` - returns the error message displayed to users who try to use the shortcut on an empty selection
- `findLaunchConfiguration(IType type, ILaunchConfigurationType configType)` - searches for a launch configuration associated with the specified `IType` and configuration type
- `chooseConfiguration(List configList)` - selects a specific configuration from the specified listing
- `getShell()` - returns the shell used for the Java launch shortcuts

### Support for Execution Environment Descriptions

An installed JRE can be defined by an execution environment description file. A new 'Execution Environment Description' VM install type shipped with the Eclipse SDK supports standard ".ee" files.

API has been added to `JavaRuntime` to create a VM from an execution environment description file. A name and unique identifier must be provided to create a new JRE.

- `public VMStandin createVMFromDefinitionFile(File eeFile, String name, String id)`

A new method has been added to `AbstractVMInstallType` to allow default arguments to be provided for newly created VM installs. Ideally, this method would be added to `IVMInstallType`, but to support binary compatibility, the method has only been added to `AbstractVMInstallType`. Existing subclasses may override as required. The method is consulted to initialize VM arguments when a new Installed JRE is created by the user. This new method accepts a home directory or definition file as an argument.

- `public String getDefaultVMArguments(File installLocation)`

### Support for custom wizard pages used to edit VM installs

An new extension point (`org.eclipse.jdt.debug.ui.vmInstallPages`) allows a wizard page to be contributed for editing the properties of an `IVMInstall`. The page is used when adding or editing an installed JRE via user preference. A standard page is provided based on the `IVMInstallType` and `IVMInstall` interfaces. JDT contributes a page for editing a JRE based on an execution environment description file.

### Support for setting a range of values in array objects

API has been added to `IJavaArray` to support setting ranges of values in the arrays. It is more efficient to set a range of values at once than setting each value in an array individually as it uses fewer communications with the virtual machine being debugger. The following methods have been added to `IJavaArray`.

- `public void setValues(IJavaValue[] values)`
- `public void setValues(int offset, int length, IJavaValue[] values, int startOffset)`

### New API methods on IJavaDebugTarget

The following API methods have been added to IJavaDebugTarget.

- `public boolean supportsSelectiveGarbageCollection()`
- `public String getVMName()`
- `public String getVersion()`

### New API methods on IJavaObject

- `public void enableCollection()`
- `public void disableCollection()`
- `public long getUniqueId()`

### New API preference constants (`IJavaDebugUIConstants`)

- `PREF_ALLINSTANCES_MAX_COUNT`
- `PREF_ALLREFERENCES_MAX_COUNT`

## June 4, 2008

### Problem Reports Fixed

Bug 235448: Expanding variables is extremely slow if both logical structures and show references are turned on
Bug 235623: Logical Structure in Variables view shows "Exception occurred" for HashMap
Bug 235647: [tests] Regression tests for Logical Structures

## June 3, 2008

### Problem Reports Fixed

Bug 205479: [doc] Update help for new JRE from EE file wizard

## June 2, 2008

### Problem Reports Fixed

Bug 233038: [doc] Broken link in Java Launch Config > Main Tab help

## May 29, 2008

### Problem Reports Fixed

Bug 229394: [CellEditors] NPE from JFace when using cell editor in variables view
Bug 232096: degradation in Remove Line Breakpoints perf test

## May 28, 2008

### Problem Reports Fixed

Bug 234027: NPE in Variables view
Bug 232576: Error during evaluation
Bug 234471: Infinite loop running evaluation tests

## May 14, 2008

### Problem Reports Fixed

Bug 232060: BIDI algorithm in JDISourceViewer is wrong
Bug 228985: JREsPreferencePage.java resizing problem

## May 7, 2008

### Problem Reports Fixed

Bug 229857: Char variables values cannot be edited in Variables View

## May 6, 2008

### Problem Reports Fixed

Bug 230333: LaunchingPlugin class: use JavaCore constant instead of string value
Bug 229380: Up/Down buttons incorrectly enabled on classpath tab
Bug 229347: error evaluating: NPE
Bug 228597: State change in progress for bundle starting JUnit tests

## May 5, 2008

### Problem Reports Fixed

Bug 229972: NPE deactivating console
Bug 229266: NPE while debugging

## 3.4 M7 - May 2, 2008

### Problem Reports Fixed

Bug 223455: Support variables view in hover information control
Bug 228673: [classpath] Use BuildPathDialogAccess for archive selection in workspace
Bug 215208: [breakpoints] Unable to unset breakpoints within inline interface implementations
Bug 186020: [breakpoints] toggle method breakpoint in external file
Bug 223951: hot code replace causes deadlock
Bug 229335: Class cast exception entering console input
Bug 229173: VM breakpoint hit immediately selects wrong thread
Bug 229343: Should not auto expand/select for scrapbook
Bug 229003: Variable display in debug does not escape newlines in char variables

## April 22, 2008

### Problem Reports Fixed

Link: jdtdebug fails to give test results when using IBM Java 1.4.2 or 1.5.0

## April 15, 2008

### Problem Reports Fixed

Bug 161781: Suspend status ignored on initial remote debug connection
Bug 225377: Debugging a simple program opens editor for Object.class
Bug 227014: BIDI3.4: Editor for Adding watch expression should not be mirrored

## April 8, 2008

### Problem Reports Fixed

Bug 225347: [preferences] Adopt content assist colors from Platform UI
Bug 224717: Installed JREs page is huge when opened
Bug 225097: Get rid of outdated context Id "org.eclipse.ui.globalScope"

## April 1, 2008

### Problem Reports Fixed

Bug 161781: Suspend status ignored on initial remote debug connection

## 3.4 M6 - March 28, 2008

### Problem Reports Fixed

Bug 220784: Allow EE files to use path list in -Dee.src property until closer to M6
Bug 223530: Step into Selection hyperlink is broken
Bug 208040: Inspect and other popups should automatically select first item
Bug 184928: [variables] stepping with logical structures loses selection
Bug 184925: Stackframe shows "running" icon while it is suspended
Bug 221915: Clean up javadoc tags
Bug 217855: [expressions] static/final filters have no effect on watch expressions
Bug 220369: [api] JavaSnippetEditor Illegally instantiates JavaModelException
Bug 218717: Remove quote requirement from ee files
Bug 218955: EEDefinitionTests Failure
Bug 184928: [variables] stepping with logical structures loses selection
Bug 223844: Step into Selection hyperlink does not use stored region

## March 20, 2008 (3.4M6 warm-up)

### Problem Reports Fixed

Bug 223009: JDT debug test failures

## March 18, 2008

### Problem Reports Fixed

Bug 212655: Thread not suspended error during evaluation

## March 11, 2008

### Problem Reports Fixed

Bug 222062: jdt.launching has an old copy of ListenerList implementation

## March 4, 2008

### Problem Reports Fixed

Bug 220570: Use new simpler Text API
Bug 217707: Installed JRE dialog does not open (page contains invalid values)

## February 19, 2008

### Problem Reports Fixed

Bug 218872: Installed JREs pref page, remove button disabled but hot key still works

## February 12, 2008

### Problem Reports Fixed

Bug 217350: Preferences > Installed JREs > Edit... has wrong labels for tree item
Bug 217939: Java doc location button not disabled initially

## 3.4 M5 - Feb 8, 2008

### Problem Reports Fixed

Bug 212439: Unable to change variable value when stopped in JSP
Bug 214650: Execution Env description file allows only one source archive
Bug 217447: JREContainer keeps getting initialized if problem with EE
Bug 217623: extension point org.eclipse.jdt.launching.classpathProviders based on ridiculous class
Bug 217736: Unhandled event loop exception
Bug 217852: [jres] search for installed JREs adds many bogus EE configurations

## Jan 29, 2008

### Problem Reports Fixed

Bug 216783: Hyperlink Debugging should only be enabled if current context is IJavaStackframe
Bug 214696: refactor WorkingDirectoryBlock

## Dec 10, 3.4M4

### Problem Reports Fixed

Bug 209833: Problems with compiler preferences when starting with 7.0
Bug 210368: Run configuration dialog does not show error message if on tab with error

## Nov 27, 2007

### Problem Reports Fixed

Bug 210759: debug tests don't compile after changes in refactoring

## Nov 20, 2007

### Problem Reports Fixed

Bug 209943: LaunchConfigurationQueryParticipant does not respect search scope
Bug 210126: Unable to open Snippet editor in I20071113-0800

## Nov 13, 2007

### Problem Reports Fixed

Bug 209978: NPE clicking stack trace in console
Bug 208410: [jre] the new JRE wizard should be consistent

## 3.4 M3 - Nov 2, 2007

### Problem Reports Fixed

Bug 208036: Detail pane in inspect popup dialog is too small
Bug 208119: renaming main type deletes associated launch configuration
Bug 206270: project or launcher classpath dialog shows blank lines for unavailable projects
Bug 206747: CCE in LaunchConfigurationQueryParticipant when searching for references to method
Bug 207497: Instance Breakpoint Dialog from Variables View is confusing
Bug 207740: LaunchConfigurationQueryParticipant should only be active for types

## Oct 23, 2007

### Problem Reports Fixed

Bug 206693: JRE location looks wrong after installing j9 using ee description file

## Oct 16, 2007

### Problem Reports Fixed

Bug 205481: VMTypePage could be improved
Bug 206067: NullPointerException @ ASTInstructionCompiler.visit
Bug 202818: support for variables in vm definition files
Bug 57515: [search] java search participant for launch configs

## Oct 9, 2007

### Problem Reports Fixed

Bug 203468: Unable to add watchpoint from Variables View if selected variable is not IField
Bug 204670: Improve wording on the JRE container page
Bug 201758: Breaking change in IVMInstall.getInstallLocation()
Bug 205511: javadoc warning in N20071004-0010

## Oct 2, 2007

### Problem Reports Fixed

Bug 204137: Properties page for JRE System Library does not use dialog font everywhere
Bug 204455: ConnectionType not remembered in Remote Java Application Launch Config
Bug 204023: Debug tests sometimes DNF

## 3.4 M2 - Sept 21, 2007

### Problem Reports Fixed

Bug 201440: Improve Debug Manual Test Suite
Bug 202806: Expression evaluation error when debugging.
Bug 203687: unable to launch last launched debug session

## Sept 11, 2007

### Problem Reports Fixed

Bug 202158: NPE in org.eclipse.jdt.internal.debug.ui.JavaHotCodeReplaceListener.hotCodeReplaceFailed
Bug 201194: org.eclipse.jdt.doc.user question about "Show Static Fields"
Bug 74709: [expressions] Watch action should work on an empty selection
Bug 54072: [java launching] Provide API to extend launch shortcuts with different modes

## Sept 4, 2007

### Problem Reports Fixed

Bug 200946: Support socket listening connector for Remote Java Application
Bug 201560: coding error in LibraryStandin
Bug 201264: several files not indexing correctly in help

## Aug 28, 2007

### Problem Reports Fixed

Bug 200728: Expansion/selection state for Java variables shared between frames
Bug 200462: Edit JRE definition: NullPointerException

## Aug 21, 2007

### Problem Reports Fixed

Bug 197282: org.eclipse.jdt.debug.test.stepping.ForceReturnTests depend on VM-specific behaviour.
Bug 198864: Can't remove a breakpoint within inner class
Bug 177193: Setting range of values in array objects in one request
Bug 199163: Installed JRE Copy button should be named Duplicate
Bug 200049: "NLS missing message" in "Installed JREs" preference page
Bug 181026: support for adding JREs from definition files
Bug 199942: EE definition file test failures
Bug 200198: Unable to set method breakpoint on method with type variable
Bug 198737: API for vm name and version
Bug 197866: Installed JRE Wizard creates duplicate system libraries when drive letter is lower case

## 3.4 M1 - August 10, 2007

### Problem Reports Fixed

Bug 94134: API spec reference to org.eclipse.jdt.launching.vmType extension point
Bug 125673: [evaluation] Improve error message for method invocation on manually suspended threads
Bug 198404: compilation errors in refactoring tests
Bug 177556: [messages] remove internal error messages from translations

## July 31, 2007

### Problem Reports Fixed

Bug 196835: variable id not shown for String variables
183800: [launching] Discard changes question dialog on run dialog does give no real choice
197011: Add JRE fails to retain system library modifications.
196940: Add Watchpoint: NPE encountered
195848: Add Java Exception Breakpoint dialog should use JavaUI#createTypeDialog(..)
188676: [breakpoints] BreakpointMarkerUpdater moves line breakpoint to wrong position
195185: Cannot debug java class
129066: [breakpoints] Breakpoint view shows multiple breakpoints with same line number
140660: Debug View Actions (such as Show System Threads) should be Java-specific

## July 17, 2007

### Problem Reports Fixed

42173: [jres] Bad generated name for JREs
79529: [java debug] Step Into Outermost method invocation
177556: [messages] remove internal error messages from translations
181003: Default watchpoint settings should be configurable

## July 10, 2007

### Problem Reports Fixed

64663: [variables] "Variables>Change Value" should accept hex value
33452: [evaluation] [README] ObjectCollectedException evaluating conditional breakpoint
132764: [jres] VM type element with unknown id message in the log using I0321-1210
193488: org.eclipse.jdt.debug.test.stepping.StepIntoSelectionTests depend on VM behavior
85780: SWT support "hidden" widgets
191559: TVT33:TCT623: pl: Instance Breakpoint Filter Selection window
29855: [jres] Ampersands in file name create mnemonics when scanning for JREs
33714: [evaluation] AstEvaluationEngine cache
191486: [breakpoints] Alt+Enter for java breakpoint properties command is throws exceptions
28304: [variables] UnsupportedOperationException report to user on toString on WTK
190875: help id associated with wrong widget on two pref pages
191389: TVT33:TCT636: ja: No mnemonic for "Step through filters"
191486: [breakpoints] Alt+Enter for java breakpoint properties command is throws exceptions
193783: JDT Launching duplicates method newDocument from DebugPlugin
193835: Should not attempt to select filtered stack frame
46991: Failing debug test
191387: TVT33:TCT626: pl: functional: Up button does not work correctly
173890: [launching] can't debug premain
188555: Go to source action is disabled for exception breakpoints added from console
190492: JRE preference page does not scale correctly