2008-10-05 4 views
5

У меня есть проект, написанный на Java (> 1.5).Использование Java-классов с C#

Можно ли написать части проекта с помощью C#?
Например, GUI и вызов методов и создание экземпляров классов, написанных в java?

Если да, то как?

ответ

6

Существует что-то, что называется Java Language Conversion Assistant для .NET. Вы можете преобразовать свои классы Java в C# и начать кодирование.

Существует также что-то, что называется JNBridge (не бесплатно).

9

Не с чем-то вроде ikvm - или с помощью веб-сервисов и т. Д. Для связи между двумя сторонами. В основном это, скорее всего, будет гораздо больше работы, чем переписывание существующего кода проекта на C# или запись графического интерфейса на Java.

+0

Можете ли вы объяснить, почему это невозможно с помощью dll? Перезапись - это вариант для небольшой перезаписи проекта на 100 000 строк, например, может быть дорогостоящим ... – Ilya 2008-10-05 12:56:54

+0

Вам нужно будет запускать как CLR, так и JVM - и две виртуальные машины не знают друг о друге. – 2008-10-05 14:08:29

+0

То есть, ответ Илья не работает? – Burkhard 2008-10-05 17:09:47

4

Похоже, мое решение очень ограничено. и применяются только к конкретной версии java.

Я, вероятно, будет оставаться со старым хорошим C :) Не могу себе представить, как работать без разделяемых библиотек :)

document Это объясняет, как создать DLL из Java и использовать его в коде C. Я не эксперт по C# или java, но я уверен, что вы также можете загружать внешние dll на C#. Так что не полное решение, но хорошая отправная точка, ИМХО. Обычно dll - идеальный способ для смешивания языков.

2

В простой форме вы можете упаковать ваши Java-классы в банке файл, то В C# использовании Process класса для выполнения и отображения ввода-вывода поток

0

Я сделал некоторые исследования по этому вопросу несколько лет назад (2005 г. я считаю) и мне понравился JNBridgePro как лучший сторонний продукт для этого. Посмотрите здесь http://www.jnbridge.com/

Удачи!

17

Я автор jni4net, внутрипроцессный мост с открытым исходным кодом между JVM и CLR. Он построен поверх JNI и PInvoke. Не требуется код C/C++. Надеюсь, это поможет вам.

Смежные вопросы