簡體   English   中英

從Java訪問.NET / dll庫/組件?

[英]Accessing .NET/dll libraries/components from Java?

是否存在從.NET到Java的廉價或免費網關? 我正在看一些具有C / C ++和.NET驅動程序的數據采集硬件-我真的不想在.NET中進行任何編程。

更新:我沒有做我最初想要做的事情,但是我做了類似的事情,使用JNA封裝DLL中的某些功能,以便從Java控制USB硬件設備。 (DLL來自設備制造商)它確實運行良好。 謝謝!

您也可以嘗試使用JNA訪問本機庫。 JNA使Java程序無需編寫Java代碼即可輕松訪問本機共享庫(Windows上的DLL),而無需編寫Java代碼-無需JNI或本機代碼。 如果他們的API很合理,這可能是阻力最小的途徑。

請參閱他們的入門指南 ,在其中可以調用一些本機代碼(printf和GetSystemTime)。

好吧,有JNBridgeEZ JCom ,僅來自Google搜索。

您也可以使用IKVM ,這是一種稍微不同的方法。

(出於任何興趣而不想學習.NET的原因嗎?這是一個很好的平台,而C#是一種可愛的語言...)

如果它們具有驅動程序的C ++版本,則可以使用JNI對其進行包裝,然后將其加載到Java中。 JNI可能會讓人有些痛苦,但是它會讓您使用C ++版本的驅動程序,並且如果不需要的話,完全不必使用.Net。

我偏愛使用C#的建議,因為它與Java非常相似。 我這樣做了,並使用IKVM編譯了我最喜歡的Java庫。 NET程序集,您幾乎可以啟動所有核心Java運行時類,因此,如果您厭倦了只尋找正確的C#集合類型的嘗試,則始終可以返回到java.util。 (盡管沒有通用集合。不確定為什么。)

根據您所使用的平台,您還可以選擇免費的IDE。 對於Windows,您可以免費獲得Visual Studio Express,但我也使用SharpDevelop 您還可以在Linux上獲得Mono IDE(我想還有幾種Unix)。

如果您已經了解Java,那么C#的學習曲線就會很淺。 我只是在地雷上炸掉了1.5條肢體,這是我至今仍不了解的原因,但還是很容易解決的。 最糟糕的是,開發人員文檔太慢了,因為速度太慢了。 我真的很想念JavaDoc的精妙之處。 不僅在線文檔的運行速度令人難以置信,而且有人將類摘要,構造函數和方法/屬性全部放在單獨的頁面上,使問題永久存在,這使問題變得更加復雜。 有人說可以獲取文檔安裝程序並在本地安裝文檔,以獲得稍微改善的體驗。 我想這不是一個壞主意。

我是jni4net的作者, jni4net是JVM和CLR之間的開源進程間橋。 它基於JNI和PInvoke。 無需C / C ++代碼。 希望對您有幫助。

如果您有Java應用程序,那么其他人提到的JNI將是您的最佳選擇。 您編寫了一些包裝器類,僅此而已。

如果編寫包裹很繁瑣(取決於必須包裹的方法數量),請查看SWIG 我認為它會自動生成包裝器,但我從未真正使用過它。

如果您想用Java語言編寫代碼,但是不管您的程序是否將在JRE / JVM上運行,那么您最好使用Microsoft J#。 基本上,它是在編寫Java代碼,該代碼將被編譯為.NET-Bytecode,並且可以使用驅動程序的.NET類以及您現有的Java類。 隨着J#如果現有的Java代碼比Java 1.4,看看新的你會遇到的問題, 這個問題如何解決這些問題。

從那時起,您以后可以使用J#,C#或任何其他.NET語言添加代碼。 但是,您將不會輕易回到JRE / JVM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM