Eclipse Che: New Directions
It’s been four months since Eclipse Che was announced and it’s a good time to talk about what’s been happening. Che is an open, extensible way to execute distributed developer services (such as build, run, debug) packaged as a browser-based IDE.
The exciting thing about open source is seeing other people’s visions turned into reality. Che has been pulled by the community in four directions:
- Che as a cloud IDE on the desktop: Several organizations including WSO2 and Fuego are going to be deploying Che as a product on the desktop. They are generating their own plug-ins to create a custom IDE experience.
- Chromium packaging: WSO2 has created a chromium distribution of Che that makes it possible to install Che as a desktop IDE with Tomcat executing internal to process the server requests.
- Che embedded within other products: Software vendors are beginning to work with Che as the basis for embedded products that require an extensible cloud-based IDE.
- New plug-ins: The Che community has been hard at work and will be releasing five new plug-ins for everyone to enjoy including Gradle and GitHub! We’re really excited about this participation and the addition of these great technologies.
The success of cloud developer environments will hinge upon the development of an ecosystem. For those that aren’t yet familiar with Che it’s useful to start with the component model - we created a layered component model that gave customization capabilities within the SaaS public cloud or an ability to create entirely new desktop or cloud solutions outside of the public cloud. There are 5 components:
- Che SDK
- Plug-Ins
- APIs and CLI
- The Codenvy IDE (open sourced as part of Eclipse Che) including 55 plug-ins
- The Codenvy platform
Eclipse Che SDK
The SDK is a runtime framework for building, packaging and deploying applications in the form of extension combinations. Its architecture is similar to the Eclipse RCP, but uses GWT libraries to generate REST APIs and JavaScript for components that need to run within the browser IDE. The SDK is authored in Java and can run within most Servlet containers. There are plugins for various editors (CodeMirror, Orion, and Collide), AngularJS, Yeoman, Maven, NPM, Gulp, Grunt, Bower, git, Subversion, Datasource, SQL editing, Ant, SSH, Java, and Debugger.
The Codenvy IDE is an example of an implementation of Eclipse Che. It’s a collection of 55 (and growing!) packaged extensions that add functionality to the system. We have provided default project types for many popular stacks, and implementations for core developer functions across the spectrum from editing through to deployment. The IDE can run locally on your desktop as a simple application inside of a servlet container. The IDE and every plug-in that has been generated by us, or a partner, is open-sourced as part of the Eclipse Che project.
Plug-Ins
Plug-Ins are packaged extensions that can add new capabilities or modify existing capabilities of the IDE or the developer environment cloud. We created the extension format in Java using dependency injection and GWT to minimize the conversion effort of plug-ins authored for Eclipse or any other IDE / editor. Plug-ins can modify either client-side components (windows, projects, source code) or server-side elements, such as runners, builders, and code assistants.
This HelloWorld extension prints a statement to the runner console, the same location that System output goes during a console application execution.
@Extension(title=”Hello World”, version =”1.0.0”) public class HelloWorldExtension { @Inject public HelloWorldExtension(ConsolePart console) { console.printf(“Hello World”); } }
APIs and CLI
Extensions are compiled into various assets. Extensions can generate server-side logic or they can generate cross-browser optimized JavaScript, which is loaded directly into the Codenvy/Che IDE. Finally, they can generate REST APIs that represent developer microservices, enabling remote clients (whether the browser-side portion of the extension, the CLI or other clients) to interact with the services exposed by this extension.
Each API exposed as part of an extension can have multiple implementations based upon deployment environment. For example, the extensions that operate the builder and runner plug-ins spawn local processes to handle these requests when the plug-in is installed on a desktop, and they place job requests onto queues to be handled by our elves when operating within the Codenvy Platform. We also generate a CLI that interacts with these APIs providing command-line access to interacting with environments, making environment lifecycle operations possibly part of a broader automation process.
Codenvy Platform
Eclipse Che on its own is a single node system. All functions run within the context of the single server. It can potentially host 1000s of concurrent developers on the same node instance, but it does have capacity limitations.
While not part of Eclipse Che, the Codenvy Platform explodes the extensions that run within the Eclipse Che runtime kernel and provide scalability, security, and manageability to the system as a whole. A principle architectural concern of this platform is separation processing, designed to get the maximum density of users on the least amount of hardware. We take each operation of the developer process and route them to different microservices nodes, giving the developer effectively many computers in one. For example, a “build” request is routed onto a Builder Queue and serviced by a specialty set of Builder nodes dedicated to handling all builder functions for the entire cloud. The developer’s environment is not blocked or experience any thrashing from the editor while this builder job is executing. We perform separation process for editors, code assistants, builders, runners, datasource management, and external API invocations. It’s like 10 computers in one. The platform runs on top of any IaaS provider, which gives it access to additional physical nodes on-demand to be allocated to the various clusters of hardware processing.
For more information, tutorials, and getting started see the following:
About the Authors
![tyler jewell](/community/eclipse_newsletter/2015/february/images/tyler.jpeg)