Our automatic update fetched the new Inline-Java version from CPAN some time ago!
http://search.cpan.org/src/PATL/Inline-Java-0.51/CHANGES
Congratulations!
There were some awaited features here, including the option to bind on another host (127.0.0.1) and CharSequence support. Super cool!

There is, also, another proposal for improvement:
To start the Java::Inline inside our JVM we instantiate the InlineJavaServer manually. We automatically search for the CPAN-installed "InlineJavaServer.jar", load it via URLClassLoader and instantiate the InlineJavaServer using reflection. Thus we have some independence from the Inline::Java version we use: we can install/upgrade Inline::Java on different architectures and things continue to work, and we don't have to modify or copy anything (like copying "InlineJavaServer.jar" into our libs and linking against it). Thus we preserve Inline::Java unity and encapsulation as much as possible, i think. The problem is, since we have to call two methods on the InlineJavaServer: the public constructor and RunMainLoop, we run into possibility of portability problems, because InlineJavaServer public constructor contains pretty match the whole configuration of the Inline::Java JVM part. We can't guarantee that next update won't add more parameters to the constructor (it is even possible that some parameter would be removed and another added into its place, leading to consequences unknown), as it happened with the update from 0.50 to 0.51. I think, the best solution to preserve feature portability here would be to have an empty public constructor for InlineJavaServer, with configuration moved to system properties; thus the InlineJavaServer can be configured both from the code and from outside the JVM using it's command-line arguments. Another solution would be (again, having an empty constructor with some defaults) to configure the InlineJavaServer using set* methods. Or there might be a Properties instance to be passed as a single argument to the InlineJavaServer. Overall, i think the InlineJavaServer is an important API for anyone using Inline::Java from inside their application, and portability of its interface should be considered.

Again, thanks for the great work continued even up to 0.51,
and good luck.

Reply via email to