如果我的JavaScript跑的和Java一样快

Posted on 2022-11-03 12:48  用户注册了一次  阅读(36)  评论(0编辑  收藏  举报

重度应用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上线,运行良好,性能优秀;

该功能总计花费半个人天,这就是最大的优势;