Hi Michele,
As you've observed, jpy was not a library we were aware of
when we did the evaluation of java-python solutions. I'd be
interested in any insights you have with regard to its
approach. We have settled on Py4J as the java-python bridge
which we are settling down with, building a house & having
babies... :-)
Here is the criteria we used to evaluate the bridges at the
time, it might be useful to you should you chose to do your
own evaluation for specific use-cases.
Technical merit:
--------------------
What is overall architecture, who manages the interpreter
lifecycle? (e.g. Py4J has separate Python/Java processes, uses
sockets)
Does the implementation provide full support for
C-libraries or conditional/partial support? (Py4J works with
an independent Python process so full numpy support)
Does the library handle memory management (e.g. garbage
collection on objects shared between Python and Java
processes)?
What is the threading model between Java/Python
Related to threading, Is there support for indirect
recursive calls between Java & Python? (Our recent work
involved adding this feature to Py4J)
Is remote support possible or on the roadmap?
Does the library pass data and objects by call-by-ref or
call-by-value (i.e. copying) or a combination of both.
Is there evidence of a good testsuite for the
functionality?
Performance!!!! (this is a whole huge area in itself, so
depends what you are optimizing for e.g individual calls vs
batch, in due course we would like to formally measure &
publish some figures for the solutions we are working on)
Non-technical considerations:
-------------------------------------
What is the project licensing?
Are there any platform support limitations (We need to
support Windows, Mac, Linux)
What evidence is there the project is alive and thriving
(look for releases in last 6 months, activity on forums)
Look for evidence of adoption (e.g Py4J is used by Apache
Spark for PySpark, they also make contributions)
Look for other evidence of sustainability (any funding,
companies, institutions involved)
Is the project open to external contributions?
Is there a roadmap?
Is there sufficient documentation?
There was no one perfect solution, but Py4J fulfilled many
of the requirements and we are working on filling in the
gaps.
Let me know if any questions, otherwise I will (separately)
send out an update on our Py4J activities especially after our
productive week at EclipseCon France last week.
Regards,
Tracy