Вопрос по java – Есть ли Java EE JDK [дубликат]

14

This question already has an answer here:

What exactly is Java EE? 4 answers

Я знаю, что об этом спрашивали миллион раз, и я делал свою домашнюю работу, но последнее, что я не до конца понимаю, это «Java»EE JDK & Quot; ?

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

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

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

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

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

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

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

Ваш Ответ

3   ответа
1

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

<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), вам также необходимо добавить зависимость для реализации. В противном случае вы можете опустить это.

Я забыл использовать предоставленный в моем примере, но это то, что я всегда делаю на практике. Что касается моего основного вопроса («есть ли Java EE JDK?»), Ваш ответ «нет», есть Java JDK, и есть API Java EE, и интерфейсы API Java EE распространяются отдельно для Java JDK, либо с дистрибутивами реализаций, либо как дистрибутивы только для декларации API. Я правильно понимаю? Amir Abiri
@AmirAbiri Да, это правильно
16

«Могу ли я получить все компоненты EE»? в виде одной загрузки без GlassFish, NetBeans и т. д.

Что ж, полезно точно знать, что такое Java EE. Это набор спецификаций иногда связанных / иногда не связанных «Предприятий». компоненты уровня (что бы ни значило предприятие :)). Например, спецификация 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, вам необходимо добавить отдельные интерфейсы или реализации в вашу сборку. В этом случае вам просто необходимо знать & quot; где их найти, и это приходит по опыту. Например, люди знают, что JPA добавляется как часть зависимостей Hibernate.

3

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

Разница в том, что когда вы загружаете его из загрузок Java EE, он упаковывается в SDK. SDK поставляется с Glassfish, примерами кода, документацией API, учебными пособиями. Мне они действительно не нужны, поэтому я предпочитаю скачивать их с загрузок 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, импортированные этим pom, взгляните на: 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

Похожие вопросы