js 执行java代码_要在js环境下运行java代码最简单的实现方式是什么?

一点都不简单。

转换有两个层面的意思,第一个是语法层面的翻译。这个相对容易些。比如kotlin生成js,js在nashorn下生成java byte code等。整个.Net系统都是建立在这个形式之上,C#, C++.Net, VB.Net, F#……都是翻译为成CLR指令,他们仅仅是语法特性不一样。做这个转换一般是希望开发人员使用自己偏爱的语法(也仅仅就是语法),或者说同运行时的一种语法在一些特性上(如严谨、安全、高效等)不够好,希望换一种更好的。比如js不够严谨,没有类型检查,容易出错,那么换Kotlin(kotlin这里要选择到底是浏览器的DOMTree还是服务器端的nodejs作为运行时)。GWT也是这个意图。

但更高一级的“翻译运行时”这个就非常困难了。比方说,你可以把Java编译成js,但是如果Java来一个new Thread(); 编译出来的东西是在浏览器里执行,而浏览器运行时根本不提供等同于Java的Thread机制。这个麻烦就大了。“翻译运行时”实际上几乎等价于用一门语言A实现另外一门语言B的运行时。这时面临的问题是工程量很大,因为运行时无法100%兼容带来的各种问题,转换运行时候的性能差(甚至能慢上几个数量级)……

回到问题本身,题主说的“js环境”究竟是什么环境?改用java希望解决什么问题?为了做这个事情,工程有多少人力和时间可以用来趟坑?都说明白了,再来找到一个可行的方案。如果就仅仅是觉得写前端用js不太靠谱,想更严格的点,上TS,kotlin转js都是更加现实的选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值