关于vaadin的见解

1,862 阅读3分钟

vaadin已经诞生了十多年了,但是在国内一直不怎么火,可能极客精神在中国有些水土不服吧。用一种编程语言,完成前后端的开发,在国外已经有很多实践了,并且出了一些书,比如《isomorphic go》,《Building Isomorphic JavaScript Apps》。

在前端领域,js是真正的王者,护城河很宽。其他语言要想染指这一领域,必须要转换成js才能使用。比如golang的gopherjs,java的vaadin其实都是通过这种方式实现的。 针对这一状况的破解之法,应该是要看Webassembly的发展,能够打破语言的束缚,可惜它还不够成熟,在实际应用比较广泛的地方都是计算密集型的,且一般都用C++/Rust来实现。对于带gc的语言,打包出来的wasm包还是太大了,造成网络传输压力比较大。

言归正传,说到vaadin,目前最新版推广的都是vaadin flow,我没有对比过它跟vaadin8 和vaadin7中间的区别。只知道它跟spring-boot等框架融合得很好,可以很方便的制作一个包含前后端的程序包。 下面是从百度上找到的其他网友总结的它的优点:

  • 1、它拥有"所见即所得"界面编辑器(收费)
  • 2、无需了解HTML , JavaScript , CSS
  • 3、只需要一个Jar程序包即可同时启动前端和后端(它在内部自动进行前后端分离)
  • 4、无需专门的前端服务器(例如Nginx)
  • 5、内置常用的几种页面布局和组件(包括App布局,AppLayout)
  • 6、无需配置跨域

官方还很贴心的提供了pdf版本文档,手把手进行教学,对于小白来说还是挺好的。 image.png

基于vaadin directory商店其他大牛提供的模板,我根据自己的需求做了一些改造。想制作一个生成模拟数据的系统,用于平台的压力测试和可靠性测试等。目前才刚刚开始进行,只是确定好菜单栏而已,前后端全部使用java编写,整个项目在idea的一览无余,前后端改了就能生效。

程序包打包命令: image.png

当前系统界面效果图:

image.png

image.png

说点题外话,我的java水平算是入门级别,反射和设计模式啥的一概不通。10年前学的java全部都还给老师了,考了一个没啥用的java二级计算机等级证书。我总感觉是大学的编程教育挺失败的,老师没有教会我们如何从工程应用的角度去思考,只是一遍一遍的教我们语法知识,依葫芦画瓢的运行几个样例程序。当然也是自己太菜的缘故,没有有效的从互联网上获取有用的资源,当着井底之蛙。

目前学习vaadin和java其实是同步进行的,相比于互联网行业的大佬们,我这点技术真不够看。不过我还是厚着脸皮把学习的过程记录下来,多少可以跟小白们共勉吧。即使已是中年大叔,一切都还可以从头再来。贯彻费曼学习法,学点有趣的东西,少玩点游戏,也能稍微减轻自己的焦虑吧。