Stuart commented on the previous item: ...That leaves #2, which seems hard to me. At the very least, it seems like it would require changes to the Java language compiler to interpret (at least metadata from) .NET classes and allow for those to be in the CLASSPATH at compilation time. Is that something you're interested in pursuing as part of IKVM, or do you regard it as a separate problem?
The way I plan to go about this, is to create a tool that generates jar files from .NET assemblies. The jar will contain all the public classes & interfaces from the .NET assembly, and all the methods will appear to be native. Standard Java compilers can then be used to compile against .NET code. The IK.VM will be aware of these special classes (they will contain an attribute to specify the fully qualified .NET type name) and reroute all access to these wrappers to the real .NET types. I haven't built any of this, but I don't expect any problems.
That's an extremely clever and elegant solution which sounds like it would lead to completely accomplishing exactly what I had hoped would happen. It sounds like IK.VM is going to be much more than just a JVM for .NET - it'll be what J# could and should have been, a true implementation of Java as a .NET language on a parallel with C#, VB, and all the others. The implications are staggering: I can imagine running JBoss and Tomcat on IK.VM on Mono on Linux, talking to components written in C#. Or Mono's fledgling ASP.NET support working with Java code in the ASPX pages and EJBs written in VB.NET running in the lower tiers. Or using GTK# from Java or SWT from C#. And no more need for pointless ports like NAnt and NUnit, because the .NET version can be built from the Java code with a simple configure option (this might actually be the most immediate and compelling benefit).
Can you tell I'm excited about this project? :)
I apologize for the lameness of this, but the comment spam was driving me nuts.
In order to be able to post a comment, you need to answer a simple question. Hopefully this question
is easy enough not to annoy serious commenters, but hard enough to keep the spammers away.
Anti-Spam Question: What method on java.lang.System returns an object's original hashcode (i.e. the
one that would be returned by java.lang.Object.hashCode() if it wasn't overridden)? (case is significant)
Powered by: newtelligence dasBlog 2.3.12105.0
© Copyright 2017, Jeroen Frijters