【问题标题】:Best way to generate java with python?用python生成java的最佳方法?
【发布时间】:2011-05-18 18:19:32
【问题描述】:

从 python 生成 java 的最佳方法是什么?

我想写一个装饰器,生成java代码来调用一个json版本的函数(我可以使用现有的装饰器来导出json api)。

生成 java 的最佳方法是什么,我应该在这里考虑 FSM 之类的东西吗?

理想情况下,我可以为服务器编写一次代码,并生成代码以与各种语言交互(首先是 java)。

编辑(从已删除答案的评论中提取):
java代码将在android上运行,而python代码将在django服务器中......另外,我希望能够静态生成java代码,并将其作为人们可以使用的API的一部分。

【问题讨论】:

  • 如果可以避免的话,最好的方法就是不要生成这么复杂的东西。不过有一个提示:据我所知,从 AST(抽象语法树)之类的东西生成正确(不太可读,但正确)的代码相对“简单”(与所有其他可能性相反)——至少如果您对树格式(以及它所代表的内容)非常了解。这基本上意味着实现了一半的 java 编译器。
  • 那么你的服务器会生成一些 Java(字节?)代码,Android 用户会执行这些代码来获取一些 JSON 数据?
  • 显然,能够生成 java 代码的位只会在我们决定更改 API 时运行,而不是一直运行 :)
  • @delnan AST 肯定看起来是正确的,也许我可以使用 jython 的 java。

标签: java python abstract-syntax-tree fsm


【解决方案1】:

您始终可以像 web 应用程序创建 HTML 一样创建 java 代码:使用模板。然后,您可以使用常规 Java 编译器将 Java 源代码编译成字节码(参见: Package javax.tools)

不一定是最好的选择,但绝对是一个选择(顺便说一句很简单)

【讨论】:

  • 可以...我以前生成过这样的代码,但它并不总是很漂亮。
【解决方案2】:

重用是好的。复杂性是有代价的。

它会让你以后支付两次或更多。在实现飞跃之前衡量您的 ROI(投资回报率)。

[编辑:]

  1. 您可以使用 Jython,它可以轻松编写胶水代码来调用 Java 函数。
  2. jythonc 将 Python 源代码转换为 Java 源代码,然后调用 Java 编译器将其转换为 .class 文件。
  3. 如前所述,您可以使用模板。有人确实为此使用了cheetah。虽然该链接不再可用。

【讨论】:

  • 网络编程调试起来可能是一场噩梦,生成所有这些胶水会省去很多麻烦。
  • @Stuart Axon:+1 非常正确!我一点也不争辩。我们必须对此作出判断。然而,我看到人们为特别使用胶水代码做出仓促决定而付出了代价。这真的取决于这里取得的成就。 json API 的复杂性与胶水代码的复杂性。我只是有一种直觉,认为 json API 的复杂性会更小,因为 Python 拥有出色的工具。
  • 生成代码以从我想到的 java/android 调用它比 python 方面更多。我会调查 jythonc ......目前我正处于调查阶段,如果这看起来像是一个死胡同,那么这并不是太大的损失。
【解决方案3】:

我的建议?让它生成 JavaScript 代码而不是 Java 代码。 Android 可以使用 WebView 执行 JavaScript 代码。

【讨论】:

  • 没错,我不确定这是否作为服务运行。
猜你喜欢
  • 2011-01-25
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 2022-11-27
  • 2013-09-26
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多