# Introduction

The purpose of remote services API is to provide a programming interface to remote services that is agnostic to the actual remote services implementation. Currently the only implementation supported of SSH protocol uses JSch(Java Secure Channel) project (www.jcraft.com/jsch). An implementation for the local system (where Eclipse is run) and Telnet protocol are also provided.

The API is generic enough so that it is possible to use it for all remote or local operations. This is useful for situations where both a remote and local mode should be provided, but the programmer wants to avoid two separate code paths.

# Types of services

The API is divided into two types of remote services: UI and non-UI.

UI services are for activities such as file browsing that require use of the UI. In particular, it provides a main preference page (under "Remote Development > Remote Connections") which allow connections to be created, edited, removed, opened, and closed.

Non-UI services are purely programmatic, they provides a set of core services for manipulating remote resources. The non-UI services can be used independently of the UI services.

# Remote Services Plugins

The remote services are divided into two plugins. These plugins should have no dependencies other than the platform.

- org.eclipse.remote.core - provides non-UI remote services
- org.eclipse.remote.ui - provides UI remote services

Remote service implementations provide the actual remote functionality using a particular remote protocol. These are supplied as a set of adapter plugins.

As of version 2.0.1, there is currently one implementation of SSH protocol using JSch:

- org.eclipse.remote.jsch.core
- org.eclipse.remote.jsch.ui

The Telnet protocol implementation and UI widgets are provided by the plugins:

- org.eclipse.remote.telnet.core
- org.eclipse.remote.telnet.ui

These plugins are dependent on the remote services implementations, but are optional for the remote services API. The API will automatically detect the installed plugins.