重度应用GraalVM一年后有感;
Java世界里总有一种风气,就是我要测试看数据,跑case看指标;但实际落实到指标上呢,比如一个场景,到底IO多还是CPU多,到底怎么做合适,变得模糊;
所以啊,指标失真,是无可避免的,反倒是理论分析变得尤为重要;
(说个不好听的哈,都来搞Java了,性能就不要和C++比了,做工程以目的为重,C++再快,它页不会为你提供如此完备的HashMap,不是吗?
GraalVM的 Polyglot能力是我的重点应用场景,我将其应用到了生产实践中,来践行语言融合;
那么,语言融合的好处是如下的:
1.更宽广的生态,当我想要一个能力,一个轮子,我有两个世界可以寻找;
2.更低的开发成本,以JavaScript为核心完成业务主线开发,Java负责更底层的工具与基础部分;
3.可接受的性能,JavaScript以编译形态执行后,指标就不讲了,至少是不输给V8的吧;
但请读到这篇文章的人不要纠结语言之争,性能之争,Oracle搞脚本化也不是一年两年了,人家是冲着工业应用去的,没空争论这些没用的;
但以后的Java后端开发会受到怎样的影响呢,我这篇会开始记录案例,也许会有有缘人看到并交流
如果我的JavaScript跑的和Java一样快,以后的开发会是什么样子呢?
案例1:
我们这里的Java开发氛围啊,SQL Boy很多,就是写个SQL长度达到百行,令DBA头痛不已;
一般来说可以加限制 ,这就要通过SQL解析,Java的方案通常是Druid或者别的SqlPaser,都挺重量级的,这不优雅;
但我们有JavaScript Polyglot ,并从npm找到了一个包:js-sql-parser
这东西开发成本超低啊,源码就一个mjs,语法规则什么特别好改,解析出来的语法树也很好遍历
大概两个小时做好了解析sql分析相关table数量,并在超过限额后禁止执行的功能,然后挂在Mybatis上(对的你没看错,就是Java包与JavaScript包糅在一起)
然后DEV上线,运行良好,性能优秀;
该功能总计花费半个人天,这就是最大的优势;