有没有Java EE JDK

2022-09-02 13:01:38

我知道这个问题已经被问了一百万次,我确实做了功课,但最后一件事我不完全理解的是,有没有“Java EE JDK”?

当我下载SDK时,它会尝试安装许多我不想要的废话。所以我做了一些阅读,并意识到实际上Java SDK是一组技术上与JDK无关的工具。因此,我所寻找的是仅JDK的干净简单的独立下载。

我们知道“Java SE JDK”一直可以从Sun(现在的Oracle)网站上获得。但是,我正在开发一个Web应用程序,并对Java EE的一些功能感兴趣:javax.servlet,javax.validation,javax.persistence和javax.transaction。所以实际上我真正想要的是一个“Java EE JDK”。

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

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

因此,如果我对我的项目所需的所有 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等未实现的接口?如果存在这样的野兽,我会从哪里下载它?


答案 1

您问的是“我能不能得到所有的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依赖项的一部分添加的。


答案 2

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

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

在 Maven JavaEE 项目中,您将指定对 Java EE 库的依赖关系。对于 jboss AS7,您可以使用 jboss 规范依赖项,该依赖项将允许您对所有 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>

如果你想看看这个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


推荐