Is there a difference for the Clover server if we use Custom Java Component in our graphs or not? Does it have any impact on the performance and behavior of the Worker itself? Or eventually, the whole graph with Java Component compiles into one java class (code) and works without the additional overhead?
Hi Sergey,
generally speaking, the only noticeable overhead caused by using CustomJavaComponent (versus using in-built components) is the extra computing resources needed for the class file creation. In other words, the Java code needs to be compiled into bytecode before it can be executed (interpreted or compiled to machine code). The slow-down of the start time is higher during the very first run (because of the reading/writing from/to hard disk) but then decreases for the second, third, etc. because the class file gets cached. Otherwise, the Java code execution is comparable with CTL code execution in terms of performance. In other words, if you created a data transformation in Reformat and the same transformation in CustomJavaComponent using Java, they would take approximately the same time to run. Only the “quality of the written code” itself determines how fast it runs (in other words, if you wrote bad code, it would run slowly and vice versa, if you wrote good code, it would run faster). Everything that I mentioned above is valid for the Worker as well as for the Core. So if a graph (containing CustomJavaComponent) runs on the Worker, the Worker will compile it. If it runs on the Core (for whatever reason) the Core will compile the Java code. And finally, the answer to your last question is no, we don’t interpret the graph in the way you described.
Best regards,