Workspaces are composed of projects (files) and environments (runtimes). Workspace configuration is persisted as versionable assets used to create portable replicas. Migrate workspace projects and runtimes to other Che instances, whether localhost or in the cloud. Receiving systems use the configuration to create an identical workspace state matching the source system. Che manages your workspace lifecycle, both orchestrating project state and booting / suspending / imaging / stopping / destroying workspace runtime environments.
An environment is composed of machines powered by Docker or localhost. A machine is a runtime whose stack is instantiated by a recipe. Docker is a powerful and convenient implementation of machines providing near-instant activation, copy-on-write file system, and Dockerfile recipes for constructing custom stacks. Launch from our provided images, DockerHub, private registries, or through your own Dockerfiles. Your projects are mounted into the workspace. If using a remote workspace server projects are rsync'd with long term project storage.
Every workspace has one special environment called the "workspace machine" that is started when the workspace is opened, and suspended when the workspace is closed. Workspace machines provide developer services to the workspace including intellisense, machine monitoring, SSH access, and remote debugging. Che installs "workspace agents" into your machines to provide these services to your browser and the Che server. Workspace agents are injected based upon the types of projects launched by users and can be provided by plug-in authors.
Save your workspace runtime state with a snapshot. While projects are persisted on disk, workspace environment state is machine internal. For example, a maven project stores a repository of downloads that are not part of the project, but part of the workspace. Snapshots let users capture, save, and re-constitute this state. Make snapshots for workspace machines, which are stored as Docker images in a configured registry. Reopening the workspace instantiates a new workspace machine from the snapshot with the projects then mounted. This leads to superior long term performance as snapshot re-activation is immediate.
Host Eclipse Che as a workspace server, providing shared access to programming services to workspaces and teams. Workspace environments are given a hostname and accessible by remote clients.
Host numerous workspaces concurrently, bounded by your system's disk and memory. Workspaces are isolated; users creating multiple workspaces will not have runtime conflicts with others. Workspaces can be shared amongst users by concurrent access to projects and environments. Che currently uses a last-write-wins policy during simultaneous file access, and will add multi-cursor visuals soon.
All Che services are reachable through RESTful APIs. Che exposes APIs for managing the workspace master, and also provides RESTful access to each individual workplace through the workspace agent. The Che workspace master provides workspace orchestration and user management. In each workspace agent is a micro Che server that exposes project-specific APIs. For example, Che has RESTful JDT wrappers to enable 100+ forms of distributed Java intellisense. This Java-specific API is injected as a workspace agent by Che. Programming the API is simple - get started by browsing our APIs with Swagger.
Che injects an SSH daemon into workspace machines. Connect your existing IDE - Eclipse if you like - with an SSH sync point. Upload your key pair or have Che generate a new pair for each workspace. You can also access your workspace with Che's browser terminal, giving you root access to workspace machines.
The tools you expect are there: embedded Orion editor, numerous key bindings, globalized keyboard support, and git / subversion tools including diff.
The Che provides dual perspectives: developer and operations. The operations perspective provides a topological view of environments with utilities to define, monitor, and marry machines to code. The operations perspective enables a world where workspace environments match production topologies, letting users import base images from registries while pushing tagged images with project code back to a registry.
This is in development now, with input from our community.
Workspaces can launch multiple machines - useful for having separate runtimes for testing projects. Users provide the machine recipes and control their lifecycles. Multi-machine workspaces move us closer to development-production parity, where a developer can locally debug a topology of containers or microservices identical to what is running in production.
A command is a process that is injected into a machine. Commands are provided by users, workspaces, or projects. Commands have a type, like projects, which imbue additional behaviors. For example, the maven command type has inherent knowledge of how maven lifecycle phases operate. When executed, a command is translated into a process and injected into a machine, where it can operate against projects or other resources within the machine itself. Commands are context sensitive, allowing a user to execute commands across projects and modules, getting context-specific outcomes.
Create custom previews that launch files and web pages with the context of your projects and workspaces. Embed preview intelligence inside of commands and workspaces so that logic on how to launch and debug your project travels wherever your workspace goes.
Over 100 forms of Java content assist that are so responsive that you will do a double take. Features include modules (sub-folders that can be independently built and run), multi-module structures, dozens of intellisense, multiple forms of refactoring, an embedded debugger, JavaDoc, jump to definition, and class structure navigation.
Che, like Yoda, wants to bring balance to the force. Flip a switch and transform the IDE with a dark or light theme.
Che is extensible, by customizing built-in plug-ins or authoring your own extensions. Package plug-ins with Che core to create new assemblies installable by your user base. You can write IDE, Che server, or workspace agent plug-ins, with Che injecting the plug-in into the right location at the right time.
Eclipse Che has been developed over 4 years with contributions from Codenvy, eXo Platform, IBM, SAP, Microsoft, Intuit, WSO2, Serli, RedHat, and open source individuals from China, Brazil, France, Ukraine, Russia, Canada, India, Sri Lanka, and the United States. It is part of the Eclipse Cloud Development top-level project, and ecosystem contributions are open and encouraged.
We built the product that we would love to use everyday. To do that you must build what you eat and eat what you built. Love -- and sometimes frustration -- has poured into Che as our engineers weaned off their favorite IDEs to build Che with Che.