Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Eclipse File Service APIs Compared
This page compares features and use cases for remote file access APIs that are currently found in Eclipse.
This document is under construction, not finished yet.
Contents
Eclipse Remote File APIs
RSE Files API
- viewcvs: IFileService.java
- viewcvs: IHostFile.java
- Supports remote move, remote copy operations
- Categorization of remote files, including support for symbolic links (derived classes of IHostFile)
- Use Strings as canonical pathes (with '/' file separator)
- Very lightweight and simple to implement since only Strings and two interfaces
- Synchronous operations for upload, download (with IProgressMonitor, suitable for jobs)
- No callbacks or other "watch" facilities
- Supports remote file encodings different from local
- RSE implementation does persistent caching of remote files
Eclipse Filesystem (EFS) API
- viewcvs: IFileStore.java
- Overview on bug 106176 plan: provide more flexible workspaces
- Existing sample implementations for ZIP and FTP file systems
- Fully integrated with Platform Resources, allows transparent access to remote files
- Fully abstract notion of remote pathes through URI for the root, plus parent/child relationships for the siblings
- Supports remote move, remote copy operations
- Synchronous operations for upload, download (with IProgressMonitor, suitable for jobs)
- Originally written for performance optimizations on the local file system (through native calls), plus fully abstract access to remote file stores like databases
- No notion of symbolic links or other advanced attributes
- No callbacks or other "watch" facilities
- URI has been criticized to be heavy-weight (but is only needed to specify the filesystem root, not necessarily the siblings)
- Registered via extension point - problematic if multiple different implementations for the same access scheme exist, e.g. two implementations for "ftp:" access scheme in URI
- API for file caching during the current Eclipse session
Team/Target Management API
- Will be dropped in favor of EFS, according to the Platform/Team group.
- Will then provide FTP and WebDAV implementations for EFS
- viewcvs: IFileShare
- asynchronous send and receive with events
RSE and Remote Files APIs
- Currently, RSE uses the RSE files API on its backend
- Allows to present whatever backend implementation as an EFS on its frontend
- Eventually, RSE could also accept EFS providers on its Files backend. The value-add of RSE over plain EFS would then be
- persistent caching
- access to remote resources outside the workspace
- connection and filter management
- selection of channels
- password/keyring management
- association of shell and other channels with the files channel