Подтвердить что ты не робот

Есть ли Java EE JDK

Я знаю, что это было задано миллион раз, и я сделал домашнее задание, но последнее, что я не совсем понимаю, есть "Java EE JDK"?

Когда я загружаю SDK, он пытается установить много дерьма, которого я не хочу. Поэтому я прочитал и понял, что на самом деле Java SDK представляет собой набор инструментов, технически не связанных с JDK. Так что я ищу, это простая простая загрузка JDK.

Мы знаем, что "Java SE JDK" всегда был доступен на веб-сайте Sun (now Oracle). Тем не менее, я разрабатываю веб-приложение и интересуюсь некоторыми функциями Java EE: javax.servlet, javax.validation, javax.persistence и javax.transaction. Так что фактически я действительно ищу "Java EE JDK".

Я использую типичную настройку Maven/Tomcat/ Spring/Hibernate, и в прошлом я всегда добавлял зависимости API только в предоставленной области Maven к моему проекту для этих частей спецификации Java EE, т.е.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>

Итак, если я делаю это для всех API-интерфейсов Java EE, которые требуется моему проекту, то я фактически использую Java SE JDK с некоторыми дополнительными компонентами Java EE, объявленными вручную. Кроме того, когда я направляю свою IDE для использования JDK, который поставляется с установкой Java EE SDK, эти дополнительные пространства имен недоступны.

Другими словами, для всех целей и задач оказалось бы, что JDK, который поставляется с загрузкой Java EE SDK, эквивалентен JDK, который я получаю, когда устанавливаю "Java SE JDK"... Если это правильно то мне не нужно устанавливать Java EE SDK, и я могу просто использовать JDK Java (SE), объявляющий какие-либо компоненты Java EE, которые мне нужны в качестве * -api/предоставленных зависимостей, как я описал выше.

Итак, мои вопросы: это то, что я описываю выше правильного пути, или есть такая вещь, как "Java EE JDK"? iDe JDK, который поставляется с нереализованными интерфейсами таких вещей, как javax.servlet и javax.resources и т.д.? И если такой зверь существует, откуда его загрузить?

4b9b3361

Ответ 1

То, что вы спрашиваете, это "могу ли я получить все компоненты EE" в виде одной загрузки без GlassFish, NetBeans и т.д.

Ну, полезно знать, что такое Java EE. Это набор спецификаций иногда связанных/иногда несвязанных компонентов "Enterprise" (независимо от того, что Enterprise означает:)). Например, спецификация servlet-api (как указано в предыдущем ответе) является частью спецификации Java EE. Также JTA (API транзакций), JPA, Java Mail и т.д.

Существует два типа компонента EE. 1. Те, которые поставляются только как интерфейсы, и приложение-сервер или сторонняя организация реализует их. Примерами являются JTA, JPA, Servlet-API. 2. Те, которые отправлены в виде полных эталонных реализаций. Примерами являются Java-Mail. Я не могу думать о других с головы, но будут некоторые.

Теперь полный сервер приложений, такой как glassfish, поставляется с множеством реализаций, поэтому многие люди видят их внутри Glassfish, Websphere и т.д. и считают, что им нужно их использовать. Контейнер, такой как Tomcat, не является сервером приложений, он является контейнером сервлетов и, таким образом, реализует только подмножество полного стека Java EE (части, которые необходимы только для сервлетов).

Чтобы получить полный набор интерфейсов/реализаций Java EE, вам нужно добавить в свою сборку отдельные интерфейсы или реализации. В этом случае вы просто "должны знать", где их найти, и это приходит по опыту. Люди, как правило, знают, что JPA добавляется как часть зависимостей Hibernate, например.

Ответ 2

Когда дело доходит до загрузки JDK, есть только один JDK, независимо от того, получаете ли вы его из загрузки Java SE или из загрузок Java EE.

Разница в том, что когда вы загружаете его из загрузок Java EE, он упакован в SDK. SDK поставляется с Glassfish, Code Samples, API Documentation, Tutorials. Мне это действительно не нужно, поэтому я предпочитаю загружать файлы с загрузки Java SE.

В проекте Maven JavaEE вы должны указать свои зависимости к библиотекам Java EE. В случае с jboss AS7 вы используете зависимости jboss-spec, которые позволят вам импортировать все классы Java EE. Сервер приложений должен предоставлять классы, реализующие API Java EE:

<dependency>
   <groupId>org.jboss.spec</groupId>
   <artifactId>jboss-javaee-6.0</artifactId>
   <version>3.0.2.Final-redhat-3</version>
   <type>pom</type>
   <scope>import</scope>
</dependency>

Если вы хотите увидеть артефакты javaEE, импортированные этой помпой, посмотрите: http://maven.repository.redhat.com/techpreview/eap6/6.1.0/maven-repository/org/jboss/spec/jboss-javaee-6.0/3.0.2.Final-redhat-3/jboss-javaee-6.0-3.0.2.Final-redhat-3.pom

Ответ 3

Как правило, вы более или менее корректны.

Серверы приложений обычно поставляют API Java EE, а также реализацию Java EE API. Поэтому, если вы хотите использовать ту же версию, что и сервер приложений, используйте:

<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>2.5</version><!-- or whatever version your application server provides -->
   <scope>provided</scope>
</dependency>

Если вы хотите использовать более новую версию, вы должны опустить предоставленную область.

Если вы хотите использовать новую или другую реализацию (например, EclipseLink вместо Hibernate), вы также должны добавить зависимость для реализации. В противном случае вы можете опустить его.