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 Java SE 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?

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.

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 Linux?

Linux 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:

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:

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?

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