我想写一个java转js的转译器,就像typescript转js的转译器一样,应该了解哪些知识?

类似项目:

jweet A transpiler from Java to TypeScript/JavaScript

java2typescript Java To TypeScript Transpiler

我自己,不代表你们啊,我就希望以后写web程序,不用两个编辑器来回来切,不用再写一会js写一会java。然后还要通过http调用。还要手写url。相同的方法前台写一遍后台还要写一遍。

所以,就想以后可以在同一个编译器里,写同一种语言,js和java我更倾向于写java,前后台交互看起来就和controller调用service方法一样简单(可以在http上面再封一层么,或者使用rpc参考(DWRdubbo))

ts是一个语法,浏览器不能直接识别,需要通过转译器转译成普通js语法浏览器才可以识别。
同理,既然有ts转js的转译器ts可以,那么只要有了java转js的转译器,用java写js也就是可能的,不就是把一种语法转成另一种语法嘛。
你写ts以后,使用tsc把ts转移成js。
写java,使用javajs转译命令,把java转成js不就得了。
感觉不是很困难的事情,也不是很麻烦的事情。
据说babel这个es6转es5的转译器就是个高中生写的嘛,大家想写都可以写出来的,为什么人家行我不行?一件不难的事情。

除了我分享的这几个项目,还有没有其他项目比这两个项目更好,或者已经实现了我说的功能了呢?

还有如果我自己想写的话应该去了解哪些知识呢?有没有现成的转译器库?只需要输入各语言的不通,各语法,就可以将某个语言转移成另一个语言,或者有哪些简单的github源码可以参考的

阅读 5.7k
6 个回答

写java,使用javajs转译命令,把java转成js不就得了。
感觉不是很困难的事情,也不是很麻烦的事情。

你要是真写出来了,你就是神级。随便说两个我觉得不好做的。
第一点,所有javascript的number都是3个字节的float类型,java里可是有int,float,double等等类型,java里位操作转成javascript位操作怎么办?可以解决吗?可以,很麻烦。
第二点,java里面的类互相引用,你在javascript的circular dependency怎么解决?可以解决吗?可以,比较麻烦。

CheerpJ 了解一下

ts转js只是一个超集到常规语法的解释,他们实现的基础都是ECMA标准,也就是说只要在实现层上做解释就可以了,但是java=>js这种跨语言的就很难了,不能只存用法上,甚至要从语言设计的底层原理上出手,不然这个坑会越来越深

把石头变黄金的成本远远大于直接开采黄金
同样,前后端同语言完全可以用js写后台(nodejs),或者java写前台(webassenbly).
为什么要把java转成js?
这个事儿吃力不讨好,两个语言相差太多,能转是能转,毕竟人能干的事儿机器就能干,但是没有太大意义

光语言的转义只能解决一小部分问题,更重要的是语言的运行库和生态系统。
要是java程序员想一种语言包打前后端,我推荐kotlin,kotlin-js也已经成熟了,和你的想法差不多。

那你为什么不用同一个IDE写...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题