# About Creating Methods for Clients to Use

JDeveloper allows client-side programs to access, use, and change the business logic in the middle tier. JDeveloper does this by allowing you to create methods on your middle-tier business components and export then to clients. The methods can then be called in client programs to access middle-tier business logic. This technique of exporting middle-tier business component methods allows code which is logically part of the middle-tier to remain physically in the middle-tier in remote deployments. Not only does it provide access to the middle-tier, it can potentially eliminate unnecessary network roundtrips and data exchange between the middle-tier and the client.

The access provided is both tier-independent and typesafe. It is tier-independent in that developers who use these components to access custom component functionality, both in Local mode and in any supported remote deployment configuration, can do so without ever changing their code. It is typesafe in that any errors in using the custom functionality are caught by the Java compiler at compile-time, instead of relying on runtime exceptions.

## What Business Components Can be Accessed?

To access business logic, you can export methods written on Application Modules, View Objects, and View Rows. By allowing you to create and export methods on these business components, you can choose to access the business logic at the appropriate level.

Working with Application Module methods allows the client program to encapsulate "task-level" custom code in a place that allows "bulky" operations to be done completely in the middle-tier without burdening the client.

Working with View Object methods allows the client program to:

- Access the View Object's row collection.

- Allow typesafe access to calculations, getter/setter methods, and exposed "delegator" methods to underlying Entity Object business methods. These methods and calculations can be called on the current row, by using the View Object.

- Ensure type safety when setting row values.

- Invoke business logic within the context of a View Object in the application tier.

Working with View Row methods allows a finer degree of control over the business logic than View Object methods. Access to View Row methods allows the client program to:

- Access to specific row instances rather than work with the View Object's row collection.

- Allow typesafe access to calculations, getter/setter methods, and exposed "delegator" methods to underlying Entity Object business methods. These methods and calculations can be called on the instance that they affect instead of having to only work on the current row, by using the View Object.

- Ensure type safety when setting row values.

- Invoke business logic within the context of a View Row in the application tier.