You can directly access the complete ABL API (including custom extensions) for any remote ABL SmartDataObject from an Open Client application, where the SmartDataObject is running in distributed mode on an AppServer. Use this direct access technique only if you need to access custom extensions to the default SmartDataObject API provided by an ABL programmer.
To access only the default API generated by the AppBuilder, and only from a Java Open Client application, use the Java SDOResultSet interface provided by the Open Client Toolkit instead.
The Open Client Toolkit installation includes an SDOAppObject. This is a prebuilt proxy that allows you to access any remote ABL by defining a ProcObject from a Java application without needing to run ProxyGen. An SDOAppObject essentially is an AppObject that provides the built-in interface to a remote SmartDataObject, but not to any other remote ABL procedure.
To access other remote ABL procedures in addition to SmartDataObjects, you can include the additional ABL procedures you want to access when you build the AppObject or SubAppObject using ProxyGen. You can then use the same built-in interfaces to SmartDataObjects provided for SDOAppObject proxies, to access SmartDataObjects using the AppObject or SubAppObject you built.
If you are generating a Java proxy that accesses an ABL SmartDataObject as an SDOResultSet, you do not have to make the compiled r-code for the SmartDataObject available to ProxyGen. The Java SDOResultSet already understands how to access standard SmartDataObject functionality. For more information, see OpenEdge Development: Java Open Clients. If you are defining a ProcObject in ProxyGen to directly access the SmartDataObject as an ABL persistent procedure; however, you must make the compiled r-code available to ProxyGen, like any other ABL procedure.