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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

    等等...

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

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

    回想起那段日子真的是地狱般的体验,每天搞的焦头烂额
    SimonOne
        67
    SimonOne  
       249 天前   ❤️ 1
    某些人的论调是但凡有解决方案需求就是合理的?

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

    改成 s3 + 一个 web ide

    伙计们,这不就 低代码!
    SimonOne
        88
    SimonOne  
       248 天前
    @Edward4074 #83 做着制作粪酒”的工作,但是不想做,吐槽一下不可以吗,你发帖不就是为了吐槽下吗。
    有的人不让你吐槽,让你要么做要么滚,我替你回敬一下不行吗。
    SimonOne
        89
    SimonOne  
       248 天前
    @Edward4074 #83 视频发都发了撤不回来,图片也不是什么恶心的,要是不想看到可以把我 Block
    gym345600
        90
    gym345600  
       248 天前
    @SimonOne 要么做要么滚也是无奈吐槽的一种方式,#44 楼也解释过了,你从哪里看出是不让 OP 吐槽?
    你非要把别人往极端上拉,那是你的问题。
    SimonOne
        91
    SimonOne  
       248 天前
    @gym345600 #89 可是不止#44 楼的人表达这句话(还有每个人的 Block 名单不一样,你说楼层我不一定定位精确)。
    打败攻击者最强有力的就是用攻击去回应,难道我能通过网线把攻击者扭转到一个阵营吗。
    cbdyzj
        92
    cbdyzj  
       248 天前
    讲道理我还真做过类似的事情,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  
       248 天前
    非常有创意!你可以继续顺着领导的思路帮他扩展:

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