A command is the declaration of a user action by id. Commands are used to declare semantic actions so that action implementations defined in action sets and editors can associate themselves with a particular semantic command. The separation of the command from the action implementation allows multiple plug-ins to define actions that implement the same semantic command. The command is what gets associated with a particular key binding.
The workbench defines many common commands in its plugin.xml file, and plug-ins are encouraged to associate their own actions with these commands where it makes sense. In this way, semantically similar actions implemented in different plug-ins may share the same key binding.
Commands are defined using the org.eclipse.ui.commands extension point. The following comes from the workbench markup:
<extension point="org.eclipse.ui.commands"> ... <command name="%command.save.name" description="%command.save.description" categoryId="org.eclipse.ui.category.file" id="org.eclipse.ui.file.save"> </command> ...
The command definition specifies a name, description, and id for the action. It also specifies the id of a category for the command, which is used to group commands in the preferences dialog. The categories are also defined in the org.eclipse.ui.commands extension point:
... <category name="%category.file.name" description="%category.file.description" id="org.eclipse.ui.category.file"> </category> ...
Note that there is no implementation specified for a command. A command only becomes concrete when a plug-in associates its action with the command id.