如何将Java源代码交叉编译为JavaScript?

如何将Java源代码交叉编译为JavaScript?,javascript,java,code-translation,Javascript,Java,Code Translation,给定一组Java源代码文件,如何将它们编译成一个或多个可以与手工制作的JavaScript一起使用的JavaScript文件 这是一种选择,但到目前为止,我看到的每一个例子都是为了建立奇特的网站。将Java源代码转换为可以与手工制作的Javascript一起使用的Javascript的简单用例 我就这个问题开始了讨论,但对于这是否可行,人们的看法似乎褒贬不一 一个人给出了一个非常有用的提示,那就是退房。问题是源代码和文档都不是现成的,尽管有和 编辑:GWT导出器源代码为 我也看过。但同样,我无法

给定一组Java源代码文件,如何将它们编译成一个或多个可以与手工制作的JavaScript一起使用的JavaScript文件

这是一种选择,但到目前为止,我看到的每一个例子都是为了建立奇特的网站。将Java源代码转换为可以与手工制作的Javascript一起使用的Javascript的简单用例

我就这个问题开始了讨论,但对于这是否可行,人们的看法似乎褒贬不一

一个人给出了一个非常有用的提示,那就是退房。问题是源代码和文档都不是现成的,尽管有和

编辑:GWT导出器源代码为

我也看过。但同样,我无法找到如何解决我的简单用例的例子


解决这个问题的最佳方法是什么?我还缺少更好的东西吗?

当您使用GWT时,基本上是将UI部分转换为Javascript(它假设您使用编写Java时提供的UI小部件)。在Javascript中只有一些Java库是可访问的。通常在GWT应用程序中,任何大量使用Java库的东西都会在服务器端运行,并作为AJAX连接到Javascript(GWT为您处理)。因此,GWT不一定要将整个应用程序转换为Javascript(尽管如果您愿意限制Java库和某些功能的使用,它也可以)

无论如何,如果这种方法(从Javascript中调用服务器上运行的Java)对您有吸引力,那么一个不错的选择是,它基本上允许您的Javascript直接调用服务器上运行的Java类中的方法(无需构建web服务或其他前端)。我知道不是你问的

更相关的是,它似乎有一个源代码

给定一组Java源代码文件,如何将它们编译成一个 一个或多个JavaScript文件,可用于手工制作 JavaScript

内置javaapi和Java语言特性与JavaScript的特性之间没有直接的关联。因此,任何创建“转换器”的尝试都是不完整的。作为一个基本示例,Java类没有直接对应的JavaScript习惯用法

如果没有源代码,不完整的转换工具是否适用于您的用例是不可能知道的


也就是说,我的建议是首先尝试使用:设置一个演示项目,访问库的源代码,从JavaScript端调用它,然后查看GWT在它的.js文件中输出了什么。其他海报建议的一些其他工具也绝对值得一看

如果这是富有成效的,并让你的方式,伟大的一部分

从那里开始,您需要/想要手工完成其余的转换。毕竟,假设您希望代码能够正确运行,那么手动检查肯定是合适的。一些随它一起转换的单元测试也很理想


您不需要说明项目的源代码有多大,但是如果它很小(比方说不到一千行代码),即使是手动完成转换也不会非常困难。如果它比这大得多,我建议您还是检查一下是否真的希望它成为JavaScript代码。

这里还有另外两个选项,需要研究的东西和第三个选项不转换,只是住在一起

  • 我一直想试试这个--看起来更接近于被问到的问题。引用网页:

    EclipseJava到JavaScript编译器插件和Eclipse标准小部件工具包(SWT)的JavaScript版本的实现,以及其他常用实用程序,如Java.lang.*和Java.util.*。您可以通过Java2Script Pacemaker将基于SWT的富客户端平台(RCP)转换为富Internet应用程序(RIA)

    Java在Javascript方面的经验有限——您需要移植必要的依赖项,或者通过jQuery等工具找到替代方案

  • 在我查看DukeScript时,它编译了一些前端Javascript并从浏览器的Javascript调用Java。这似乎或多或少是一种混合方法,因此您可以使用Javascript中丰富的Java库。我将违反Java浏览器安全策略

    利用Java运行时提供更全面的Java Javascript体验。如果我想在浏览器环境之外使用它,我会在Java上使用Javascript


  • 将此作为java资源的基础,例如JavaScript:<强> <强>,作为一个丰富的JavaScript操作客户端的例子。无论如何,使用Java内部的Javascript引擎,您不需要在Javascript虚拟机到对象代码到Java虚拟机之间进行太多的转换。

    当问题是如何将Java源代码编译为Javascript时,我认为值得一提的是,有一种方法可以将Java字节码编译为Javascript。我从未尝试过,但它似乎很有前途。

    我不确定它是否适合您的用例,但如果您同意放弃Java API并使用Java中的JavaScript API,那么您可以使用,一个构建在TypeScript之上的Java到JavaScript传输器。它允许您访问数百个类型良好的JavaScript API(DOM、jQuery、下划线、angularjs等)。它生成JavaScript代码,您可以将其与遗留JavaScript和TypeScript代码混合使用

    注意:JSweet不适用于遗留Java代码和遗留Java API,但是您的用例没有提到重用遗留代码


    [更新]自1.1版以来,JSweet现在还支持一些Java API,如集合(Java.util)。因此,可以在一定程度上重用遗留Java代码。添加您自己对Java API的支持也是非常简单的。

    不完全是关于这个主题的,但它是一种100%Java兼容的语言,可以