Eclipse Che:Eclipse下一代IDE
功能特性
生產(chǎn)運(yùn)行環(huán)境
Eclipse Che可以支持各種容器,甚至是多容器的運(yùn)行環(huán)境??梢栽贙ubernetes、OpenShift或者Docker環(huán)境中運(yùn)行,Chec可以使用從DockerHub或者開發(fā)者自己的鏡像私庫,通過添加基于SSH的Agent,使得生產(chǎn)鏡像通過終端和語言服務(wù)可以具有開發(fā)環(huán)境功能,停止時(shí),Che也可以保存工程相應(yīng)的關(guān)鍵狀態(tài)信息。支持和實(shí)現(xiàn)此項(xiàng)特性的基礎(chǔ)能力主要包括:
容器運(yùn)行環(huán)境
Compose運(yùn)行環(huán)境
SSH訪問
根用戶終端訪問
預(yù)構(gòu)建和自定義的組件
工作空間快照

工作空間的開發(fā)模式
通過Agent為工作空間添加開發(fā)者服務(wù)包括語法自動(dòng)補(bǔ)齊、錯(cuò)誤檢查和調(diào)試工具等。針對(duì)不同語言提供智能提示,可以啟用根用戶或者SSH訪問方式。支持和實(shí)現(xiàn)此項(xiàng)特性的基礎(chǔ)能力主要包括:
語言服務(wù)器
智能提示與重構(gòu)
調(diào)試器
工作空間Agent
智能命令
SSH訪問
根用戶終端訪問

可使用任何IDE
可以在任何設(shè)備上進(jìn)行工作,無需安裝軟件,因?yàn)镋clipse Che IDE已經(jīng)提供了內(nèi)建方式。也可以使用開發(fā)者自己喜歡的桌面IDE,只需要掛載Che工作空間即可,一切可根據(jù)用戶自行選擇。支持和實(shí)現(xiàn)此項(xiàng)特性的基礎(chǔ)能力主要包括:
瀏覽器IDE
RESTful 工作空間API

團(tuán)隊(duì)開發(fā)
基于生產(chǎn)鏡像創(chuàng)建定制的團(tuán)隊(duì)可用的組件和運(yùn)行環(huán)境,包括開發(fā)所需要的工具。所有人都可以使用這樣的組件或者拷貝工作空間來快速創(chuàng)建可以用于生產(chǎn)環(huán)境的應(yīng)用。甚至可以通過添加示例代碼來實(shí)現(xiàn)對(duì)新人進(jìn)行培訓(xùn)的目的。支持和實(shí)現(xiàn)此項(xiàng)特性的基礎(chǔ)能力主要包括:
組件運(yùn)行環(huán)境
團(tuán)隊(duì)工作空間
項(xiàng)目示例

語言服務(wù)協(xié)議
語言服務(wù)協(xié)議(Language Server Protocol )是由Microsoft, Codenvy, Red Hat 和 IBM共同開發(fā)的協(xié)議,包括語法分析,高亮以及在Eclipse Che內(nèi)的重構(gòu)代碼。協(xié)議用于在客戶端工具和語言服務(wù)之間進(jìn)行功能特性的集成,比如自動(dòng)不起、定義跳轉(zhuǎn)和搜索所有引用等。

調(diào)試器
Che可以在開發(fā)者的工作空間中插入調(diào)試代理以允許變量監(jiān)控和替換、斷點(diǎn)設(shè)定、但不調(diào)試和其他常用的調(diào)試操作。調(diào)試器可以與組件或者用戶工作空間進(jìn)行關(guān)聯(lián)。

SSH / 終端
Che向工作空間關(guān)聯(lián)的操作系統(tǒng)中添加SSH守護(hù)進(jìn)程,使用ssh連接開發(fā)者自己的IDE比如Eclipse,上傳死鑰或者使用Che為每個(gè)工作空間創(chuàng)建密鑰對(duì)。通過Che的瀏覽器終端,開發(fā)者可以訪問自己的工作空間,并且具有工作空間所關(guān)聯(lián)操作系統(tǒng)的根用戶權(quán)限。

組件
組件指的是工作空間的運(yùn)行環(huán)境配置,包含運(yùn)行環(huán)境所需要的構(gòu)建文件(recipe)和元數(shù)據(jù)信息比如標(biāo)簽、描述信息、環(huán)境名稱以及安全策略等。組件在用戶的儀表盤中被展示,組件標(biāo)簽tag可以用于過濾可用的工程代碼示例。組件的構(gòu)建文件可以是Kubernetes YAML、Dockerfile或者Docker Compose文件,可以通過這些文件的方式來創(chuàng)建潛入到工作空間的運(yùn)行環(huán)境。Che已經(jīng)提供了30+的內(nèi)建的組件可以用于開發(fā)者的工作,當(dāng)然也可以創(chuàng)建自己的組件。

