Execute method in Ruby

Because invocation context is building the intent of executing particular expression on target environment, we call the initial state of invocation context as non-materialized. The non-materialized context wraps either single command or chain of recursively nested commands.

# use activate only once in your app

# create called runtime context
called_runtime = Javonet.in_memory.jvm

# construct an invocation context - this invocationContext in non-materialized
invocation_context = called_runtime.get_type('java.lang.Math').invoke_static_method('abs', -50)

# execute invocation context - this will materialize the invocationContext
response = invocation_context.execute

Commands are becoming nested through each invocation of methods on Invocation Context. Each invocation triggers the creation of new Invocation Context instance wrapping the current command with new parent command valid for invoked method.

Developer can decided on any moment of the materialization for the context taking full control of the chunks of the expression being transferred and processed on target runtime.