<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/wordpress-mu-1.0" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Interop Across the Wire</title>
	<link>http://tssblog.blogs.techtarget.com/2006/11/16/interop-across-the-wire/</link>
	<description></description>
	<pubDate>Wed, 25 Nov 2009 02:50:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=wordpress-mu-1.0</generator>

	<item>
		<title>by: Wayne Citrin</title>
		<link>http://tssblog.blogs.techtarget.com/2006/11/16/interop-across-the-wire/#comment-91</link>
		<pubDate>Fri, 17 Nov 2006 07:00:43 +0000</pubDate>
		<guid>http://tssblog.blogs.techtarget.com/2006/11/16/interop-across-the-wire/#comment-91</guid>
					<description>Ted --

Thanks for writing about JNBridgePro.  I do have a couple of comments on the interop post.

- You mention that J-Integra is ".NET-friendly" and we (JNBridgePro) are the opposite.  (Presumably, "Java-friendly".)  I don't think that's the case, since (1) our proxy tool is written in .NET, and J-Integra's is written in Java, and (2) J-Integra exposes the low-level details of .NET Remoting to the user, while we hide those details (which is friendly no matter where your development experience lies).  In any case, we try to make the product user-friendly whether your background is in Java or in .NET.

- While both JNBridgePro and J-Integra both use .NET Remoting, there are more differences between the two products than might be evident from your post.  Enumerating them is beyond the scope of this comment, but one that jumps out from your J-Integra example is that for Java-calling-.NET scenarios, J-Integra requires that the accessed objects be .NET-Remotable components: either MarshalByRefObject (if they're being accessed by reference) or ISerializable (if they're being accessed by value).JNBridgePro allows the Java code to call _any_ .NET object (MarshalByRefObject, ISerializable, or anything else).

- Similarly, for .NET-to-Java directions, with JNBridgePro the .NET code can access _any_ Java object or class; it doesn't need to be RMI-remotable.

- The "in-process" vs. "RPC-interop"/"across-the-wire" dichotomy doesn't entirely hold up.  (You do touch upon this at the end of your post, but I wanted to elaborate.)  While JNBridgePro does support "across-the-wire" (what we call "socket-based") interop, as you mention we also offer a shared-memory communications mechanism that allows the CLR and the JVM to run in process.  This mechanism is very popular with our users, and is much faster than the socket-based approach.  (You're correct that it still needs to go through the marshalling/unmarshalling mechanism, so there's overhead, but you avoid the overhead of traversing the socket stack and doing process switching.)  Unlike IKVM, our shared-memory approach is still a bridging solution, and still uses .NET Remoting, which is evidence of the power and flexibility of the .NET Remoting mechanism.

- Thanks for pointing out the GUI-embedding blog entry.  The support code mentioned in that blog entry has now been integrated into our new version 3.1, which makes this type of embedding a lot simpler.  We've updated the blog entry to reflect that.

Wayne</description>
		<content:encoded><![CDATA[<p>Ted &#8211;</p>
<p>Thanks for writing about JNBridgePro.  I do have a couple of comments on the interop post.</p>
<p>- You mention that J-Integra is &#8220;.NET-friendly&#8221; and we (JNBridgePro) are the opposite.  (Presumably, &#8220;Java-friendly&#8221;.)  I don&#8217;t think that&#8217;s the case, since (1) our proxy tool is written in .NET, and J-Integra&#8217;s is written in Java, and (2) J-Integra exposes the low-level details of .NET Remoting to the user, while we hide those details (which is friendly no matter where your development experience lies).  In any case, we try to make the product user-friendly whether your background is in Java or in .NET.</p>
<p>- While both JNBridgePro and J-Integra both use .NET Remoting, there are more differences between the two products than might be evident from your post.  Enumerating them is beyond the scope of this comment, but one that jumps out from your J-Integra example is that for Java-calling-.NET scenarios, J-Integra requires that the accessed objects be .NET-Remotable components: either MarshalByRefObject (if they&#8217;re being accessed by reference) or ISerializable (if they&#8217;re being accessed by value).JNBridgePro allows the Java code to call _any_ .NET object (MarshalByRefObject, ISerializable, or anything else).</p>
<p>- Similarly, for .NET-to-Java directions, with JNBridgePro the .NET code can access _any_ Java object or class; it doesn&#8217;t need to be RMI-remotable.</p>
<p>- The &#8220;in-process&#8221; vs. &#8220;RPC-interop&#8221;/&#8221;across-the-wire&#8221; dichotomy doesn&#8217;t entirely hold up.  (You do touch upon this at the end of your post, but I wanted to elaborate.)  While JNBridgePro does support &#8220;across-the-wire&#8221; (what we call &#8220;socket-based&#822 <img src='http://tssblog.blogs.techtarget.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> interop, as you mention we also offer a shared-memory communications mechanism that allows the CLR and the JVM to run in process.  This mechanism is very popular with our users, and is much faster than the socket-based approach.  (You&#8217;re correct that it still needs to go through the marshalling/unmarshalling mechanism, so there&#8217;s overhead, but you avoid the overhead of traversing the socket stack and doing process switching.)  Unlike IKVM, our shared-memory approach is still a bridging solution, and still uses .NET Remoting, which is evidence of the power and flexibility of the .NET Remoting mechanism.</p>
<p>- Thanks for pointing out the GUI-embedding blog entry.  The support code mentioned in that blog entry has now been integrated into our new version 3.1, which makes this type of embedding a lot simpler.  We&#8217;ve updated the blog entry to reflect that.</p>
<p>Wayne
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
