Getting started extending ArcGIS


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 user interfaces (UIs) at version 9.3.1 and later.
  • 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. 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 the geographic information system (GIS) server and optimize the performance of your server applications. 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 extension classes that must implement appropriate interfaces based on their functionality. The extension classes must be annotated with @ArcGISExtension annotation and bundled in a Java Archive (JAR) file for deployment.
  • Deploy—The ArcGIS Java extensions you create must be deployed to ArcGIS. To deploy the extension, place the JAR file in the ArcGIS extension folder (<ArcGIS Install Dir>/java/lib/ext folder). 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 tools
Getting 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 Runtime
Server Server