Vra

Dotnet CLR vat die taal-kode vir MSIL. Terwyl Java Kode omgeskakel word na inheemse kode wat platform onafhanklik. Kan ons hierdie MSIL om Native Kode te omskep? So die Dotnet outomaties platform onafhanklike sal word.

Was dit nuttig?

Oplossing

Wees versigtig oor jou terminologie hier:

  • Die CLR nie "taal-kode" te skakel na MSIL -. Dit vat MSIL om moedertaal-kode op die vlieg
  • Java-kode is nie omgeskakel word na "inheemse kode wat platform onafhanklike"; dit is 'n oksimoron. Java bronkode is omskep in 'n platform onafhanklike Java bytecode. Die JVM vat bytecode in inheemse kode op dieselfde manier as die CLR doen met MSIL (wel, tot 'n mate)

Let daarop dat beide MSIL en bytecode kan vertolk; HotSpot sal soms vertolk, soms net-betyds saamstel, en dikwels net-betyds Stel verskeie kere . Die NET lessenaar CLR altyd betyds stel 'n enkele keer op die oomblik.

Dit is ook die moeite werd om te verstaan ??dat bytecode is slegs platform onafhanklike tot die mate dat daar 'n JVM beskikbaar vir die platform wat jy belangstel in. Dieselfde geld vir MSIL. Jy kan 'n C # program saam te stel op Windows en dan loop dit op Linux onder Mono as is daar 'n opbou van Mono vir jou platform en as dit nie enige biblioteke wat sondaars gebruik 't beskikbaar op Mono.

Nou as vir die omskakeling van MSIL om Java bytecode ... die omgekeerde is meer haalbaar is, as MSIL is oor die algemeen sterker as Java bytecode. Byvoorbeeld, sou tipes en generiese persoonlike waarde in MSIL nie maklik vertaal in bytecode. Jy sou waarskynlik iets nader aan 'n CLR geskryf in Java nodig het. Ek waag om te sê daar is 'n paar slim moontlikhede, maar daar is fundamentele probleme daar. Selfs die omgekeerde is onwaarskynlik te wees maklik -. Veral as Java 7 stel dinamiese aanroeping om bytecode (terwyl dinamiese tik in NET word uitgevoer deur die DLR net as 'n biblioteek)

Ander wenke

Dit antwoord kan 'n bietjie offtopic, maar die moeite werd vermelding wees. MSIL om Java byte kode kan taai soos uiteengesit deur ander vraag te beantwoord. Maar jy kan sukses hanteer van een raamwerk na 'n ander op 'n bronkode vlak.

As jy 'n Java biblioteek wat jy wil gebruik in 'n NET aansoek - gebruik IKVM . Dit stel Java-kode in NET gemeentes met behulp van IKVMC, 'n Java bytecode om NET IL vertaler. Moet seker die lisensiëring terme voordat jy spring in die gebruik van hierdie!

Ook ek is nuuskierig om te weet of die omgekeerde is moontlik maw NET bronkode Java?

Ek kan jou vraag net gedeeltelik beantwoord.

Ja, MSIL kan omgeskakel word na inheemse kode behulp ngen.exe . In daardie geval, egter, verloor jy die vermoë om doeltreffend te bestuur op verskillende teiken argitektuur, bv 32 bit vs 64 bietjie. Ook, sal jy nodig het om verskeie weergawes te skep, een vir elke teiken platform.

Behalwe dat Ek stel voor die gebruik van antwoord Kurt se.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top