2011-07-01 10 views
6

Wiem, że mogę używać plików Lua Script do manipulowania obiektami Java przy użyciu bibliotek takich jak LuaJava. Miałem pomysł używania skryptów C# zamiast ~Skrypty # wewnątrz Java

Czy można uruchomić skrypty C# wewnątrz Java?

+0

C# nie jest naprawdę "skryptowy" język . – StriplingWarrior

+0

Jeśli o to chodzi, ściśle mówiąc, nie jest to także Java. JavaScript jest, Java nie jest i nie ma odpowiednika "skryptu C#". –

+2

@StriplingWarrior [Oczywiście, że jest!] (Http://www.doolwind.com/blog/why-you-ouldould-use-csharp-for-your-scripting-language/) – Justin

Odpowiedz

6

Teoretycznie tak - z pewnością można to zrobić w aplikacjach .Net i istnieją interakcje Java/.Net.

Zazwyczaj jednak interakcje Java/C# są wykonywane przez P/Invoke lub COM - oba są dość uciążliwe dla tego rodzaju rzeczy, więc w rzeczywistości prawdopodobnie nie będzie działać tak zgrabnie, jak mogłoby się wydawać.

Tak samo, jeśli chcesz to zrobić, prawdopodobnie zaleciłbym napisanie "silnika skryptów" (tj. Otoki kompilatora C#) w języku C#, a następnie udostępnienie go w Javie za pośrednictwem interopcji, na przykład:

public ScriptResult(string Script) 
{ 
    // Implemented in .Net 
    // Script is a string containing the C# code to execute 
} 

następnie należy dokładnie zastanowić się w jaki sposób C# skrypty będą mogli uzyskać dostęp do dowolnej funkcji Java-land, znowu sobie wyobrazić najlepszym sposobem byłoby zaimplementować klasy otoki .NET wywołuje obiekty Java poprzez interops.

Korzystanie z C# jako język skryptowy z poziomu aplikacji .NET jest zaskakująco prosta - dla informacji:

2

Czy programy C# są "skryptami"? Niezależnie od tego, możesz uruchomić większość programów zewnętrznych za pośrednictwem Runtime.exec (...), ale pamiętaj, aby obejrzeć pułapki: When Runtime.exec() won't.

Rzeczy stają się nieco bardziej skomplikowane, jeśli chcesz mieć dwukierunkową komunikację między C# i Javą, która może być wykonana przez proste gniazda/strumienie lub aż do interfejsów COM.