Hi Mario,<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">Ok. I have two main changes, that would make sense to include in your<br>
SVN without too much pain or potential downsides:<br></blockquote>
<br>Both of these changes are great and make perfect sense, thanks! I created an SVN account for you (credentials sent in a private mail).<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">

I&#39;m still very interested in a more elaborate library for RPC, but at<br>
the same time I like the fact that it is very lightweight. I will give<br>
ZeroC ICE a thought (or try), and let you know how it goes.<br></blockquote><br>OK. The OME team has used ICE a lot, so feel free to write back to ome-devel with your experiences.<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">

I tried [GCJ] once, but failed, due to my lack of ANT-knowledge. Maybe I&#39;ll try again.<br></blockquote><br>We tried it briefly with ImageJ, and were able to compile and run it, though there were some crashes with the user interface. But for Bio-Formats it may not be an issue. But it would take some time to explore. Fortunately, you should not need to know about Ant—you can compile a .jar file to a .so, for example, using gcc.<br>

<br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">Great, thanks! Lets start with me updating the JVMLink, and go from there.<br></blockquote>

<br>Sounds good. I&#39;m glad JVMLink is useful to your project. :-)<br><br>Regards,<br>Curtis<br><br><br><div class="gmail_quote">On Thu, Nov 17, 2011 at 7:09 AM, Mario Emmenlauer <span dir="ltr">&lt;<a href="mailto:mario@emmenlauer.de">mario@emmenlauer.de</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
Hi Curtis,<br>
<br>
thanks for the nice email, and good to see you&#39;re well! Below more:<br>
<div class="im"><br>
&gt; Good to hear from you! I am CCing the OME-devel list, since this<br>
&gt; conversation may be of interest to others.<br>
&gt;<br>
&gt; I looked at your Jvmlink software, that makes an interface between C++ and<br>
&gt;&gt; Java via sockets. I had to adapt the code for Unix (Linux, to be more<br>
&gt;&gt; precise). Are you still interested in maintaining this code? Are there<br>
&gt;&gt; newer<br>
&gt;&gt; versions than the one from LOCI SVN (in legacy subtree)?<br>
&gt;&gt;<br>
&gt;<br>
&gt; The short answer is: I am not interested in maintaining the JVMLink code.<br>
&gt; And there is not a newer version that what you found in SVN. (But I would<br>
&gt; be happy to give you commit access to the LOCI SVN repository, if you<br>
&gt; would<br>
&gt; like to commit your changes to the codebase!)<br>
<br>
</div>Ok. I have two main changes, that would make sense to include in your<br>
SVN without too much pain or potential downsides:<br>
(1) I made all network transfers a lot faster by using the byte-writer<br>
    in Java. I&#39;m not a Java-pro, so my implementation might still be<br>
    suboptimal. But at least it improves transfer speed from several<br>
    kbyte / sec to several Mbyte / sec at no additional cost.<br>
(2) All code now works on Linux, with identical functionality as the<br>
    Windows code previously had. This comes without modifying the<br>
    Windows code (using ifdef _WIN32 where appropriate), so again there<br>
    should be no downside of adding my changes.<br>
