Tutorial :Running java programs in one runtime instance



Question:

I am wondering if such thing is possible: I have a java program that takes arguments and gives output to the console. What i need is to run it multiple times - it (jar file) runs smoothly but the overhead for starting and stoping java runtime is way to big. Is there a way to instantiate java runtime (or vm, I'm not sure how to call it) once, and then somehow connect to that runtime several times and execute the jar?

I hope that despite my serious ignorance of java terminology, someone will be able to answer my question :D.


Solution:1

It should be straightforward to write a wrapper class that calls into the JAR's Main-class, and calls AppClass.main() with the appropriate arguments repetitively:

// wraps class MyWrapped  class MyWrapper {    public static void main(String[] args) {     for (each set of command-line args) {         MyWrapped.main(arguments);     }  }  

Remember, a Java app's main() method is nothing special, it's just a static method you can call yourself. It could even be invoked by multiple threads simultaneously, if properly designed.


Solution:2

Might be a better to design to create a main wrapper that executes your code multiple times. Think about it in those terms. Instantiate a class file and call a method as many times as you need.


Solution:3

Any reason you can't just have this run in loop?


Solution:4

Please note that the obvious approach listed does NOT reload classes between instantations. If you modify static fields the fields do NOT get reinitialized!

If that may be a problem, consider rewriting to deal with this. Another approach may be looking into a OSGi container based solution, as they do not allow separate segments to see one another, so each invocation have classes loaded on its own.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »