Спецификации EJB и версии Java - обратная совместимость - PullRequest
4 голосов
/ 14 марта 2011

Это мое понимание взаимосвязи между спецификацией EJB и версиями Java

  • EJB 2.0 был частью платформы J2EE 1.3, которая была на вершине J2SE 1.3 или JDK 1.3.x
  • EJB 2.1 был частью платформы J2EE 1.4, которая была поверх J2SE 1.4 или JDK 1.4.x

Спецификация EJB 2.1 требует обратной совместимости для EJB 2.0, поэтому контейнеры, поддерживающие EJB 2.1и запуск в JDK 1.4.x также сможет запускать компоненты EJB 2.0.

  • EJB 3.0 является частью платформы Java EE 5, для которой требуется Java SE 5 (JDK 5) дляаннотации и т. д.

Спецификация EJB 3 требует обратной совместимости для более ранней версии спецификаций.

У меня такой вопрос.Если я обновлю код Java для реализации компонентов EJB 2.0 для компиляции с более поздней версией Java (скажем, Java 5), ​​смогу ли я сохранить ту же версию спецификации EJB или мне также потребуется перенести ее.

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

Вам даже не нужно «обновлять» код Java, поскольку я думаю, что старый код может быть несовместим только на уровне источника из-за идентификаторов, которые конфликтуют с недавно введенными ключевыми словами, но это не проблема на уровне байт-кода.

Таким образом, ваши старые EAR Java 1.3 / EJB 2.0 по-прежнему должны работать без изменений на сервере приложений Java 5 / EJB 3, и вы даже можете исправлять ошибки в коде и компилировать его с помощью -target 1.3 на современном JDK без необходимости исправленияконфликтующие идентификаторы (конечно, вы также не сможете использовать новые функции исходного уровня).

3 голосов
/ 03 декабря 2011

Эта таблица показывает несколько несовместимостей на уровне источника (во время сборки) между версиями ejb 2.0, 2.1 и 3.0, хотя двоичная (во время выполнения) совместимость поддерживается для всех выпусков, то есть вы можете запустить ваш код в новых версиях ejb без необходимости перекомпиляции.

enter image description here

...