In this topic
About extending ArcGIS
ArcGIS is built using an integrated collection of extensible software components called ArcObjects. You can extend the ArcGIS framework to enhance ArcGIS functionality, to integrate external data sources, and to leverage external Java libraries. ArcGIS is extended by creating ArcGIS Java extensions that plug seamlessly into ArcObjects components. ArcGIS Java extensions provide cross-platform extensibility and can be consumed by ArcGIS Desktop, ArcGIS Engine, and ArcGIS Server applications since they are all built on ArcObjects.
What can I extend?
You can extend ArcGIS by creating the following ArcGIS Java extensions:
- Custom feature renderers—Custom feature renderers enable you to control the way the features in a map layer are drawn. A custom feature renderer that you create can implement persistence behavior, and its state can be saved in a layer (.lyr) file or a map document (.mxd) file. Custom feature renderers can be accessed through ArcGIS Desktop.
- Custom geoprocessing tools—You can create custom geoprocessing tools to accomplish complex spatial analysis, data management, and batch conversions by integrating the sophisticated ArcObjects application programming interfaces (APIs) with other external Java libraries. A custom geoprocessing tool can be included in ArcToolbox and can be chained with other ArcGIS geoprocessing tools using ModelBuilder in ArcGIS Desktop. The models can be published on ArcGIS Server as a geoprocessing service.
- Class extensions—Class extensions enable you to enforce custom data behavior in a geodatabase. You can create a class extension to enable complex attribute validations; to customize behavior of events triggered by object creation, deletion, or modification; or to customize relationship behavior. A class extension can be applied to any appropriate object or feature class in a geodatabase.
- Plug-in data sources—You can create plug-in data sources to efficiently manage external vector data sources that are not supported by ArcGIS. A plug-in data source enables you to browse, preview, and manage your external data in ArcCatalog; select, render, query, label, and join it in ArcMap; and programmatically invoke it using standard geodatabase APIs, such as IWorkspace and IFeatureClass, in your ArcGIS applications.
- Utility objects—Utility objects can consolidate the recurring ArcObjects method calls in an application running in ArcGIS Engine. ArcObjects are Component Object Model (COM) components that are exposed as Java objects by the JAVA-COM Interop. Creating utility objects reduces the interoperability overhead of ArcObjects method calls between Java and COM ArcObjects, improving the performance of your application.
- Server object extensions—You can create a server object extension to extend map services published on ArcGIS Server. For more information about server object extensions, see Server Object Extensions.
How can I extend?
To extend ArcGIS, you can develop ArcGIS Java extension classes and deploy them to ArcGIS. The following illustration shows a simple workflow to extend ArcGIS:

- Explore—The first step is to explore the corresponding API in ArcObjects to determine the existing functionalities in ArcGIS. There are often numerous options for a solution to a task in ArcGIS. This step allows you to explore the existing possibilities and avoid duplicating the functionality of ArcGIS.
- Develop—Once the solutions to your task point towards extending ArcGIS, you can develop extensions and deploy them to ArcGIS Desktop or Server as appropriate
- Deploy—The ArcGIS Java extensions you create must be deployed to ArcGIS. To deploy an extension, place the JAR file in the ArcGIS extension folder (<ArcGIS Install Dir>/java/lib/ext folder). For Server Object Extensions, one must deploy the .soe file using ArcGIS Manager. When the ArcGIS application (ArcMap, ArcCatalog, or ArcGIS Engine or ArcGIS Sever application) is started, the extension is recognized by its annotation and registered with ArcGIS. If the JAR file is removed from the extension folder, the extension is automatically unregistered upon restarting the ArcGIS application.
- Consume—The final step is to consume the functionality of the Java extension you have developed and deployed to ArcGIS. In ArcGIS Desktop (ArcMap and ArcCatalog), the extensions are consumed internally by the framework and exposed through the Desktop UIs appropriately. In ArcGIS Engine and ArcGIS Server applications, the extensions can be manipulated programmatically in the same manner as other ArcObjects APIs.
See Also:
How to build custom geoprocessing toolsGetting started with a custom feature renderer
Getting started with class extensions
Getting started with plug-in data sources
Development licensing | Deployment licensing |
---|---|
Engine Developer Kit | Engine |
Server | Server |