<div class="im"><br>
&gt; The reason is: there are a plethora of ways to enable inter-process<br>
&gt; communication between C++ and Java (as well as a slew of other languages):<br>
&gt; ZeroC Ice (as I mentioned to you in Paris); Apache Thrift, Hessian, Etch,<br>
&gt; zeromq, Gearman... it&#39;s a long list. JVMLink was written from scratch and<br>
&gt; makes NO considerations for security, which is of central importance when<br>
&gt; utilizing the network stack. All of the aforementioned tools provide a<br>
&gt; mechanism to avoid globally exposing your application over the network,<br>
&gt; unlike JVMLink. And all of them have had a lot more development time and<br>
&gt; design work focusing on performance, usability, etc.—which we simply<br>
&gt; cannot<br>
&gt; match for an unfunded one-off project like JVMLink.<br>
&gt;<br>
&gt; What I want to do in the future is provide better cross-language<br>
&gt; inter-process access to Bio-Formats. As I said in Paris, Bio-Formats Ice<br>
&gt; bindings would be nice, if I had any time to work on them. But right now I<br>
&gt; am too busy with ImageJ2.<br>
<br>
</div>I&#39;m still very interested in a more elaborate library for RPC, but at<br>
the same time I like the fact that it is very lightweight. I will give<br>
ZeroC ICE a thought (or try), and let you know how it goes.<br>
<div class="im"><br>
<br>
&gt; Another vital area to explore is compiling Bio-Formats with GCJ so that<br>
&gt; you<br>
&gt; can use it as native code. GCJ has been around for 15+ years and gotten<br>
&gt; quite good. Have you tried it?<br>
<br>
</div>That sounds like a great idea. I tried it once, but failed, due to<br>
my lack of ANT-knowledge. Maybe I&#39;ll try again.<br>
<div class="im"><br>
<br>
&gt; The good news is that even though I personally do not have time, the OME<br>
&gt; team now has funding to pursue these things, and is currently hiring. So<br>
&gt; hopefully we will finally see substantial progress in coming months.<br>
&gt;<br>
&gt; Again, I would be happy to grant you commit access to JVMLink so that you<br>
&gt; can hack away, if you still decide to use it going forward. I just wanted<br>
&gt; to fill you in on our perspective, and why we haven&#39;t developed it<br>
&gt; further.<br>
<br>
</div>Great, thanks! Lets start with me updating the JVMLink, and go from<br>
there. All the best from Basel,<br>
<br>
    Mario<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
&gt; Regards,<br>
&gt; Curtis<br>
&gt;<br>
&gt;<br>
&gt; On Thu, Nov 10, 2011 at 6:12 AM, Mario Emmenlauer<br>
&gt; &lt;<a href="mailto:mario@emmenlauer.de">mario@emmenlauer.de</a>&gt;wrote:<br>
&gt;<br>
&gt;&gt; Dear Curtis,<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m picking up on an old talk here, we had at the OME UGM 2010 in Paris.<br>
&gt;&gt; I looked at your Jvmlink software, that makes an interface between C++<br>
&gt;&gt; and<br>
&gt;&gt; Java via sockets. I had to adapt the code for Unix (Linux, to be more<br>
&gt;&gt; precise). Are you still interested in maintaining this code? Are there<br>
&gt;&gt; newer<br>
&gt;&gt; versions than the one from LOCI SVN (in legacy subtree)?<br>
&gt;&gt;<br>
&gt;&gt; Attached you can find a work-in-progress. Its your code, with some<br>
&gt;&gt; extensions for Unix. I have made some smaller changes in other places as<br>
&gt;&gt; well, for example const&#39;ed some strings where possible. A main<br>
&gt;&gt; difference<br>
&gt;&gt; is to use a call to &quot;write(byte[], ...)&quot; in Java that writes the full<br>
&gt;&gt; byte[] array in one go (as opposed to byte-wise). This speeds up large<br>
&gt;&gt; transmissions thousandfold!<br>
&gt;&gt;<br>
&gt;&gt; If you like my code, please add it to your SVN for distribution. But<br>
&gt;&gt; beware, it is work in progress, and I checked it only on Linux. I did<br>
&gt;&gt; not<br>
&gt;&gt; check it on Windows (yet), I might have accidentally broken something.<br>
&gt;&gt;<br>
&gt;&gt; Anyways, all feedback from you is very welcome! Let me know if there are<br>
&gt;&gt; newer versions of your code, or if you know better libraries to fill<br>
&gt;&gt; this<br>
&gt;&gt; gap. Also let me know if you want to be informed about my changes at all<br>
&gt;&gt; :-)<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt;<br>
&gt;&gt;    Mario (from XuvTools / libBlitzBioFormats)<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
<br>
<br>
</div></div></blockquote></div><br>