JSDAI is an implementation of the Standard Data Access Interface (SDAI, ISO 10303-22) and its specialization Java programming language binding to the SDAI with Internet/Intranet extensions (ISO/TS 10303-27). The SDAI standard defines an abstract Application Programming Interface (API) on how to work with STEP data. This is the reference documentation of the JSDAI implementation of SDAI for Java together with its extensions beyond the SDAI standard such as EXPRESS short form support and mapping operations. Introduction to JSDAI through examples is provided here.

STEP, an acronym for STandard for the Exchange of Product data, is a family of standard which starts with ISO 10303. The word Exchange is misleading, because SDAI and especially JSDAI is a framework for integrated data sharing. It allows new CAx and PDM applications to work simultaneously on shared data, locally or over a network.

A main part of STEP is the EXPRESS modeling language (ISO 10303-11) which is the fundament of SDAI. A basic understanding of EXPRESS is an essential requirement for any JSDAI application developer. However, a detailed understanding of EXPRESS is not required, because JSDAI guides the user and takes care of all the details of EXPRESS.

EXPRESS defines entities which have attributes of particular types. An entity is similar to a Java class or interface. Instances (objects) of entities can be created and exported into a STEP-file, according to the format specification Clear Text Encoding of the Exchange Structure (ISO 10303-21). Files, based on this standard, are also called physical files or part21 files. Entity instances can be interchanged by part21 files or shared within applications through the SDAI.

Arbitrary EXPRESS schemas are made available for JSDAI through the Express Compiler. This tool generates the dictionary information of the compiled schemas for late binding access and, optionally, Java classes and interfaces for early binding access. The methods for late binding access are mainly located in `EEntity` and `Aggregate`. These methods work for arbitrary entity types and attributes, but to use these methods an application needs to operate in parallel on entity instances of the dictionary schema and of the application schema. Because of this, most applications will use early binding access. Late binding access is only recommended for application which needs to operate on schemas which are not necessarily known during compile time.

For early binding access, every EXPRESS entity "xxx" is represented by a Java interface "EXxx", a Java class "CXxx" and an additional Java class "AXxx" for aggregates to contain instances of this entity. The differentiation between EXxx and CXxx is essential, because only the Java interfaces support multiple inheritance, but not the Java classes. Therefore, applications operate on entity instances mainly with the EXxx types and only for some specific methods (for example, `usedin` and `createEntityInstance`) the CXxx classes are needed. Also, for other EXPRESS elements like defined types and enumerations some specific Java classes and interfaces are generated. Together with the "AXxx" classes they support strict typing which results in clear and easy to read application program. Another benefit from the strict typing is that many potential errors of an JSDAI application can already be detected during compile time. The exact definition how Java classes, interfaces and methods to generate from EXPRESS is given in ISO/TS 10303-27. The users of JSDAI don't need to understand this conversion (from EXPRESS to Java) in detail. They can simply check the result of this conversion in this HTML documentation. The HTML documentation generated by javadoc and ExpressDoc gives a detailed information of the result.

EXPRESS schemas exist in the so called long form and short form. Long form schemas are "stand-alone", they do not rely on definitions in other schemas. Short form schemas, however, have USE FROM and REFERENCE FROM statements to interface elements from other schemas. STEP Application Protocols define a short form and an equivalent long form schema. Traditionally, only the long form schemas are used in part21 exchange files. JSDAI supports both, short and long forms, but cannot hold both forms in parallel for the same schema. We recommend to use the short form schemas. The default JSDAI-Library is fully based on the EXPRESS short forms.

More detailed description of how EXPRESS schemas are mapped to Java classes is provided here.

STEP Application Protocols consist of the ARM (Application Reference Model), the AIM (Application Integrated Model) and a mapping between them. In cases where the AIM *and* the ARM is given in EXPRESS the mapping between them can be converted into a population of the SDAI_mapping_schema by the MappingCompiler. The mapping operations on EEntity and SdaiModel take advantage of the mapping data, so that JSDAI applications can operate on ARM concepts while working with AIM instances.

The JSDAI Runtime Environment in jsdai_runtime.jar contains these packages :

- `jsdai.lang` containing the core classes and interfaces with SDAI operations.
- `jsdai.dictionary`, containing Java interfaces and classes representing meta dictionary data.
- `jsdai.mapping`, containing Java interfaces and classes to hold mapping data.
- `jsdai.util,` with the kernel applications SdaiTerm and SdaiEdit
- `jsdai.beans`, containing basis JSDAI related beans which can be reused by applications
- `jsdai.query` for Express based query support on local repositories`
  `
- `jsdai.xml` for any kind of XML import and export such as part28
- `com.lksoft.util` for other non jsdai related utility classes

The JSDAI Library in jsdai_library.jar is automatically generated by the JSDAI ExpressCompiler. It contains:

- a number of packages in the form `jsdai.SXxx`, containing dictionary data and early binding Java interfaces and classes for EXPRESS schema xxx. To keep the library in a handy size no early binding interface and classes are provided for ARM schemas.

The optional package jsdai_lib_mapping.jar including the ARM-AIM mapping information and classes is partly generated by the JSDAI MappingCompiler. It includes

- a number of packages in the form `jsdai.MXxx`, containing mapping data for an STEP Application Protocol xxx. Some explanations and real world example are provided here.

All packages starting with `jsdaix` contain code for specific STEP schemas. Their usage requires the default JSDAI Library `jsdai_library.jar` or equivalent. They are not documented here, e.g.:

- `jsdaix.view3d` contains a viewer for A-BREP, F-BREP, Wireframe and other shape_representations by using the Java3DTM-API.

This documentation is generated by using various tools, depending on the package:

- jsdai.lang and the general frame structure is created with javadoc, based on the standard doclet.
- jsdai.dictionary, jsdai.mapping and all jsdai.SXxx are created with ExpressDoc.
- Documents on jsdai.MXxx are created with MappingDoc (the details of the mapping such as the reference path is not included because of the ISO copyright).