要想提高工作效率,必须得有好的工具。大数据有很多组件,但是邪了门儿的就是,竟然没有一个好用的客户端程序。
没办法,我只好用antd+webview自己做了一款跨平台的桌面应用。
先看下效果。
这是github地址:https://github.com/CJSoldier/whitepawcat。我一个人做有点孤单,还有点累,希望能跟大家一起玩。
为什么要做成桌面应用,做成web服务,用浏览器不好吗?
我觉得不好。因为我经常打开太多tab页了,到时候就不知道哪个tab也是咱们的大数据客户端程序了。而且当我们把右边所有的tab都关闭时,很可能会把我们的大数据客户端也关了。还有一个不好的地方就是没办法用alt+tab来切换应用。
做成web服务的形式不是不可以,但是比较尴尬。首先它会占用一个端口,我不喜欢看到“端口冲突” 的错。
更重要的是,做成web服务的话,jar包冲突怎么解决? 就算自定义一个classloader,每次加载不同的jar包。但是这个http服务什么时候开启呢?
在双击程序之后就立马启动还是提前部署到某个地方?
要知道这是桌面应用诶,桌面应用不应该是一双击就能用的吗?
为什么不用electron?
因为打包后文件太大,而且启动速度太慢。VS Code启动速度很快呀。 对,但它是微软出品的。一般情况下用electron打包的程序启动很慢的。我试过。
为什么不用bootstrap+jquery?
因为react可以做成单页面,这样看起来更像桌面程序。而且,似乎react渲染的更快一些。
为什么用自定义一个classloader来加载Jar包?
这是为了解决jar包冲突的问题。试想一下,我要连接两个版本的Hbase,一个是0.94,一个是1.2.0,如果jar包都放在一起冲突了怎么办?
为什么Java代码不做成服务的形式
我不想占用用户的端口。而且我觉得这是个真·桌面程序,不想让它看起来像一个web程序。
webssh不还是用了bootstrap+jquery?不还是要占用一个端口?
问的好。 我自己没本事做一个ssh客户端程序。只好把huashengdun/webssh直接拿来用了。 这个我也是无奈。如果你有心,你可以用react-xterm+java来做一个ssh,感激不尽。
为什么有很多硬编码?
约定大于配置,我是这样安慰自己的。
为什么代码看起来很矬?
Keep it simple stupid,我是这样安慰自己的。
为什么没有Linux版本的?不是号称跨平台嘛?
问的好。因为webview在linux下编译需要安装gtk-webkit。我没装成功。
这是zserge/webview的地址: https://github.com/zserge/webview.
你可以按文档说的试一下,其实不难的。
感觉开发起来好复杂
乍一看是复杂,我在写README的时候就感觉到了。 仔细一想其实不复杂。 C代码不用动,第一步就不用编译了。webssh我也已经编译好了。除非你修改了需要重新编译,否则直接从release里拷贝一份就可以了。 剩下的就跟开发web应用一模一样了。