Frequently asked questions


In this topic


What is ArcGIS Engine Java?

ArcGIS Engine is a developer product for creating custom geographic information system (GIS) desktop applications. ArcGIS Engine includes the core set of components from which ArcGIS Desktop products are built. With ArcGIS Engine, you can build stand-alone applications or extend existing applications to provide focused spatial solutions to GIS and non-GIS users. The ArcGIS Engine provides multiple application programming interfaces (APIs), including a rich Java API for creating applications. The ArcGIS Engine software development kit (SDK) for Java also comes with a collection of tools, samples, and documentation to help with the development.

Where are the developer content and samples for the Java API?

The developer content and samples can be installed as a stand-alone Java Help system. For specific instructions to install the Java Help system, see How to install ArcGIS Engine. The Help system can also be accessed from the Eclipse integrated development environment (IDE) with ArcGIS plug-ins. For the latest product samples and documentation, see the ArcGIS Resource Center

How can ArcGIS Engine Java applications be deployed?

ArcGIS Engine applications can be deployed in standard Java ways, such as Java WebStart, InstallAnywhere, and so on. However, end users must manually install an ArcGIS Engine Runtime before the applications can run. The runtime can be purchased from ESRI, local distributors, or bundled with your application when adhering to licensing guidelines. For developers, ESRI provides the runtime installer and detailed documentation on how it can be installed on various platforms. Developers can silently install the runtime with their install, but it cannot be installed using WebStart or unzipped on the target machine. For more information, see Licensing and deployments.

Can GIS functions using the ArcGIS Engine API be embedded in existing J2SE applications?

Yes, you can embed GIS functionalities in an existing J2SE application using the ArcGIS Engine API. ArcGIS Engine provides Abstract Window Toolkit (AWT) controls for visualizing the maps in 2D and 3D, which can be added to a Java container and linked to existing applications. The API is dependent on native libraries and other runtime components that are provided by the ArcGIS Engine Runtime installation.

What are the supported platforms for ArcGIS Engine applications?

For a complete list of supported platforms, see the ArcGIS Engine Runtime system requirements on the ESRI Support Center.

Can any IDE for development work be used?

Yes, you can use the integrated development environment (IDE) of your choice for developing with ArcGIS Engine. All the visual Beans and other Java components adhere to standard guidelines to use in IDEs. However, ESRI provides a richer experience for using the Eclipse IDE and encourages developers to review it. ESRI provides custom plug-ins to integrate documentation, samples, and templates along with other features to improve the development experience.

If there is an ArcGIS Desktop license, is an ArcGIS Engine license needed to run Java Engine applications?

If you have an ArcGIS Desktop license, you do not need an ArcGIS Engine license to run your application, but the license mechanism of your application should support that. For more information, see Licensing and deployments.

With ArcGIS Desktop installed, does an ArcGIS Engine Runtime need to be installed?

From the ArcGIS 9.2 release onwards, you do not need to install an ArcGIS Engine Runtime for ArcGIS Engine applications. All the binaries and Java Archive (JAR) files necessary for an ArcGIS Engine Java application are part of the ArcGIS Desktop install from the 9.2 release. If you are using a version earlier than the 9 release, install the ArcGIS Engine Runtime.

What is the difference between MapObjects–Java Edition and ArcGIS Engine Java?

MapObjects–Java Edition is a collection of Java components to develop GIS applications, but is much smaller in scope than the ArcGIS Engine API. MapObjects–Java Edition is intended for lightweight GIS applications with limited functionality. The ArcGIS Engine Java provides a more comprehensive collection of functionality, including support for rasters, 3D visualization, the geodatabase, and usage of map documents created in ArcGIS Desktop.

How do you determine the available licenses on a computer?

ArcGIS installs the showAuthorizationSummary utility. This utility can be used to identify the available licenses and extensions on a system. You can also programmatically determine what product licenses and extensions are available.

Are there any post installation steps for ArcGIS Engine Runtime?

Post installation steps vary by system and configuration. For more information, see Post installation.
Why do I get JVM exceptions when I run ArcGIS Engine samples from the command line?
To run Engine applications from the command line, set up the Java environment properly. For more information, see Post installation.
Why does JVM crash when I run engine applications from the command line?
To run Engine applications from the command line, set up the Java environment properly. The path environment variable must also be pre-pended with the JAVA_HOME%\jre\bin; value. For more information, see Post installation

How do you fix the JMenu, ToolTips, and other Swing components that do not display properly?

