如何使用Java發佈API?在像C或C++這樣的語言中,它確實非常簡單,因爲您可以簡單地從代碼中分割出頭文件,但在Java中,這是一個完全不同的故事。所以我知道在Java中沒有真正的方法可以模糊你的代碼,即使你「模糊」它,因爲它可以很容易地反編譯和分析。但是,如果我不能簡單地將頭文件分發給某人,那麼在Java中發佈API的首選方式是什麼?我沒有特別的需求,因爲我處於設計過程的開始階段,所以我非常活躍,我想知道我擁有的所有替代品。如何發佈API?
如何發佈API?
回答
一個簡單的方法是純粹在Java接口中定義您的API,將它們包含到單獨的API模塊中,並使實現模塊依賴於API模塊。這並沒有提供與分離C++頭文件相同的功能,但是將接口編程到完全與特定實現分離的接口是一個好主意。
但是,爲了隱藏類的代碼而編寫接口可能不是一個好主意。當有一個* true *接口時,接口更多地被設計 - 即 - 對於給定的類是(或可能)多於一個實現。我已經看到了太多的代碼,每個類都有自己的接口。它造成了很多混亂。如果你真的只是試圖發佈這個API,javadoc和jar是要走的路。 –
編寫接口的確不是一個好主意,只是爲了隱藏實現,因爲它只會導致產生額外的一堆代碼,我的建議並非如此。主要的好處是相對於實際實現而言演變得慢得多的功能(合同)的乾淨合同,從而爲API的(外部)用戶提供改進的自己的代碼庫的穩定性和清晰度。在例如當前版本的API上看到這些並不令人感到意外。 1.2.2以及目前版本的實施例如1.2.35 ... –
我認爲這就是你的意思,但它似乎好像OP主要是隱藏發行版中的專有代碼(與C++頭文件一樣),所以我想我會提到它。 –
您不需要將API發佈爲頭文件。開發人員需要的所有東西都已放在JAR中。如果您想發佈文檔,請發佈代碼的java文檔。
這沒有解決原始問題 –
@OlegS。是的,提供頭文件是關於提供可用的API。這在使用Java時根本不需要。 – schlingel
它強烈依賴於如何定義API。對我來說,它是:[「應用程序編程接口(API)指定一些軟件組件應該如何相互交互」](http://en.wikipedia.org/wiki/Application_programming_interface),以及爲了定義軟件彼此交互不需要有一個實現,接口就足夠了。當然,如果接口是隨機使用或根本不使用的話,那麼就沒有必要把它們分離成一個獨立的模塊。您的工作是關於打包Java代碼,而且還有WAR,它不是一般的。 –
你可以使用專業的Java混淆器來混淆你的代碼。然後它不容易反編譯和閱讀。然後你可以發佈你的jar和javadoc,就像其他人提到的一樣。
您可以將您的庫拆分爲多個jar,並提供一個包含構成api的類和接口,另一個包含這些接口的實現。
但是,請注意,ha might可能不值得。爲什麼你會試圖混淆該API的用戶需要的代碼呢?我的意思是,任何使用你的API的人都需要接口的實現來運行應用程序,所以他們仍然能夠反編譯你的代碼。
生成api-only jar將有助於分離api和實現,儘管(這意味着您可以替換實現或防止意外直接訪問實現)。
- 1. 如何發佈API
- 2. 如何發佈到XML API?
- 3. 如何使用LWP :: UserAgent在BOX API中發佈發佈請求?
- 4. 如何在Facebook API上發佈帖子?
- 5. 如何使用twitter API發佈鏈接?
- 6. 我如何發佈到GitHub API v3
- 7. 如何在API中發佈異常
- 8. 如何從Mule Flow發佈到REST API?
- 9. 我如何使用alamofire發佈api
- 10. 如何通過twitter api發佈推文?
- 11. 如何使用Pastebin API發佈
- 12. 如何使用Bugzilla REST API發佈bug
- 13. 如何使用Yelp API發佈評論?
- 14. Craigslist API - 如何發佈RSS數據?
- 15. 藥劑:如何發佈圖像API
- 16. 如何將json發佈到Wufoo Entries API?
- 17. 如何將JSON發佈到API端點?
- 18. 如何在API Store上發佈服務?
- 19. Grape api - 如何發佈嵌套資源?
- 20. 如何在WSO2上發佈WSO2 API?
- 21. Facebook API:如何發佈到頁面牆
- 22. posts.so如何直接發佈到instagram API
- 23. PHP cURL發佈API
- 24. Twitter發佈API C#
- 25. Android:發佈Facebook API
- 26. instagram api,發佈像
- 27. 按需發佈api?
- 28. WSO2發佈的API
- 29. Facebook API - Android:如何使用Facebook API在Facebook牆上發佈?
- 30. WebClient.UploadValues到API。如何獲取API中的發佈值?
我將它分發爲JavaARchive(JAR)。 – bblincoe
關於如何發佈自己並不是真正的技術問題,而是如何設計API,如果我應該包含程序的完整運行副本,或者如果我可以發佈一些可編譯的jar,能夠運行我的整個程序。 – th3falc0n
無論哪種方式,最好是編程接口,最好是將它們與獨立模塊(因此獨立的jar)中的實現分開。 –