On Fri, Apr 10, 2015 at 1:49 PM, Nick Hill <[email protected]> wrote:
> > My understanding was that the heap organization in Java was made to >>> resemble that in the UIMA C++ implementation and allowed for fast data >>> exchange between Java and C++. That is why I was asking about the fate of >>> UIMA C++. Again, maybe Marshall or Eddie can comment here. >>> >>> >> Correct. Historically the C++ version preceded Java and interoperability >> influenced the Java design. Given the limitations of running C++ in the >> JNI, my inclination is to improve interprocess serialization performance >> between Java and C++, perhaps using compressed binary form 6, delta CAS >> and CAS projections. This would mean standardizing on CAS interchange >> format is much more important than the in-memory implementation. >> > > My assumption was that the overwhelming majority of UIMA usage was > java-based. Is this a valid assumption? The only C++ related UIMA > integration I have seen has been JNI within a Java annotator/pipeline, > which completely bypasses the UIMA C++ framework anyhow (which also has the > advantage of minimizing the amount of data which is "interchanged"). > Based on this I would not think it makes sense for the java impl to pay > the heavy price of code footprint/complexity, reduced flexibility, etc (as > previously enumerated) just to provide potentially faster data-interchange > between java and C++? > > UIMACPP comes with two interfaces to a Java pipeline. There is a JNI interface that instantiates the C++ annotator at init and uses a binary serialization of the CAS thru the JNI on each process call. Among the limitations of the JNI implementation are that all C++ annotators have to use the same version of UIMACPP. Running C++ code under Java can be problematic, independent of the JNI interface itself. The second interface to UIMACPP uses a native C++ UIMA-AS service wrapper which exchanges XmiCas data with the Java client. With this wrapper the entire process is native code. No idea how widely uimacpp is used, but there was a recent question asking if uima v2.7.0 was still compatible. It is. Eddie
