2016-09-19 22 views
-2

之間有分歧我有以下方法問題:爲什麼OpenJDK的和oracleJDK

sun.security.x509.AuthorityKeyIdentifierExtension.getEncodedKeyIdentifier() 

它存在於OpenJDK的,但它不能在oracleJDK存在。我一直認爲,除了關於這些許可的JDK某些特殊情況下應該是相同的......

雖然我可以解決這個問題,我擔心還有其他的不兼容性我可能不知道的。

+1

這是一個太陽包。我懷疑它會保證始終以java和javax包的方式提供。 OpenJDK可能落後於Oracle的實施。 – duffymo

+0

在Javadoc中使用'sun。*'軟件包有一個特殊的警告,它已經存在了20年。 – EJP

回答

0

那類不是公共Java API的一部分,因此不能保證(甚至有可能)在每一個JRE實現存在,也同樣提供者實現的每一個版本。

如果它不是標準API的一部分,那麼你就不能指望它。

雖然在OpenJDK和OracleJDK實現發生,因爲他們都有一個共同的歷史非常相似,他們可能會隨時在任何私有API或實施細節上發生分歧(或融合),只是因爲它們是單獨運行的項目。

相反,您應該在java.securityjavax.security中使用適當的與實現無關的API來處理證書。

+1

我知道,但那不是問題。有一些聲明表示,這兩個jdks都是從同一個源創建的,而我的發現接縫與此相矛盾。 –

+1

我決定專注於你的[XY問題]的X(http://meta.stackexchange.com/a/66378/155659)。 – OrangeDog

+0

實際的答案很無聊(我在中段已經談到了它) - 即使它們是從完全相同的源代碼庫構建而成的,但它們並不完全同時發佈, 1版本號的對應關係。 – OrangeDog

0

類不屬於被棄用可以不是JDK的一部分標準包和類的一部分。

你的情況,你可以嘗試使用解包javax.security.cert的類的問題。在谷歌上搜索它可以找到一些教程,如this one


只是爲了完成答案是真的,「一般」已編譯的代碼來自於開放的JDK相同的源代碼,並在Oracle JDK。但是oracle jdk和open jdk有不同的許可證,所以也有少許差異。通常,差異與通用類的來源無關,而與類或整個包的存在或缺失有關。作爲例子,請參閱font library

這不是唯一的區別。正如您在代碼中注意到的,安全軟件包也不同,因爲打開的jdk也添加了舊版本的x509證書類和oracle jdk。如果它們不是標準軟件包的一部分,則不能保證包含哪些類。因此,如果您在不同的jdk環境中運行代碼時遇到問題,只需使用標準軟件包或顯式導入庫。

+1

我知道,但那不是問題。有一些聲明表示,這兩個jdks都是從同一個源創建的,而我的發現接縫與此相矛盾。 –

+3

@SteffenHeil如果你知道這一點。你問來幹什麼? –

+0

閱讀http://javapapers.com/java/oracle-jdk-vs-openjdk-and-java-jdk-development-process/,然後重新閱讀我的問題。 –

-2

Oracle JDK之前被稱爲SUN JDK,並且在Oracle收購之前。此前,這是Java語言的官方專有實現。接管後,它被命名爲Oracle JDK,Oracle團隊維護JDK。

的OpenJDK是Java標準版平臺與甲骨文的貢獻和開放的Java社區的開源實現。

實際上,Oracle JDK的構建過程是從OpenJDK源代碼構建的。因此,Oracle JDK和OpenJDK之間沒有主要的技術差異。

除了基本代碼,Oracle JDK還包括Oracle的Java Plugin和Java WebStart實現。還包括第三方封閉源代碼和開源組件,例如graphics rasterizer和Rhino。

Oracle JDK和OpenJDK如何保持同步: 所有開發和錯誤修復都發生在OpenJDK中,然後它們被傳播到Oracle JDK。安全修復程序在私有林中發生,沒有公共代碼審查,不像一般的修復程序,然後將它們推送到Oracle JDK,然後再傳送到OpenJDK。

更多關於http://javapapers.com/java/oracle-jdk-vs-openjdk-and-java-jdk-development-process/

+1

我知道那個描述,但是如果它是真的,那麼在同一個類中怎麼會有不同的方法呢? –

+1

@SteffenHeil如果你知道這一點,那麼你應該在你的問題中包含你以前的研究。 – OrangeDog

+0

@OrangeDog爲什麼?不言而喻,這兩者不是建立在同一源代碼之上的,正如在這個答案中所聲稱的那樣。不管怎樣,被問到的問題都不存在。 – EJP

相關問題