V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Edward4074
V2EX  ›  程序员

讲个笑话,领导要求低代码中使用 Java 作为脚本语言

  •  1
     
  •   Edward4074 · 2023-08-22 09:27:47 +08:00 · 12059 次点击
    这是一个创建于 464 天前的主题,其中的信息可能已经有所发展或是发生改变。
    做了两年多的低代码平台,平台定位可是一线业务人员可以直接配置的,脚本能力一直悬而不决。

    平台用 Java 开发的,最开始的定位是专业开发用 Java 写业务增强插件,非开发用脚本语言(大概率 js )。

    领导空降后,一开始说不需要脚本全部用 jar 包,导致交互上越做越复杂,最近沟通后说可以在配置上开放写 Java 代码(可能他不认为这样是脚本)。

    虽然不是没有方案( Janino ),但就是又无奈又可笑
    第 1 条附言  ·  2023-08-22 11:03:40 +08:00
    当然,领导说的都是对的!!! doge
    97 条回复    2023-08-24 05:39:42 +08:00
    MrSheng
        1
    MrSheng  
       2023-08-22 09:32:26 +08:00   ❤️ 1
    如果有解决方案可以做到,我不知道有啥好笑的。
    gym345600
        2
    gym345600  
       2023-08-22 09:35:02 +08:00   ❤️ 24
    不好笑,爱做做,不爱做就滚
    ljrdxs
        3
    ljrdxs  
       2023-08-22 09:35:41 +08:00
    非开发指 Web 前端还是字面意义的非开发?
    biubiuGolang
        4
    biubiuGolang  
       2023-08-22 09:36:31 +08:00
    好奇是哪家
    tool2d
        5
    tool2d  
       2023-08-22 09:36:51 +08:00
    @MrSheng 可能楼主觉得 js 那种才能算真脚本,java 只能算插件。

    不过在我看来都半斤八两,让业务人员写哪一种,都玩不转。多在动态配置上下点功夫吧,引入变量,条件之类的配置语句。
    mineralsalt
        6
    mineralsalt  
       2023-08-22 09:38:06 +08:00   ❤️ 2
    动态加载 jar 做插件也很普遍啊, 不是什么异想天开的需求, 如果能满足业务需求, 有啥好笑的
    manasheep
        7
    manasheep  
       2023-08-22 09:43:24 +08:00   ❤️ 2
    没啥大问题,Unity 不也用 C#当脚本语言么。
    WangLiCha
        8
    WangLiCha  
       2023-08-22 09:45:35 +08:00
    单纯说使用 Java 作为脚本语言这个事情的话,Processing 还挺符合这个定义的
    进一步扩展的话,Arduino IDE 也可以理解为使用 C++做为脚本语言?
    xausky
        9
    xausky  
       2023-08-22 09:45:47 +08:00
    很可能因为后面发现非开发连脚本语言也不会用,所以干脆全部 Java 得了,我觉得挺好,我们现在就是 Java 和 JS 都有,但是非开发也不会 JS 。
    shaozelin030405
        10
    shaozelin030405  
       2023-08-22 09:45:55 +08:00   ❤️ 2
    这是低代码?这么低的吗,为啥不用 rust 做脚本语言呢
    c3de3f21
        11
    c3de3f21  
       2023-08-22 09:46:03 +08:00
    能写成配置的就别写代码编辑器。
    MENGKE
        12
    MENGKE  
       2023-08-22 09:47:17 +08:00
    你有好方案你就提出来,没有就乖乖听话做,没有方案还不想做就直接走好吧
    sujin190
        13
    sujin190  
       2023-08-22 09:50:30 +08:00   ❤️ 8
    看得出这领导应该是 java 重度使用着而且是阿里这种重度 java 出来的吧。。

    其实编译 java 代码加载或者动态加载 jar 包其实也是挺好一技术,但是要说定位一线业务人员可以直接配置的其实就有点坑了,且不说一线业务人员学习难度也太高了点,再者如果底层已经是 java 搞得,配置脚本还是 java 且不是 codegen 的方式的话,那就是说没有安全沙箱了?他就不担心某人写个配置脚本手抖瞎写把整个平台都搞崩么,难不成他是想业务人员提交完配置脚本再找人审核么不能实时生效?

    满足业务场景又易用性、安全和扩展能力综合考量啊,过度考量扩展能力其实也并非是一个好选择吧
    kasusa
        14
    kasusa  
       2023-08-22 10:11:10 +08:00   ❤️ 7
    渗透人员狂喜:高危
    clino
        15
    clino  
       2023-08-22 10:12:19 +08:00   ❤️ 1
    可以用 Java 的 Groovy 嘛
    biubiuGolang
        16
    biubiuGolang  
       2023-08-22 10:14:40 +08:00
    @clino 纷享销客就是这样
    ychost
        17
    ychost  
       2023-08-22 10:15:37 +08:00
    Groovy 作为脚本挺合适的,语法和 Java 100% 兼容,唯一不好的就是容易被整出漏洞,但是如果用 FaaS 来作为脚本运行环境,没啥问题
    lyxeno
        18
    lyxeno  
       2023-08-22 10:20:52 +08:00
    可以用 Groovy 。但是安全性会直线下降,特别是允许业务人员配置的情况的。目前并没有好的 Groovy 沙盒
    murmur
        19
    murmur  
       2023-08-22 10:29:30 +08:00
    java 的低代码一大把,市面上一线也有用 java 的,也支持各种二开,就是不支持 class 热更改深点就得重启

    说白了还是经验少
    Slurp
        20
    Slurp  
       2023-08-22 10:31:29 +08:00 via iPad   ❤️ 5
    😁 这还不好笑的话,大概出 9 分 CVE 的时候就好笑了。
    chuck1in
        21
    chuck1in  
       2023-08-22 10:41:29 +08:00
    最近的论调似乎是:领导说的就是对的,不要质疑领导。干活的人应该端正心态,不应该对其他事情提出异议。
    chendy
        22
    chendy  
       2023-08-22 10:45:33 +08:00   ❤️ 3
    @chuck1in 其实是
    别太把自己当回事
    别太把领导当回事
    别太把工作当回事
    nothingistrue
        23
    nothingistrue  
       2023-08-22 10:48:40 +08:00
    Java 作为脚本语言,非常难用,还到处是坑。用 Java 做得低代码平台,这本身就暗示了这个平台上 Java 的定位是平台/引擎,不是业务。这时候还想让脚本用 Java ,这个领导要不是脑袋被门夹了,就是准备全盘推翻重做了。
    fason1995
        24
    fason1995  
       2023-08-22 10:49:34 +08:00
    我觉得没啥好笑的,屁股决定位置,先把自己的位置放低,以后看结果就行了
    fox0001
        25
    fox0001  
       2023-08-22 10:58:03 +08:00 via Android
    确实没什么可笑。

    Android 初期,手机上玩过 BeanShell 。惊讶地发现 Java 语言居然可以当成脚本语言来玩。但是用起来不爽。主要是引用类时太麻烦,不像 IDE 那样自动引入。
    ZGame
        26
    ZGame  
       2023-08-22 11:18:29 +08:00
    脚本语言(x )
    类似虚幻引擎蓝图的编排系统(打钩)

    一线业务人员是不太可能写脚本语言的,最后压力还是会到程序这边,不如提供编排系统,和增加插件的能力给业务如何?
    Edward4074
        27
    Edward4074  
    OP
       2023-08-22 11:24:52 +08:00
    @ZGame 编排系统已经做了,包括公式之类的,但交互上能做的配置毕竟有限
    shyangs
        28
    shyangs  
       2023-08-22 11:24:54 +08:00
    這從定義上就不叫 low code 了吧.

    low code 還要寫 Java, 說明開發人員不會被業務員, 營銷, 管理等職位取代了.
    sadfQED2
        29
    sadfQED2  
       2023-08-22 11:26:03 +08:00 via Android
    也不是不行?类似 es 的自定义脚本那样,可以做预编译提升性能
    Edward4074
        30
    Edward4074  
    OP
       2023-08-22 11:28:55 +08:00
    @sadfQED2 不是不行,正文也放了方案,这里补下链接 http://janino-compiler.github.io/janino/
    adoal
        31
    adoal  
       2023-08-22 11:40:52 +08:00   ❤️ 1
    如果盯住 OP 字面上说的"一线业务人员可以直接配置",拿一线业务人员连真正的脚本也不可能用,是会得出 OP 才可笑的结论。但是如果真要你们这么非黑即白,一头是纯业务的,另一头是用 Java 这种产业级软工语言吭哧吭哧硬写代码的,那不妨更极端一点,业务这头,「真正」的「甲方」味的「业务人员」,别说脚本语言了,甚至可以拖拉的编排系统都不要去用呢,有啥需求用颠三倒四错误百出的文字描述出来让乙方返工 10 编去给搞出来不更好?

    去除 OP 表达的问题或者某些思维误区,咱不谈给一线业务人员用脚本这个搞笑想法,只说在一个用 Java 开写核心引擎的平台里引入脚本语言来做开放能力,这样做是为了什么,还不是因为业务的多变性高于基础设施,让写引擎的人去用同样的语言写业务规则是资源错位,引入脚本语言了,可以更好地做对人员分工,不论是招聘还是培养,都可以细化出一批专门写业务规则的人。那么,Java 写的平台里再引入 Java 写的脚本,真的一点也不可笑吗?有技术解决方案能做到,就是合理的选择吗?
    thetbw
        32
    thetbw  
       2023-08-22 11:46:46 +08:00
    跟他说 javascript 也是 java 的一种
    shoco
        33
    shoco  
       2023-08-22 11:57:01 +08:00
    用 Java 作为脚本语言 不就是 javascript , 就这么理解
    focuxin
        34
    focuxin  
       2023-08-22 12:01:48 +08:00
    Groovy 做规则引擎还是可以的
    clf
        35
    clf  
       2023-08-22 12:05:38 +08:00
    Java 有挺多的脚本引擎的,选一个得了。
    ohwind
        36
    ohwind  
       2023-08-22 13:28:36 +08:00
    我个人觉得没有问题,虽然 jawa 确实不太适合做脚本,但那只是不适合,而不是不可以
    jaylee4869
        37
    jaylee4869  
       2023-08-22 13:37:30 +08:00 via iPhone
    先做出来再说…… 只是看用户到底接不接受……
    timnottom
        38
    timnottom  
       2023-08-22 14:00:30 +08:00
    java 的静态编译语言....

    javascript 可以
    sherlockwhite
        39
    sherlockwhite  
       2023-08-22 14:59:34 +08:00   ❤️ 2
    @gym345600 这个都这么多赞?戾气这么大?
    ZSeptember
        40
    ZSeptember  
       2023-08-22 15:03:13 +08:00
    领导有说原因吗,你尝试说服领导不用 Java 吗。
    cloudzhou
        41
    cloudzhou  
       2023-08-22 15:04:50 +08:00
    严肃讨论技术来说,其实领导确实可行,尤其如果本来就是 Java 体系情况下,
    如果你觉得不行,起码要提供一个合理的解释
    visper
        42
    visper  
       2023-08-22 15:08:29 +08:00
    groovy,不二之选
    Edward4074
        43
    Edward4074  
    OP
       2023-08-22 15:20:12 +08:00
    @ZSeptember
    @cloudzhou 发到这里就只是图一乐,又不是不能做。
    gym345600
        44
    gym345600  
       2023-08-22 15:44:02 +08:00
    @sherlockwhite 不好意思,本来想幽默一下的,被理解成了戾气。
    话说回来,现实中确实有很多你看着不爽的领导,既然遇到这样的事,要么好好沟通协商看看有没有调整空间,要么分歧不能统一就只能由领导乾纲独断,好好配合。如果觉得理念不合除了走人好象没别的好办法,毕竟不是自已说了算的地盘。(哈哈哈,这翻译过来不就是爱做做,不做就滚嘛)
    在这里讲领导可笑是很可笑的。
    magicfield
        45
    magicfield  
       2023-08-22 15:44:19 +08:00
    就算是 JAVA 开发的后端也不代表要用 Java 来做脚本语言啊。
    之前写过一些低代码业务工具,用的就是 js 作为脚本语言,后端 java 使用 ScriptEngine 直接执行 js 脚本。
    不仅是 js ,还可以运行 Groovy 、Scala 等。

    当然也有缺点,只能使用基础的 js 语法,部分特性不支持等(比如 2**10 这种语法糖就不支持)

    不用 ScriptEngine 也有不少第三方库的脚本方式可选,比如 jexl3


    当然,领导对对对~
    gaifanking
        46
    gaifanking  
       2023-08-22 16:00:28 +08:00   ❤️ 1
    可以用 Java 语法,但 parser 要自己写而不能用 javac ,否则太不安全了,想想 Java 里的反射+动态代理来实现的 hook
    dcdlove
        47
    dcdlove  
       2023-08-22 16:05:53 +08:00   ❤️ 1
    评论全是一群自以为是的家伙,人家都说了是低代码:你们干脆嵌入一个 web vs code 算了
    dcdlove
        48
    dcdlove  
       2023-08-22 16:10:28 +08:00
    @jaylee4869 发现你们这种人不带脑子只知道无脑做,也不看有没有价值,真实服了你们帮老古董了
    shaozelin030405
        49
    shaozelin030405  
       2023-08-22 16:18:21 +08:00
    @dcdlove 这是要在低代码里写代码了,感觉要出问题了
    InvalidUsername
        50
    InvalidUsername  
       2023-08-22 16:30:47 +08:00 via Android
    JavaScript 🐶
    hy233
        51
    hy233  
       2023-08-22 16:32:05 +08:00   ❤️ 1
    @gym345600 #44 良好的自我管理意识
    lostc
        52
    lostc  
       2023-08-22 16:33:06 +08:00
    @Slurp 为什么不是 9.9 分
    cbythe434
        53
    cbythe434  
       2023-08-22 16:50:55 +08:00
    首先是空降,然后可能业务盘子就这些,那就没需求创造需求,速速上线发战报就得了,配合演出一下,别做刺头
    sherlockwhite
        54
    sherlockwhite  
       2023-08-22 16:52:51 +08:00
    @gym345600 #44 其实就是分享吐槽一下,正常我们说就是六字真言,你应该带个狗头哈哈哈
    jaylee4869
        55
    jaylee4869  
       2023-08-22 17:10:38 +08:00
    @dcdlove Java 怎么就无脑了? GraalVM 做 Native Image 构建 AOT ,毫秒启动,怎么就老古董了?为什么劣气这么重?
    Richared
        56
    Richared  
       2023-08-22 17:26:59 +08:00
    用啥不一样?用的人大多数一点代码都不会写,还不如统一,再说又不是 java 做不了。
    manhere
        57
    manhere  
       2023-08-22 17:47:12 +08:00   ❤️ 1
    又一个被低代码忽悠瘸的...
    cxh116
        58
    cxh116  
       2023-08-22 18:20:04 +08:00   ❤️ 1
    izzy27
        59
    izzy27  
       2023-08-22 22:40:42 +08:00   ❤️ 1
    面向领导编程
    stanjia
        60
    stanjia  
       2023-08-22 22:57:10 +08:00
    建议使用 SQL 做为脚本语言
    xianzhe
        61
    xianzhe  
       2023-08-22 23:11:48 +08:00 via Android
    antlr 自定义一套 dsl ,然后翻译为 java 执行
    thevita
        62
    thevita  
       2023-08-22 23:36:20 +08:00
    看业务需求,不要被“脚本”二字束缚住了手脚,关键是业务需求是如何的,并不是一定要是一个 script, 因为 `脚本` 本身还是个技术 term, 因为这限制业务分析舍本逐末了

    作为一个 平台,对外的提供可扩展能力, 其实目的也不一样啊

    是需要 一个 glue lang 来调用平台 api, 实现灵活的逻辑呢? ( 这可能比较符合传统很多 script 的定位, 比如 lua 定位就是作为 glue lang 存在)

    还是需要接入其他三方生态( 比如允许加载 自定义 jvm class 很多 jvm 生态里的东西也许有可能接入)

    等等...

    总的来说,具体问题具体看,心态开放点呗,尽量不用自己领域的知识向外,不然很累。
    512357301
        63
    512357301  
       2023-08-22 23:49:17 +08:00 via Android
    请放出产品名字,好用全当宣传了,不好用也好避坑🕳️
    AyaseEri
        64
    AyaseEri  
       2023-08-22 23:57:44 +08:00
    我们试水用了 Java ,后来改用 JS 了。用啥其实都行,关键是你怎么把依赖库给引进去,给个裸的 Java 和裸的 JS 其实写不了什么业务的,单单比较一下两个时间都挺让人头疼了。
    mmdsun
        65
    mmdsun  
       2023-08-23 00:26:41 +08:00
    @gaifanking JDK 有配置文件可以配置安全策略,反射可以禁止的。
    majula
        66
    majula  
       2023-08-23 00:35:29 +08:00
    之前在外包有做过低代码平台,需求和楼主类似,也是一线业务人员要能直接写脚本配置的

    甲方要求用 F# 做脚本语言,能够在 web 端直接编辑,且有完整 IDE 功能,包括补全、诊断、单步调试。后来又引入了包管理,接入甲方自研 git 平台、CI/CD 平台,等等。

    回想起那段日子真的是地狱般的体验,每天搞的焦头烂额
    SimonOne
        67
    SimonOne  
       2023-08-23 01:06:27 +08:00   ❤️ 1
    某些人的论调是但凡有解决方案需求就是合理的?

    那么把人屎做成酒菜的解决方案也是有的。
    希望下次领导请你制作粪酒去展示饮用及销售的时候不要有异议,老实张嘴演示领导甘酿有多好喝。
    akira
        68
    akira  
       2023-08-23 01:12:55 +08:00
    现在低代码不好做吧,面临好多挑战呢
    tuomasi
        69
    tuomasi  
       2023-08-23 06:00:08 +08:00
    这种低代码,狗都不用,公司之前买了帆软,后来也丢弃了,需要报表就是直接手撸或者 excel
    Chad0000
        70
    Chad0000  
       2023-08-23 07:44:35 +08:00   ❤️ 1
    还可以再激进一些,还搞啥脚本,直接代码会合并到平台中。
    Edward4074
        71
    Edward4074  
    OP
       2023-08-23 07:49:12 +08:00 via iPhone
    @SimonOne 没点进去看,希望这粪酒您喝得起
    Edward4074
        72
    Edward4074  
    OP
       2023-08-23 07:50:19 +08:00 via iPhone
    @SimonOne 好好说话,别恶心人
    SimonOne
        73
    SimonOne  
       2023-08-23 08:26:04 +08:00   ❤️ 1
    @Edward4074 #71 上来让你滚的你没啥回应,我替你嘴替骂回去的你倒是不待见了。
    ——————————————————————————————————
    一线业务员真是谢谢你们家领导了,我看有几个一线能用得明白用得舒服的。
    SimonOne
        74
    SimonOne  
       2023-08-23 08:28:11 +08:00
    @Chad0000 #69 对头,一线业务员能写得明白的做啥业务员啊,招进开发组做运维啊。
    watch1dogZ
        75
    watch1dogZ  
       2023-08-23 08:39:26 +08:00
    参考 Salesforce 的脚本语言 Apex, 很像 Java
    KuroNekoFan
        76
    KuroNekoFan  
       2023-08-23 09:21:48 +08:00 via iPhone
    低代码本身就…
    ljsh093
        77
    ljsh093  
       2023-08-23 09:22:21 +08:00
    @MrSheng #1 groovy 可以存数据库里,也可以动态跑,不是挺好的吗
    humpy
        78
    humpy  
       2023-08-23 09:25:37 +08:00 via iPhone
    我觉得挺好,难道脚本就一定要用那几个弱类型动态语言?
    脚本运行其实可以试试 ant ,别看它老,我最近用了下,感觉还挺不错。
    litchinn
        79
    litchinn  
       2023-08-23 09:33:08 +08:00
    groovy ,aviator 都还行吧,
    另外开句玩笑,直接告诉领导,java 的脚本版本是 javascript ,哈哈
    ccc1924
        80
    ccc1924  
       2023-08-23 09:35:05 +08:00
    这个需求有合理的地方,之前呆过一个公司,使用 groovy 作为脚本语言。
    实际应用的时候很多实施人员不会写 groovy ,下一个版本中加入了 java 作为脚本语言
    miniliuke
        81
    miniliuke  
       2023-08-23 09:35:49 +08:00
    Groovy 啊,可用性很高啊
    keymao
        82
    keymao  
       2023-08-23 09:41:04 +08:00
    不明白,这有啥好笑的。 你有方案就提出来,没方案就做,不愿意搞就挪地方呗。
    fredweili
        83
    fredweili  
       2023-08-23 09:46:50 +08:00
    看不起领导就干掉他
    Edward4074
        84
    Edward4074  
    OP
       2023-08-23 10:09:18 +08:00
    @SimonOne #73 针对主题,说啥都可以,别放这种无关的东西出来。再者,迫于生计,大多数人不都在干着“制作粪酒”的工作。
    nutting
        85
    nutting  
       2023-08-23 10:23:48 +08:00
    Groovy 啊,很多当脚本用的
    gaifanking
        86
    gaifanking  
       2023-08-23 10:27:12 +08:00
    @mmdsun 那会好很多。
    lambdaq
        87
    lambdaq  
       2023-08-23 10:29:41 +08:00   ❤️ 1
    ftp 把 jsp 文件传到服务器上就能跑。

    改成 s3 + 一个 web ide

    伙计们,这不就 低代码!
    SimonOne
        88
    SimonOne  
       2023-08-23 10:36:24 +08:00
    @Edward4074 #83 做着制作粪酒”的工作,但是不想做,吐槽一下不可以吗,你发帖不就是为了吐槽下吗。
    有的人不让你吐槽,让你要么做要么滚,我替你回敬一下不行吗。
    SimonOne
        89
    SimonOne  
       2023-08-23 10:39:33 +08:00
    @Edward4074 #83 视频发都发了撤不回来,图片也不是什么恶心的,要是不想看到可以把我 Block
    gym345600
        90
    gym345600  
       2023-08-23 11:36:23 +08:00
    @SimonOne 要么做要么滚也是无奈吐槽的一种方式,#44 楼也解释过了,你从哪里看出是不让 OP 吐槽?
    你非要把别人往极端上拉,那是你的问题。
    SimonOne
        91
    SimonOne  
       2023-08-23 12:20:34 +08:00
    @gym345600 #89 可是不止#44 楼的人表达这句话(还有每个人的 Block 名单不一样,你说楼层我不一定定位精确)。
    打败攻击者最强有力的就是用攻击去回应,难道我能通过网线把攻击者扭转到一个阵营吗。
    cbdyzj
        92
    cbdyzj  
       2023-08-23 12:36:20 +08:00
    讲道理我还真做过类似的事情,JDK 本身自带一个运行时的编译器
    https://github.com/cbdyzj/lib17/blob/master/repositories/boot/src/main/java/org/jianzhao/boot/service/ScriptService.java#L48

    BTW ,用 beanshell 或者 jshell 来写脚本也蛮可行的,现有的设施也都支持了
    而且类似 JEP445 ( https://openjdk.org/jeps/445 )这样的 Proposal ,也在让 Java 成为更加脚本的语言这条路上狂飙突进
    jjwjiang
        93
    jjwjiang  
       2023-08-23 13:11:36 +08:00
    非常有创意!你可以继续顺着领导的思路帮他扩展:

    提交 jar 包不如直接写脚本来的方便,建议直接写文件
    文件的提交审核系统可以用现成的一个叫做“吉特”的先进系统,可以方便的提交并且进行审查
    代码进入“吉特”之后可以引入一个“西爱西帝”的先进流程,直接把脚本进行编译并部署到产品上
    lifespy
        94
    lifespy  
       2023-08-23 15:15:50 +08:00
    @sherlockwhite #54 什么六字真言,"网络连接中断"吗?
    dcdlove
        95
    dcdlove  
       2023-08-23 16:57:58 +08:00
    @jaylee4869 你连题目都理解错了,写在再多答案也是浪费时间、金钱,不过是自我感觉良好而已
    kwanzaa
        96
    kwanzaa  
       2023-08-24 01:38:56 +08:00
    其实写胶水代码也是低代码 xs
    Edward4074
        97
    Edward4074  
    OP
       2023-08-24 05:39:42 +08:00 via iPhone
    @kwanzaa 那可以再进一步,基于开发框架写代码也是低代码 doge
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:53 · PVG 00:53 · LAX 08:53 · JFK 11:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.