是否有Java EE JDK

Ami*_*iri 16 java java-ee

我知道这已被问了一百万次我做了我的功课,但最后我还不完全理解的是,是否有"Java EE JDK"?

当我下载SDK时,它会尝试安装我不想要的大量垃圾.所以我做了一些阅读并意识到实际上Java SDK是一组技术上与JDK无关的工具.所以我正在寻找的只是简单的JDK单独下载.

我们知道Sun的(现在的Oracle)网站一直提供 "Java SE JDK" .但是,我正在开发一个Web应用程序,并对一些 Java EE特性感兴趣:javax.servlet,javax.validation,javax.persistence和javax.transaction.所以我真正想要的是"Java EE JDK".

我正在使用典型的Maven/Tomcat/Spring/Hibernate设置,在过去,我总是在Maven提供的范围中为我的项目添加仅API依赖项,用于Java EE规范的这些部分,即:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

因此,如果我为我的项目所需的所有Java EE API执行此操作,那么我实际上将Java SE JDK与一些其他手动声明的Java EE组件一起使用.此外,当我指示我的IDE使用Java EE SDK安装附带的JDK时,这些额外的命名空间不可用.

换句话说,对于所有意图和目的,似乎Java EE SDK下载附带的JDK等同于我在安装"Java SE JDK"时获得的JDK ...如果这是正确的那么有我不需要安装Java EE SDK,我可以简单地使用Java(SE)JDK声明我需要的任何Java EE组件作为*-api /提供的依赖关系,如上所述.

所以我的问题是:我在上面描述了正确的方法,还是有"Java EE JDK"这样的东西?即一个JDK,它带有未实现的接口,如javax.servlet和javax.resources等等?如果这样的野兽存在,我会从哪里下载?

mon*_*ack 17

您所问的是"我可以将所有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这样的容器不是应用程序服务器,它是一个servlet容器,因此只实现完整Java EE堆栈的子集(仅限servlet所需的部分).

为了获得完整的Java EE接口/实现集,您需要在构建中添加单独的接口或实现.在这种情况下,你只需要"知道"在哪里找到它们,这取决于经验.例如,人们倾向于知道JPA是作为Hibernate依赖项的一部分添加的.


Mig*_*yes 5

在下载 JDK 时,无论您是从 Java SE 下载还是从 Java EE 下载获取,都只有一种 JDK。

不同之处在于,当您从 Java EE 下载中下载它时,它会打包在 SDK 中。该 SDK 附带 Glassfish、代码示例、API 文档、教程。我并不真正需要这些,所以我更喜欢从 Java SE 下载中下载。

在 Maven JavaEE 项目中,您将指定对 Java EE 库的依赖项。对于 jboss AS7,您可以使用 jboss-spec 依赖项来导入所有 Java EE 类。应用程序服务器负责提供实现 Java EE API 的类:

<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>
Run Code Online (Sandbox Code Playgroud)

如果您想查看此 pom 导入的 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