1

我进行了快速搜索,找不到有关此主题的任何内容。我什至不确定这是否可能,但我很好奇。

是否可以在用户下载程序之前在服务器上编译 Java 程序。我能想到的应用程序是在用户下载程序之前动态修改程序的源代码。这在根据用户输入或网站上的设置修改程序的设置中可能会有所帮助,并且这些更改很难嵌入到程序中,因此他们下载的是一个可定制且完全可移植的独立程序。我想到的另一个应用程序是,如果每个用户都在程序中使用不同的功能组合,那么它只使用他们即时需要/想要的功能集进行编译。

我有一些程序想法可以用来测试,但这主要是我的学术想法和好奇心。

长话短说,有没有人知道可以使这样的系统工作的任何技术?

4

2 回答 2

3

当然,这是可能的。

只需让下载链接指向某个脚本,该脚本会编译/打包源代码并将结果发回。这可以在 PHP 中实现,只需几行代码。它与验证码非常相似:动态生成的唯一数据,通过 URL 检索。

我自己考虑过这个想法用于协议混淆目的和“软件注册密钥算法”生成。

但是,我建议您将要重新编译的部分分解为单独的类/类集,仅编译这些部分,并根据要求将其与(已编译的)程序的其余部分一起打包。

于 2011-01-28T08:54:25.043 回答
1

我已经使用 Compile API(Java 6 附带)编写了一个库来编译 ememory 中的代码,但我建议您不需要预先生成代码,因为您可以使用生成的代码执行任何您可以使用动态代码执行的操作。可能会有一点性能优势,但我建议您尝试使用动态代码(即带有循环、if 语句和反射的代码)来执行您生成的代码首先会执行的操作,因为这更简单并且可能会执行你要。

即使您必须生成代码,首先以非生成形式编写代码也很有用,这样您就可以清楚地知道代码需要做什么。

于 2011-01-28T09:03:19.817 回答