RESTful的工作空間
所有的Che服務(wù)都可以通過RESTful API進(jìn)行訪問,無論是通過工作空間的master還是agent,Che都提供了可以使用的API進(jìn)行操作。工作空間master提供了工作空間管理和用戶管理,而在每一個(gè)工作空間中,agent就是一個(gè)微型的提供了項(xiàng)目相關(guān)API的Che服務(wù)器,比如Che通過RESTful JDT wrapper提供了100+的Java智能提示能力。Che使用Swagger用于瀏覽和管理API。

可擴(kuò)展的云IDE(Cloud IDE)
Che提供了一個(gè)可以從本地或者遠(yuǎn)端設(shè)備上進(jìn)行訪問的免安裝的瀏覽器IDE。簡、快、美:這是IDE和開發(fā)者所期待的。IDE使用了跨瀏覽器的JavaScript和CSS來實(shí)現(xiàn),通過瀏覽器來進(jìn)行使用,使用瀏覽器不同的tag頁面可以打開不同的工作空間,每個(gè)空間消耗100M以下的內(nèi)存,流暢的用戶交互體驗(yàn)也不會(huì)因工作空間在遠(yuǎn)端而受到影響。Eclipse Che基于Eclipse Theia提供了VSCode體驗(yàn)的WebIDE功能,提供了最新的工具協(xié)議,包括語言服務(wù)、調(diào)試適配器以及和VSCode擴(kuò)展的兼容性。對(duì)于更傾向于使用個(gè)人桌面IDE的用戶,Che同樣支持。同時(shí)提供了很多流行的工具包括:
嵌入式的Orion編輯器
按鍵綁定
全球化的鍵盤支持
git / subversion工具

多工程管理
Che是一個(gè)真正的IDE平臺(tái),識(shí)別項(xiàng)目并綁定至倉庫并指定類型,不同項(xiàng)目類型被賦予不同行為,比如Java項(xiàng)目被添加時(shí),Che會(huì)添加RESTful JDT core的功能到相應(yīng)的工作空間。工作空間可以有多個(gè)工程,每個(gè)工程都有自己的類型,雖然共享于一個(gè)工作空間,每個(gè)工程都可以被獨(dú)立的構(gòu)建和運(yùn)。當(dāng)下,Che的工程類型仍然有限,主要包括JavaScript、Maven和空工程類型。后續(xù)將會(huì)進(jìn)一步和社區(qū)生態(tài)即可提供更多選擇。

命令
Command是運(yùn)行在工作空間所在操作系統(tǒng)的一個(gè)進(jìn)程,可能是用戶、工作空間或者項(xiàng)目相關(guān)。
命令具有不同類型,不同類型的命令具有特定的行為,比如Maven命令類型就包含生命周期階段運(yùn)行相關(guān)的內(nèi)容。命令執(zhí)行時(shí),可以對(duì)項(xiàng)目和其他資源進(jìn)行操作,允許用戶跨項(xiàng)目和模塊執(zhí)行命令,執(zhí)行時(shí)并與一定的上下文相關(guān)聯(lián)。

預(yù)覽
提供預(yù)覽的功能,可以針對(duì)項(xiàng)目的上下文和工作空間,創(chuàng)建和顯示用于預(yù)覽的Web頁面,同時(shí),和預(yù)覽功能結(jié)合,通過相應(yīng)的命令,在工作空間中可以更好地啟動(dòng)和調(diào)試。
插件
Che可以通過使用定制化內(nèi)建的插件或者使用者自己的插件來進(jìn)行擴(kuò)展??梢酝ㄟ^使用Che提供的方式生成用戶自己的插件,用戶可以編寫插件來操作IDE、Che服務(wù)器或者工作區(qū)代理,插件會(huì)由Che在合適的時(shí)間插入到應(yīng)該插入的位置。

整體架構(gòu)

用戶視角
開發(fā)者
可以使用Che作為IDE進(jìn)行任何框架和語言的編寫,可以有助于工程和運(yùn)行環(huán)境更加具有可移植性,同時(shí)上云更加簡單。產(chǎn)品負(fù)責(zé)人
可以通過將Che嵌入到產(chǎn)品之中,只需要通過API進(jìn)行控制即可。三星、SAP和紅帽等使用Che創(chuàng)造了很好的開發(fā)者體驗(yàn)。比如SAP的WebIDE

在比如Codenvy,做了企業(yè)級(jí)的Che使用封裝

擴(kuò)展提供者
可以使用組件、模版、擴(kuò)展和插件進(jìn)行新的開發(fā)者工具的創(chuàng)建,更好地利用和擴(kuò)展使用方式。