我可以在运行时从另一个程序调用Java程序的功能吗?

时间:2019-05-22 16:00:41

标签: java

如果我有一个程序,其中一个函数是:

void someFunction() { x = x + 1; }

,并且我将其导出为可运行的Jar。有没有一种方法可以在运行时在程序本身之外调用该函数,而无需修改可运行Jar的源代码?

它是来自Java API还是位于内存中(尽管我对ASM不太了解,但我可以调试Jar来查看在调用x = x + 1时运行的程序集)。

我的观点是,如果我可以访问内存中变量X的地址,那么我也可以更进一步,并从内存的角度执行该功能。

1 个答案:

答案 0 :(得分:0)

有多种方法来调用您的代码,而又不知道用例就不可能提出最佳的前进方式。这是一些选项

1)Library->在另一个应用程序中使用jar。一个警告是,其他应用程序应使用Java并使用相同或更高版本的Java进行编译。例如,如果您的可恢复jar是在Java 10中编译的,而现在您想在无法使用的Java 8中使用,则为例。

2)Webservice->将函数包装在容器中,并通过spring boot调用。有时希望将其称为微服务。参见https://spring.io/guides/gs/actuator-service/

3)消息驱动的bean->使用spring MDB(消息驱动的bean)模式以及JMS之类的消息传递技术

4)AWS中的功能。如果您使用的是云,则可以考虑创建AWS Lambda。应该可以通过api网关等触发