簡體   English   中英

Java-模塊化庫項目-如何?

[英]Java - modular library project - how to?

我應該為我工作的公司提供Java SDK。 我有幾年的Java EE經驗,但是在開發API和SDK方面經驗不多。

這里的問題是,SDK已經可以在.NET C#中使用並且可以正常工作了。 我自己做的。 切換到Java是一場噩夢。 我嘗試了幾種解決方案。 都失敗了,由於我無法前進,所以有些不確定。

如標題所示,我需要開發一個具有模塊的Java庫。 內部模塊。 世界各地的模塊不應該看到/使用/修改。

在C#中,這很容易做到:創建模塊各自的命名空間,將其類和方法設為私有,使用內部將一個或多個包裝器(橋)公開給整個程序集(項目),以便“主模塊”通過自己的公共全世界都可以使用的包裝器,可以使用這些內部模塊中提供的工具。

關鍵字在這里是INTERNAL。 我認為這很容易理解。 因此,讓我們舉個例子。 假設SDK由4個模塊組成。

  1. 第一個模塊是主要模塊,是公開的並且向全世界公開的模塊。 換句話說,SDK的唯一入口。 就像是自己宇宙的主人。 它可以隨意使用內部模塊,但永遠不會向世界展示它們。 決不。
  2. 第二個模塊與網絡有關。 與之類似,它處理網絡以管理與遠程服務的連接,從流中讀取和寫入數據。 它提供了自己的小包裝器,因此主模塊不需要使用第二個模塊的內部工具。 就像宇宙內部的宇宙一樣。
  3. 第三模塊是數據處理模塊。 它接收數據包(由第二個模塊手工制作),以便可以對其進行處理並處理相關信息。

所以我們到了。 如何使用NetBeans在Java中做到這一點?

我用POM項目和Netbeans模塊嘗試了Maven。 一個噩夢。

我嘗試創建多個庫(每個模塊一個),調整了主模塊庫以包括其(模塊)相關性,但是它不起作用。 在標准的Java EE控制台應用程序中,一旦我嘗試實例化我的SDK Manager(從主模塊中遍歷主包裝器),它就會失敗,因為Class Not Found異常:找不到與內部子模塊相關的類。 如果我將所有模塊(分別是Jar)添加到此Java Console應用程序中,則它可以訪問所有包裝器。 那里的樂趣在哪里?

謝謝您的幫助 !

當Java 9發布時,Project Jigsaw最終將為您提供所需的內容。

請參閱本文 ,了解拼圖的工作原理,特別是,

模塊聲明中的export子句使它命名的包中的公共類型可用於其他模塊,因此我們可以使用Jigsaw定義邊界,並且並非所有公共類型都可用於其他模塊,我們必須明確指定哪些類型可見。

暫無
暫無

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

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