Ric*_*aca 51 javascript java code-translation
给定一组Java源代码文件,如何将它们编译成一个或多个可以与手工制作的JavaScript一起使用的JavaScript文件?
GWT是一种选择,但到目前为止我见过的每个例子都是为了建立花哨的网站.将Java源代码转换为可与手工JavaScript一起使用的Javascript的简单用例尚未得到充分记录.
我在这个主题的GWT邮件列表上开始了一个帖子,但是对于这是否可行而言,看起来似乎有些混淆.
一个人提供了一个非常有用的提示,即检查GWT-Exporter.问题是源代码和文档都不是现成的,尽管有这个和这个.
编辑:GWT-Exporter源代码在这里
我也看过Java2Script.但同样,我无法找到如何解决我的简单用例的示例.
解决这个问题的最佳方法是什么?有什么比我更好的东西吗?
Jac*_*son 10
当您使用GWT时,您基本上将UI部分转换为Javascript(并且它假定您使用编写Java时提供的UI小部件).只有一些Java库可以在Javascript中访问.通常在GWT应用程序中,任何大量使用Java库的东西都会在服务器端运行,并以AJAX(GWT为您处理)连接到Javascript.因此,GWT不一定将您的完整应用程序转换为Javascript(尽管如果您愿意限制使用Java库和某些功能,它可以).
无论如何,如果这种做法(出调用到Java在JavaScript中的服务器上运行),你能想到的,一个不错的选择是DWR,它基本上可以让你的Javascript直接调用Java类的服务器上运行的方法(不用您构建Web服务或其他前端).我知道,不是你问的.
更贴切,它看起来像有源代码,一个示例应用程序展示了如何使用GWT-出口国.
我不确定它是否适合您的用例,但如果您同意删除Java API并使用Java中的JavaScript API,那么您可以使用JSweet,这是一个构建在TypeScript之上的Java to JavaScript转换器.它使您可以访问数百种类型良好的JavaScript API(DOM,jQuery,下划线,angularjs等).它生成JavaScript代码,您可以将其与旧版JavaScript和TypeScript代码混合使用.
注意:JSweet 不适用于旧版Java代码和旧版Java API,但您的用例未提及重用遗留代码.
[更新]从版本1.1开始,JSweet现在还支持一些Java API,例如Collections(java.util).因此,可以在一定程度上重用遗留Java代码.添加自己对Java API的支持也非常简单.
这是另外两个选项,需要研究的内容和第三个选项不转换,只是住在一起。
我一直想试试这个——看起来更接近被问到的问题。引用网页:
一个 Eclipse Java 到 JavaScript 编译器插件和一个 JavaScript 版本的 Eclipse 标准小部件工具包 (SWT) 与其他常用实用程序的实现,例如 java.lang.* 和 java.util.*。您可以通过 Java2Script Pacemaker 将基于 SWT 的富客户端平台 (RCP) 转换为富 Internet 应用程序 (RIA)。
Javascript 经验有限的 Java - 您需要移植必要的依赖项或通过 jQuery 等工具找到替代方案。
当我查看 DukeScript 时,它会编译一些前端 Javascript 并从浏览器的 Javascript 调用后面的 Java。它似乎或多或少是一种混合方法,因此您可以使用来自 Javascript 的 Java 库。我会违反 Java 的浏览器安全策略。
利用 Java 运行时的更完整的 Java 体验。如果我想在浏览器环境之外使用它,我会在 Java 上使用 Javascript。
将此视为使用 Java 资源作为 Javascript 基础的示例:Nashorn 和 JavaFX,作为富 Javascript 操作客户端的示例。无论如何,使用 Java 中的 Javascript 引擎,您不需要在 Javascript-VM 到对象代码到 Java-VM 之间进行太多转换。
给定一组Java源代码文件,如何将它们编译成一个或多个可与手工JavaScript一起使用的JavaScript文件?
尽管有许多将Java应用程序转换为Javascript的解决方案,但是您对新的javascript代码可能与结果代码交互的解决方案感兴趣。这是其他答案的更新(截至2018年)。
有不同类型的工具。例如,您可能会找到一些工具,这些工具可让您(1)将Java代码转换为javascript;(2)将字节码转换为javascript,asm.js或webassembly;(3)直接在浏览器中执行Java应用程序,(4)创建结合了Java和javascript的解决方案。您必须根据需要选择要使用的解决方案。
将Java源代码转换为Javascript
一些解决方案采用Java源代码并产生javascript等效版本。通常,这些解决方案将Java转换为Javascript,但不支持Java运行时的所有行为和库。结果代码可能不支持某些Java标准库。通常,它们用于使用Java创建HTML应用程序,但不用于迁移代码。优点:最终的解决方案可能包含非常小的文件。您可以使用它来重用自己的业务逻辑类,而无需考虑GUI或平台特定的库。缺点:您可能无法使用Java平台的某些功能。它需要访问源代码。
将Javascript字节码转换为JavaScript
这些解决方案采用已编译的Java代码(.class文件),并在javascript,asm.js或webassembly中生成等效的代码。考虑到Java代码可能依赖于Java标准库(即JRE),这些解决方案通常包括移植的和预编译的库。优点:您无需更改代码中的任何内容。您也不需要源代码。缺点:产生的解决方案可能需要加载许多文件。
javaMethods.get(..).invoke(...)
。@MethodAlias(alias="windows.method1")
并使用javascript从javascript中调用它window.method1()
main
使用运行方法cheerpjRunMain( <class>, <jar> )
。您可以使用创建对象cjNew( <class>, <params>...)
并使用调用静态方法cjCall( <class>,<method>,<params>...)
。您可能会考虑许多其他方法。在Javascript中运行Java代码
DoppioJVM是用Typescript编写的完整JVM。优点:它模拟了操作系统的许多元素,包括文件系统,TTY控制台和线程。缺点:考虑到它是一个问题,它可能会比其他解决方案慢。(我没有测试过)
jvm.runClass( <class>, [ <args>...], function(response){..})
。您可以运行Jar文件并执行许多其他任务。创建结合Java和Javascript的应用程序
其他一些解决方案不仅提供了用于编译代码的工具,还提供了用于创建Java和JavaScript解决方案的框架和解决方案。例如,CheerpJ具有用于图形用户界面的Swing和AWT库的完整版本,但它们的生成速度可能非常慢。您可以使用在浏览器上运行得更快的新HTML版本来替换用户界面。优点:您可以重用现有代码,而无需进行更改,主要是一些库和业务逻辑。您可能会从解决方案库中删除那些无法在浏览器中高效运行的库。缺点:如果要继续维护Java桌面版本,则必须为浏览器处理不同的代码。
建议
归档时间: |
|
查看次数: |
34952 次 |
最近记录: |