Доступ к библиотекам / компонентам .NET / dll из Java? - PullRequest
6 голосов
/ 07 января 2009

Есть ли недорогие или бесплатные шлюзы из .NET в Java? Я смотрю на некоторые аппаратные средства сбора данных, которые имеют драйверы для C / C ++ и .NET - я действительно не хочу заниматься программированием в .NET.

Обновление: я не сделал то, что первоначально хотел сделать, но я сделал нечто подобное, используя JNA для инкапсуляции некоторых функций из DLL, чтобы управлять аппаратным устройством USB из Java. (DLL поставляется от производителя устройства). Спасибо!

Ответы [ 6 ]

8 голосов
/ 07 января 2009

Вы также можете попробовать использовать JNA для доступа к собственной библиотеке. JNA обеспечивает Java-программам легкий доступ к собственным разделяемым библиотекам (DLL в Windows) без написания чего-либо, кроме кода Java - не требуется JNI или собственный код Если их API довольно прямой, это может быть путь наименьшего сопротивления.

См. Их руководство по началу работы , где они вызывают некоторый нативный код (printf и GetSystemTime).

4 голосов
/ 07 января 2009

Ну, есть JNBridge и EZ JCom , только из поиска Google.

Вы также можете использовать IKVM , что немного отличается.

(Любая причина, по которой вы не хотите изучать .NET, из интереса? Это хорошая платформа, а C # - прекрасный язык ...)

2 голосов
/ 07 января 2009

Если у них есть версии драйверов для C ++, вы можете написать обертку вокруг нее, используя JNI, а затем загрузить ее в Java. JNI может быть немного болезненным, но это позволит вам использовать версию их драйверов на C ++ и вообще не иметь дело с .Net, если вы не хотите.

1 голос
/ 07 января 2009

Я неравнодушен к рекомендации перейти к более глубокому концу с C #, так как он очень похож на Java. Я сделал это и использовал IKVM для компиляции моих любимых библиотек Java. к сборкам .NET, и вы получаете [почти] все основные классы среды выполнения Java для загрузки, поэтому, если вы устали пытаться найти только правильный тип коллекции C #, вы всегда можете вернуться к java.util. (Нет общих коллекций. Не знаю почему.)

В зависимости от того, на какой платформе вы находитесь, у вас есть несколько вариантов бесплатных IDE. Для Windows вы можете получить Visual Studio Express бесплатно, но я также использую SharpDevelop . Вы также можете получить Mono IDE для Linux (и несколько разновидностей Unix, я думаю?).

Кривая изучения C # невелика, если вы уже знаете Java. Я взорвал только 1,5 конечности на наземных минах, которые возникли из ниоткуда по причинам, которые я до сих пор не понимаю, но обходные пути были легко найти. Худшая вещь об этом была чертовыми документами для разработчиков, которые AWFUL из-за их медлительности. Я действительно скучаю по Snappiness JavaDoc. Мало того, что онлайновые документы невероятно медленны, проблема усугубляется сомнительным решением кого-то разместить сводки классов, конструкторы и методы / свойства на отдельных страницах, так что это занимает всегда. Кто-то сказал, чтобы получить установщик документации и установить документы локально для немного улучшенного опыта. Думаю, неплохая идея.

0 голосов
/ 31 октября 2009

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

0 голосов
/ 07 января 2009

Если у вас есть Java-приложение, JNI, упомянутый другими, будет подходящим вариантом. Вы пишете несколько классов-обёрток, и всё.

Если написание оберток - слишком сложная задача (в зависимости от количества методов, которые нужно обернуть), взгляните на SWIG . Я думаю, что он генерирует оболочки автоматически, но я никогда не использовал его.

Если вы хотите кодировать на языке Java, но вам все равно, будет ли ваша программа работать на JRE / JVM, то вы также можете использовать Microsoft J #. По сути, он пишет Java-код, который скомпилирован в .NET-Bytecode и может использовать классы .NET драйвера, а также существующие классы Java. С J # вы столкнетесь с проблемами, если ваш существующий Java-код новее, чем Java 1.4, посмотрите этот вопрос о том, как их решить.

С этого момента вы можете позже добавить код на J #, C # или любом другом языке .NET. Однако вы не сможете легко вернуться к JRE / JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...