【发布时间】:2012-01-15 02:40:34
【问题描述】:
我编写了一些想要转换为 JavaScript 的 Java 代码。 我想知道是否可以使用 GWT 编译器将提到的 Java 代码编译成 JavaScript 代码保留所有方法、变量和参数的名称。 我尝试使用 -draftCompile 关闭代码优化来编译它,但方法名称被破坏了。 如果 GWT 编译器不能做到这一点,可以使用其他工具吗?
更新
Java 代码只依赖于 GWT 模拟类,因此 GWT 编译器肯定能够处理它。
更新 2
这个Java方法:
public String method()
被翻译成这个 JavaScript 函数:
function com_client_T_$method__Lcom_client_T_2Ljava_lang_String_2()
使用编译器选项:
-style DETAILED
-optimize 0
-draftCompile
因此无法保留名称。但是有没有办法控制它们的变化方式?
澄清
例如,假设您有一个用 Java(或其他一些简单的数学实用程序)编写的排序算法。 sort() 方法接受一个整数数组。并在排序后的数组中返回这些整数。现在说,我同时拥有 Java 和 JavaScript 应用程序。我想用 Java 编写一次这个方法,通过 GWT 编译器运行它,或者保持方法名称相同,或者让它以可预测的方式更改,这样我就可以检测到它并知道如何将它改回 sort( )。然后我可以将该代码放入我的 JavaScript 应用程序并使用它。如果 Java 版本发生变化,我也可以自动重新生成它。从技术上讲,我有一个很好的理由,我对 GWT 的概念有很高的理解,我只是在寻找这个问题的答案。
结论
主要问题的答案是否。 虽然可以保留方法名称,但它的主体是不可用的。其中的方法调用分散在生成的文件中,因此,它们不能用于 JavaScript 库,而这正是本主题的重点。
【问题讨论】:
-
否 - 您可以自己查看编译器标志:code.google.com/intl/de-DE/webtoolkit/doc/latest/… 没有以所需方式更改编译器行为的选项。
-
使用 -style PRETTY 而不是 DETAILED 进行测试 - 也许这样就可以了。
-
从“$”开始的部分是否是一些可预测的字符串,直到下一个下划线?
-
PRETTY 对方法名称的破坏要少得多。对于method(),我现在得到$method()。我们正在取得进展:)。
-
我知道这是旧的,但如果其他人偶然发现它,这看起来很有希望:code.google.com/p/gwt-exporter
标签: java javascript gwt