All the visual Beans are heavyweight components; therefore, when creating Swing based applications, you must follow Sun's guidelines for mixing AWT and Swing components, and set the lightWeightPopupEnabledOption to false. For more information, see  Mixing heavy and light components.

Are the ArcGIS visual JavaBeans Swing components?

No, the ArcGIS visual JavaBeans are not Swing components. They are wrapped as JComponents but are actually heavyweight AWT components. For more information on mixing the AWT and Swing components, see ArcObjects Visual Beans and Swing components.

What should be done when applications do not work on UNIX?

UNIX requires post installation steps for the runtime to be properly configured. There are init_java shell scripts for Bash and C shell for this purpose. Source this script in each terminal that you use to launch ArcGIS Engine applications. For more information, see Post installation.

How does the garbage collection work in ArcGIS Engine Java?

Garbage collection in ArcGIS Engine works similar to any other Java application. When an object goes out of reference, it gets garbage collected and the resources used by the underlying Component Object Model (COM) objects are released as well. You can also force an object to be garbage collected by using the Cleaner class in the com.esri.arcgis.system package and call the release() method to specifically release resources for an ArcObjects component.

What is meant by initializing the Java interop?

Initializing the interop is one of the key steps when writing an ArcGIS Engine application to allow the runtime to work properly. The following are the two kinds of initialization that must be the first call in the main() method of your application:
  • Console applications—EngineInitializer.initializeEngine(). In these applications, ArcObjects have strong thread affinity and should be invoked only from that thread in which they were created. Console applications in Java typically do their work in the main thread; therefore, this mode is suitable for console applications.
  • UI applications—EngineInitializer.initializeVisualBeans(). In these applications, ArcObjects have no thread affinity and they can be invoked from any thread in the application, albeit at a slight performance cost. Swing applications in Java typically do work in the AWT event thread in addition to the main thread and possibly some other worker threads; therefore, this mode is suitable for graphical user interface (GUI) applications
  • ArcGIS Java extensions—The Java interop is initialized automatically by the ArcGIS application that hosts the extension; therefore, the interop does not need to be initialized.

Can SWT widgets be used with ArcGIS Engine?

No. ESRI does not support the use of ArcGIS Engine with SWT technology.

Which version of Java should be used?

Please refer to the ArcGIS Engine Runtime system requirements on the ESRI Support Center.

What are the ProxyClasses (for example, XXXProxy) for?

Proxy classes are only for the purpose of casting. In prior releases of ArcGIS Engine, you could not use the standard Java casting model and had to use proxy classes. They are still available in 9.3 for the purpose of backwards compatibility, and for switching between interfaces on classes that do not support casting. For more information, see Casting and runtime type checking (using instanceof).

What is the difference between MapControl and MapBean?

MapControl and MapBean essentially contain the same methods, but the MapBean is a proper Bean, and MapControl is not; therefore, when visually creating applications in an IDE, the MapBean internally uses the MapControl to draw maps but gives access to a number of property pages and other properties as well. All the XXXBean classes have XXXControl as a member of the class and can get the corresponding control from the Bean using the getXXXControl() method on the Bean.
What is a singleton object?
Singletons are ArcObjects that allow only one instance per process. For more information, see Singleton objects

Can custom commands and tools be created using ArcGIS Engine Java API?

Yes. For more information, see Creating custom commands and tools. The custom command and tools created using Java APIs cannot be consumed in ArcGIS Desktop. However, you can create custom commands and tools for ArcGIS Desktop using extensions developed in COM compliant languages. 

What is the difference in query syntax for the different data sources?

The difference is the Structured Query Language (SQL) expression that is used to select records. The syntax for the expression is different for different data formats. The following are some of the most commonly encountered differences:
  • For ArcSDE, the field names are not wrapped, for example, MY_FIELD.
  • For file or personal geodatabases, the field names are wrapped in square brackets, for example, [MY_FIELD].
  • For all others, the field names are wrapped in double quotes, for example, "MY_FIELD."
  • Microsoft Access uses asterisks (*) and question marks (?) as string wildcards rather than the percent sign (%) and underscore (_) in all other formats.

Can arcobjects.jar be redistributed with applications?

No, this is not a recommended procedure. For more information, see Deployment guide.

Can I extend ArcGIS using ArcObjects Java API?

The ArcGIS framework can be extended by creating ArcGIS Java extensions, from ArcGIS version 9.3.1 onwards. For more information about extending ArcGIS using ArcGIS Java extensions, see Getting started extending ArcGIS.