Archived

This forum has been archived. Please start a new discussion on GitHub.

ICE for C# -- Cutting down development time

Hello ICE Gurus

First I thought of emailing this to Michi (as I normally do :-)) but then realized the entire ICE gang might be able to think of some cool uses for this. Permit me to briefly mention something about this post.

This particular project has been around for a long time -- Its called IKVM.NET.
<project_info>
The author (Jeroen Frijters) maintains a Weblog
The project is available over at SourceForge
</project_info>

Its basically a Java VM for .NET. Its hard to put what it does in one sentence but I believe it takes a .JAR or a .CLASS file and maps the Java bytecode to equivalent .NET CIL instructions *dynamically*. I think thats the 10,000 foot view.

Now that Michi has publicly stated that he is working on implementing ICE natively in C#, I was wondering if you guys might take up some elements of what you already have in ICE for Java and simply create a .NET assembly out of them using IKVM.NET.

That might help reduce development time. I mean, exactly what part of the various ICE modules you guys decide to use for this purpose is left to you.

Ultimately whether you use it at all, I just thought I'd point it out anyway.

Let me know what you guys think.

--Dilip

Comments

  • Re: ICE for C# -- Cutting down development time
    Originally posted by rdilipk

    Now that Michi has publicly stated that he is working on implementing ICE natively in C#, I was wondering if you guys might take up some elements of what you already have in ICE for Java and simply create a .NET assembly out of them using IKVM.NET.

    Hi Dilip,

    we decided early on that we wanted a native implementation in C#, just as we have a native implementation in Java. (BTW, both Ice for Java and Ice for C# could also have been implemented by just bolting a language mapping on top of the C++ run-time libraries.) A native implementation has a few advantages, especially when it comes to building and deploying Ice: people are not dependent on pre-compiled binary components and, if they want to build Ice from scratch, they don't need a second development environment for another language.

    Cheers,

    Michi.
  • we decided early on that we wanted a native implementation in C#, just as we have a native implementation in Java

    Michi

    I understand completely. I guess I didn't communicate properly the power of IKVM.NET. I *think* that java bytecodes are mapped to their *equivalent* MSIL instructions and an assembly created from that. If you reverse engineer the assembly using popular tools like Reflector (http://www.aisto.com/roeder/dotnet/) you'd get some amazingly concise C# code that would be almost identical to what you would've come up with had you coded from scratch.

    I may be way off-base here -- so feel free to correct me in your usual merciless style!

    --Dilip
  • Hmmm... Reading through some of the doc, it appears that things aren't quite complete yet. There are issues around finalizers and weak references, for example.

    Regardless, there is also the issue of basing a commercial product on an alpha version of a single-person open source project. I'm nervous about having a crucial dependency in Ice on a tool that hasn't been established all that well yet...

    I'll have a closer look anyway though :)

    Cheers,

    Michi.