Не имеет значения, был ли класс скомпилирован с помощью OpenJDK или Sun / Oracle JDK.Компиляторы байт-кода Java в данном выпуске OpenJDK и соответствующем выпуске Oracle JDK должны производить идентичный код 1 , если он вызывается с эквивалентными параметрами, и так далее.Компиляторы построены из того же дерева исходного кода.
Кроме того, насколько мне известно, компиляторы OpenJDK и Oracle JDK не помещают эту информацию в скомпилированные классы.И глубокое погружение дерева исходных текстов OpenJDK / Oracle JDK 8 подтверждает это.Нет соответствующих недокументированных атрибутов, испускаемых стандартными компиляторами javac 3 .
Могу ли я использовать те же (сторонние) банки?
Да.Не должно иметь значения, что классы в JAR были скомпилированы с OpenJDK по сравнению с Oracle JDK.
Однако, предостережение - это Java версии .Если сторонний файл jar поддерживает, скажем, Java 7, и вы пытались использовать его с Java 8 (OpenJDK или Oracle), то у вас могут возникнуть проблемы, и вам может потребоваться использовать более новую версию jar.Проверьте сайт поддержки на наличие библиотек, от которых вы зависите 2 .
И ... конечно ... вы должны тщательно протестировать свое приложение, чтобы выявить любые проблемы, которые могут (гипотетически)может быть связано с переходом на OpenJDK.
1 - файлы могут не совпадать побайтно, потому что компиляторы байт-кода добавляют пару недокументированных атрибутов, содержащих метки времени исходного и целевого файлов.Это можно подавить при компиляции.
2 - Вы можете обнаружить, что поставщик библиотеки сертифицирует свою библиотеку только для Oracle JDK.Если вы обнаружите это, вам, вероятно, следует поговорить с ними напрямую, чтобы понять причины этого и последствия для использования вами библиотеки.Это может быть только краткосрочной проблемой.(Если поставщик отказывается поддерживать OpenJDK или Oracle JDK в долгосрочной перспективе, он может потерять значительный процент своих клиентов.)
3 - я смутно напоминаю, что старыеКомпилятор GNU Jikes раньше помещал другие нестандартные атрибуты в файл «.class» для идентификации компилятора, но это не поможет вам различить компиляторы Oracle JDK и OpenJDK.