<?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: Beyond Web Services, a look at bridging Java/.NET apps</title>
	<link>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/</link>
	<description></description>
	<pubDate>Fri, 25 Jul 2008 13:58:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=wordpress-mu-1.0</generator>

	<item>
		<title>by: Vitaly</title>
		<link>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-227</link>
		<pubDate>Wed, 27 Dec 2006 21:48:40 +0000</pubDate>
		<guid>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-227</guid>
					<description>IKVM is mimicry to Java but not a Java technology.</description>
		<content:encoded><![CDATA[<p>IKVM is mimicry to Java but not a Java technology.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: mike</title>
		<link>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-226</link>
		<pubDate>Fri, 22 Dec 2006 16:46:08 +0000</pubDate>
		<guid>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-226</guid>
					<description>please try also IKVM (convert jars to dll etc.) 
http://www.ikvm.net</description>
		<content:encoded><![CDATA[<p>please try also IKVM (convert jars to dll etc.)<br />
<a href='http://www.ikvm.net' rel='nofollow'>http://www.ikvm.net</a>
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Vitaly</title>
		<link>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-225</link>
		<pubDate>Fri, 22 Dec 2006 15:52:37 +0000</pubDate>
		<guid>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-225</guid>
					<description>Some people say Java/.NET interoperability can be based on Web technologies:
•        Quality of Service – WS-Reliable Messaging, WS-Coordination, WS-Transactions 
•        Security – WS-Security, WS-Trust, WS-Secure Conversation, WS-Security Policy 
•        Metadata – WSDL, XML Schema, WS-Policy, WS-Metadata Exchange  
•        Messaging – SOAP, WS-Addressing, Message Transmission Optimization Mechanism (MTOM) 
The purpose of this interoperability type is supporting common protocols and means to interface Java and .NET systems (like J2EE, BizTalk, etc.) in MS Windows or other OS types. This approach is useful for development products based on existing WEB or Application Severs (e.g. composite applications). But it does not good enough in use of legacy Java and .NET codes used in development new products and standalone applications when embedding of Java-to-.NET or .NET-to-Java needed. 
I found articles where written that sometimes enough only resource (or data) interoperability. There are two known resource interoperability: memory and database. Such interoperability implies availability of some mediator, which supports access to the common resource (memory, database).
What suggests Jack is the Java/.NET interoperability based on bridging. Here you can use JNBridge, j-Integra (based on CORBA), COM Bridges that use option of conversion .NET modules to COM modules, etc. And here I agree with Jack that ‘lets the Java do java, and the .NET do .NET.’ Everything done in Web interoperability can be implemented with bridging and Java part interacts through Web with Java, .NET code interacts through Web with .NET.
I agree that “Developers want to access their Java code from .NET, or vice versa” but bridging is a huge overhead. Maybe be better to have some JNI SDK but for .NET. Having it we can develop tools that automate JNI code writing by generating Java class wrappers in .NET. Our company issued &lt;a href="http://www.simtel.net/product.php[id]95126[SiteID]simtel.net" rel="nofollow"&gt; Object-Oriented JNI SDK for .NET &lt;/a&gt;. Why Object-Oriented? Because .NET is object-oriented and some part of regular JNI for C/C++ can be simplified by making simple classes: JClass, JObject, JString, Java array classes (to handle all type Java arrays including multi-dimensional), etc. that hides the most routine code written to convert jstring to/from String, creating and deleting Java references, tracing thread contexts while use of JNI methods, etc.</description>
		<content:encoded><![CDATA[<p>Some people say Java/.NET interoperability can be based on Web technologies:<br />
•        Quality of Service – WS-Reliable Messaging, WS-Coordination, WS-Transactions<br />
•        Security – WS-Security, WS-Trust, WS-Secure Conversation, WS-Security Policy<br />
•        Metadata – WSDL, XML Schema, WS-Policy, WS-Metadata Exchange<br />
•        Messaging – SOAP, WS-Addressing, Message Transmission Optimization Mechanism (MTOM)<br />
The purpose of this interoperability type is supporting common protocols and means to interface Java and .NET systems (like J2EE, BizTalk, etc.) in MS Windows or other OS types. This approach is useful for development products based on existing WEB or Application Severs (e.g. composite applications). But it does not good enough in use of legacy Java and .NET codes used in development new products and standalone applications when embedding of Java-to-.NET or .NET-to-Java needed.<br />
I found articles where written that sometimes enough only resource (or data) interoperability. There are two known resource interoperability: memory and database. Such interoperability implies availability of some mediator, which supports access to the common resource (memory, database).<br />
What suggests Jack is the Java/.NET interoperability based on bridging. Here you can use JNBridge, j-Integra (based on CORBA), COM Bridges that use option of conversion .NET modules to COM modules, etc. And here I agree with Jack that ‘lets the Java do java, and the .NET do .NET.’ Everything done in Web interoperability can be implemented with bridging and Java part interacts through Web with Java, .NET code interacts through Web with .NET.<br />
I agree that “Developers want to access their Java code from .NET, or vice versa” but bridging is a huge overhead. Maybe be better to have some JNI SDK but for .NET. Having it we can develop tools that automate JNI code writing by generating Java class wrappers in .NET. Our company issued <a href="http://www.simtel.net/product.php[id]95126[SiteID]simtel.net" rel="nofollow"> Object-Oriented JNI SDK for .NET </a>. Why Object-Oriented? Because .NET is object-oriented and some part of regular JNI for C/C++ can be simplified by making simple classes: JClass, JObject, JString, Java array classes (to handle all type Java arrays including multi-dimensional), etc. that hides the most routine code written to convert jstring to/from String, creating and deleting Java references, tracing thread contexts while use of JNI methods, etc.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Jack Webb</title>
		<link>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-224</link>
		<pubDate>Thu, 21 Dec 2006 19:17:35 +0000</pubDate>
		<guid>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-224</guid>
					<description>I sort of gave up worrying about overhead in the past. So many times the hardware caught up with the new bloated [object] software. But maybe with Web services and verbose XML the pendulum is turning. Many apps, I would think, cannot afford a hardware accelerator - which is what I understand IBM's DataPower box to be.</description>
		<content:encoded><![CDATA[<p>I sort of gave up worrying about overhead in the past. So many times the hardware caught up with the new bloated [object] software. But maybe with Web services and verbose XML the pendulum is turning. Many apps, I would think, cannot afford a hardware accelerator - which is what I understand IBM&#8217;s DataPower box to be.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: avi</title>
		<link>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-223</link>
		<pubDate>Wed, 13 Dec 2006 12:12:29 +0000</pubDate>
		<guid>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-223</guid>
					<description>Did you look at the price page?

instead, try ice library from: .zeroc.
it is: free parallel and cross platform.</description>
		<content:encoded><![CDATA[<p>Did you look at the price page?</p>
<p>instead, try ice library from: .zeroc.<br />
it is: free parallel and cross platform.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Peter Abramowitsch</title>
		<link>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-222</link>
		<pubDate>Tue, 12 Dec 2006 23:58:09 +0000</pubDate>
		<guid>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-222</guid>
					<description>Just a reminder that Intrinsyc's JA.Net has been providing this same functionality for several years now.

We have a large hybrid desktop app (Java and DotNet) and marshal xmlized business objects through the bridge bidirectionally.  Since it's all handled between processes on the client machine, the overhead of the bytestream version of the object is nil and response time is instantaneous.

There are many ways this bridging can be deployed but we've chosen serializarion via xml so that the bridge is only used for native data types like string or long.  JA.Net is also capable of serializing and unserializing data structures, but there's more overhead with complex recursive object graphs if you approach the problem generically as they would have to do.

- Peter</description>
		<content:encoded><![CDATA[<p>Just a reminder that Intrinsyc&#8217;s JA.Net has been providing this same functionality for several years now.</p>
<p>We have a large hybrid desktop app (Java and DotNet) and marshal xmlized business objects through the bridge bidirectionally.  Since it&#8217;s all handled between processes on the client machine, the overhead of the bytestream version of the object is nil and response time is instantaneous.</p>
<p>There are many ways this bridging can be deployed but we&#8217;ve chosen serializarion via xml so that the bridge is only used for native data types like string or long.  JA.Net is also capable of serializing and unserializing data structures, but there&#8217;s more overhead with complex recursive object graphs if you approach the problem generically as they would have to do.</p>
<p>- Peter
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Max Kington</title>
		<link>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-221</link>
		<pubDate>Tue, 12 Dec 2006 18:08:43 +0000</pubDate>
		<guid>http://tssblog.blogs.techtarget.com/2006/12/07/beyond-web-services-a-look-at-bridging-javanet-apps/#comment-221</guid>
					<description>I don't think the fundemental problem is the metaphor. With a mechanism for moving data anyone could provide those "things that programmers do every day".  What people really want is a binary protocol so they can feel all warm and fuzzy about it skipping along at warp speed and not being so "tied to ASCII".

What I could do with is CORBA, which is as easy to use, understand and administer as WebServices with similar quality of tool support.

CORBA did an excellent job of the mapping, all the way from endieneness to logical Object abstractions.  However, as anyone who has ever had to use CORBA in anger will tell you the tools were terrible, the vendors runtimes buggy and in an effort to universally solve this mapping problem it was hugely complex.

WebServices have, through good tool support and the simplicity of the underlying transport (I think most people when they got into webservices did it over http, even if these days people are putting more envelopes on message buses), taken off, people use them. But the simplicity and clarity is an overhead, run a webservice endpoint and profile how much time is being spent marshalling and demarshalling the XML. For some applications I've worked on it's crippling, IBM buying DataPower was a shrewd move.

If you want to have a go at building a simple interop library, port Java DataInput/OutputStreams to C# (the source is now GPLd), that takes about 20 minutes. Then decide that you order your attributes alphabetically and write them to the stream, remember you have a way of sending all the primitive structures (and Unicode strings).   At this point there is nothing stopping you from reading this data back into a set of C structs, if you understand the order of the stream.  In your OO language of choice the next thing is identify the object you rehydrate your serialized representations into, use a class name, a version number, whatever you like. 

There are standards for bytes which you can layer ontop of these things on a case by case basis, need IEEE-754 number representations? Use it.

Last but not least, throw in a code generator, (have a look at GRAM) to get from one source representation to another.

Job, as they say, is a good'en.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think the fundemental problem is the metaphor. With a mechanism for moving data anyone could provide those &#8220;things that programmers do every day&#8221;.  What people really want is a binary protocol so they can feel all warm and fuzzy about it skipping along at warp speed and not being so &#8220;tied to ASCII&#8221;.</p>
<p>What I could do with is CORBA, which is as easy to use, understand and administer as WebServices with similar quality of tool support.</p>
<p>CORBA did an excellent job of the mapping, all the way from endieneness to logical Object abstractions.  However, as anyone who has ever had to use CORBA in anger will tell you the tools were terrible, the vendors runtimes buggy and in an effort to universally solve this mapping problem it was hugely complex.</p>
<p>WebServices have, through good tool support and the simplicity of the underlying transport (I think most people when they got into webservices did it over http, even if these days people are putting more envelopes on message buses), taken off, people use them. But the simplicity and clarity is an overhead, run a webservice endpoint and profile how much time is being spent marshalling and demarshalling the XML. For some applications I&#8217;ve worked on it&#8217;s crippling, IBM buying DataPower was a shrewd move.</p>
<p>If you want to have a go at building a simple interop library, port Java DataInput/OutputStreams to C# (the source is now GPLd), that takes about 20 minutes. Then decide that you order your attributes alphabetically and write them to the stream, remember you have a way of sending all the primitive structures (and Unicode strings).   At this point there is nothing stopping you from reading this data back into a set of C structs, if you understand the order of the stream.  In your OO language of choice the next thing is identify the object you rehydrate your serialized representations into, use a class name, a version number, whatever you like. </p>
<p>There are standards for bytes which you can layer ontop of these things on a case by case basis, need IEEE-754 number representations? Use it.</p>
<p>Last but not least, throw in a code generator, (have a look at GRAM) to get from one source representation to another.</p>
<p>Job, as they say, is a good&#8217;en.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
