# Package net.i2p.app

Interfaces for classes to be started and stopped via clients.config.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  ClientApp | If a class started via clients.config implements this interface, it will be used to manage the client, instead of starting with main() Clients implementing this interface MUST provide the following constructor: public MyClientApp(I2PAppContext context, ClientAppManager listener, String[] args) {...} All parameters are non-null.
  ClientAppManager | Notify the router of events, and provide methods for client apps to find each other.
  NavService | Service to put links on the console.
  NotificationService | A service to send messages to users.
  Outproxy | Interface for outproxy configuration.

- Class Summary
  Class | Description
  --- | ---
  ClientAppManagerImpl | A simple ClientAppManager that supports register/unregister only, so that client apps may find each other in AppContext.

- Enum Summary
  Enum | Description
  --- | ---
  ClientAppState | Status of a client application.

## Package net.i2p.app Description

Interfaces for classes to be started and stopped via clients.config. Classes implementing the ClientApp interface will be controlled with that interface instead of being started with main().

The benefits for clients using this interface:

- Get the current context via the constructor
- Complete life cycle management by the router
- Avoid the need for static references
- Ability to find other clients without using static references