上一次体验 Eclipse Che 是在半年前,我一直对这种基于网页的 IDE 有种“好感”,毕竟以前中学没有自己电脑的时候我就是靠着这些在线 IDE 干活的。
源代码:https://github.com/eclipse/che
官网:https://eclipse.org/che/
虽然随着云计算浪潮的颠覆原来那几家基于 PaaS 的在线 IDE 服务商都已经基本销声匿迹了,但也不乏转型得比较成功的公司,比如 Koding 以及 Codenvy。至于像 Cloud9 和 Codeanywhere 这种在前几年混得风生水起的在线 IDE,因为在 Docker 时代中反应太慢,转型实在不理想,现在半死不活的。话说回来,Docker 的普及也真是太快了。
至于一些甚至连商业计划都没有的开源在线 IDE,我连名字都忘了,只依稀记得个界面,和现在的 Coding.net 的在线 IDE 有点像。
上面废话了一大段,只是想表达,Eclipse Che 能活下来真心不容易,更让我惊讶的是不仅活下来还一直保持活跃开发。老实说最初还叫 Codenvy 社区版的时候简直垃圾得不能更彻底,后来经过两年左右的几千次代码提交,我也一直保持关注,每次正式版本发布都会尽快体验,虽然每次结果都很糟糕就是了。
尽管如此,Che 还是迎来了 5.0 的发布,这得益于 Codenvy 团队的开放,要是没有他们慷慨的开源贡献,我们也不会体验到这神奇的 IDE。
现在的 Eclipse Che 已经完全融入 Docker 了,和之前基于本地 JRE 运行的情况大有不同。
开始之前肯定先得有 Docker,至于 Docker Compose,Che 已经通过拉取 Compose 镜像来替代。
先来启动 Che 吧,一睹芳容:
docker run -it --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/user/eclipse-che/workspace/:/data \
eclipse/che start --fast
除非你对你的网络很有信心,不然我建议你还是加上 --fast 参数启动,这个参数可以去掉很多网络检查,毕竟网络检查在天朝局域网中基本是不可能通过的。
第一次运行大概会拉取几个镜像,总之要喝一杯茶的功夫(这还是用了中科大镜像源的速度,官方源的话大概要拉一天吧):
WARN: Bound 'eclipse/che' to 'eclipse/che:5.2.2'
WARNING: No swap limit support
INFO: (che cli): 5.2.2 - using docker 1.13.1 / native
WARN: CHE_HOST (172.17.0.1) overridden by che.env (127.0.0.1)
INFO: (che config): Generating che configuration...
INFO: (che config): Customizing docker-compose for running in a container
INFO: (che start): Starting containers...
INFO: (che start): Services booting...
INFO: (che start): Server logs at "docker logs -f che"
INFO: (che start): Booted and reachable
INFO: (che start): Ver: 5.2.2
INFO: (che start): Use: http://127.0.0.1:8080
INFO: (che start): API: http://127.0.0.1:8080/swagger
看到上面信息就是启动完成了,相比之前的 4.0 真是轻松不少,也去掉了让人担心的 --privileged 参数,看起来与 Docker 整合程度更高了,已经看不到非容器组件了。
界面在 4.0 的时候重写过一次,这次 5.0 没有大改动,但是一些细节还是有变动的。而且加入了 Stacks 功能,这对于自动化测试部署而言简直神器,打完代码一个按钮就搞定了测试和部署,一气呵成。嗯,看起来很美好,坏笑。
Eclipse Che 号称下一代 Eclipse,万物皆容器,所以整个 IDE 从头到尾都是在容器中运行,这就意味着你第一次运行时需要拉取镜像,每一个工作区的运行时都被打包在镜像中,使用 Eclipse Che 时不会再有安装环境的概念,这些工作都被 IDE 开发团队做了,你只需要告诉 IDE 你需要什么环境就可以了,一切只需要等待下载完成。
比如我新建一个 Android 的开发环境,直接选择就是了:
接下来会拉取整个 Android 开发需要的运行时,包括 JDK、SDK 等等,整个下载过程不支持断点下载,尽量保证你的网络畅通。
REPOSITORY TAG IMAGE ID CREATED SIZE
machine_snapshot_2v73kh60wpo6ho04 latest 45d02b1e51c3 5 days ago 1.15 GB
machine_snapshot_vyipng4306q7e153 latest a2768fc68b27 6 days ago 1.13 GB
eclipse/che-server 5.2.2 75f655517886 6 days ago 316 MB
eclipse/che latest dd03817a34ff 6 days ago 51.1 MB
eclipse/ubuntu_android latest 0832352eb5b2 8 days ago 3.41 GB
eclipse/ubuntu_python latest 13e641acf2db 8 days ago 1.02 GB
eclipse/ubuntu_go latest a408f116a30a 8 days ago 998 MB
eclipse/che-init 5.2.2 e9b30eaa7d83 8 days ago 55 MB
eclipse/che-ip 5.2.2 d3ac85b1a8ab 8 days ago 4.8 MB
Android 开发镜像解压后显示有 3.41 GB,很大,但是实际上不会占用硬盘太多空间,自己了解一下联合挂载,我闭嘴。
上面说了 Che 的基本情况,现在进入编辑器部分。
总结一下我的体验:
-
快照管理依旧是短板,快照恢复几率不高,每次关闭工作区容器都是一次赌博。
- 你永远不知道下次打开这个 IDE 会报什么错误,幸亏工作区的代码和运行时镜像分开来,不然哭死。
-
快照命名还是那么风骚。
- 你体会过绝望吗?看一下下面的命名吧,告诉我这是哪个工作区的快照?!
eclipse-che/workspacexcvu1xelfs68uv40_machine2h1yobhxabkjwudo_che_dev-machine
- 编辑器语法扩展依旧薄弱。
- 还是没有语法提示,除了 js 和 java 稍微有点,其他都是瞎打。语法提示这方面突然觉得 Cloud9 IDE 真是挺厉害的。
- 运行时的镜像质量良莠不齐,用户依旧需要熟悉 Linux 终端环境才能很好在编辑器中执行任务。
-
运行时镜像质量实在不敢恭维,如果用户不能在 Linux 终端环境穿梭自如,那么使用 Che 遇到错误时就像 iPhone 报系统错误一样,你压根不知道该干什么,只能默默关掉窗口。即便你可以解决这些问题,也还有下一个问题等着你解决。镜像质量太糟糕了。
例如上图,你可以看到 run 命令本质就是一些 Linux 命令,如果这其中有变量出错,你还得自己解决环境变量的问题。我就遇到好几个这样的问题,后来发现是官方镜像的错,这种基础的组件都随意改动没有内部审核就发布实在太坑。
-
期待下次见面
今晚对新版的 Che 体验结果就是:很好玩的工具,依旧不适合用来开发。
虽然 Eclipse Che 还不完善,但是商业版的 Codenvy 却很不错,值得一试。此外 Koding 啦,Cloud9 啦,还有国内的 Coding.net 都是不错的,如果有需求的话花点小钱也是可以的。就目前而言还没有完完全全的在线开发系统。