The 
ide package is where all JSR 198 packages are rooted. There 
  are two types of packages in the 
ide package: 
  
    - 1. Extension writer packages, and
 
    
- 2. Service provider packages.
 
  
  By convention, the latter are named 
spi and are located under 
  the corresponding extension writer package. The extension writer packages 
  contain interfaces and classes intended for extension writers to implement 
  and/or use, while the 
spi packages contain abstract classes and 
  default implementations that must be extended by IDE service providers in 
  order to support JSR 198.  Extension writers should never import classes 
  from the 
spi packages.
  The extension writer packages can be grouped into two categories:
  
    - 1. Extension hook packages, and
 
    
- 2. Support packages.
 
  
  Extension hook packages contain the interfaces and classes 
  encapsulating an IDE's integration hooks. Integration hooks are the
  points an IDE defines where extension writers can integrate new IDE 
  functionality.  These packages are: 
  
    - The command package: containing interfaces and classes
    involved in the definition and execution of commands. 
 
    
- The editor package: containing interfaces and classes
    used to define new editors and the support to manage them.
     
    
- The event package: containing interfaces and classes for 
    listeneting to IDE specific events.
    
 - The extension package: containing interfaces and classes 
    encapsulaing an extension and its hooks, and the registry to record
    all extensions.
 
    
- The log package: containing interfaces and classes used to 
    define new log pages.
 
    
- The menu package: containing interfaces and classes used to 
    define new actions, and menus.
 
    
- The model package: contaning interfaces and classes used to 
    access an IDE's data model, and define new document types.
 
    
- The preference package: containing interfaces and classes used 
    to define new IDE preferences.
 
    
- The view package: containing interfaces and classes used to 
    define new graphical user interfaces.
 
    
- The wizard package: containing interfaces anc classes used to 
    define new document creation wizards.
 
  
  In general, these packages contain "feature" and "listener" interfaces that 
  are usually implemented by the extension writer, and a "manager" interface 
  that must be implemented by the IDE service provider. The "manager" interface 
  provides the API to access and manipulate the extension writer "feature" 
  interface implementations. For example, the 
editor package declares 
  the 
Editor "feature" interface, the 
EditorListener
  "listener" interface, and the 
EditorManager "manager" interface.
  The first two are implemented by extension writers, while the third one 
  by IDE service providers. The IDE service provider implementation can be 
  found under the 
spi packages. A similar pattern repeats in the other 
  extension hook packages.
  Support packages contain supporting interfaces and classes whose
  implementation are generally provided by IDE service providers and are 
  mainly for the use of extension writers. These packages are:
      
  
    - The net package: contains a virtual file system that uses 
    
URIs to address objects on any file system. 
    
- The util package: contains utility classes.
 
  
  In addition to the packages described above, the 
ide package contains
  a number of interfaces and classes. One of those interfaces, the 
  
IDE interface is the central repository where all other IDE
  services are accessed. Extension writers can access any of the service
  implementations using the IDE interface.
  Another class in the IDEConstants class. Extension writers 
  can find there IDE constants identifying menus, and views.