java-ee ee和spring - Java EE / J2EE与J2SE / JDK版本之间的关联




ee下载 java下載 (4)

我确信我会找到一个重复的问题或一个令人满意的答案,但我没有。

我正在寻找的是这些问题的答案:

  • Java EE / J2EE和J2SE / JDK版本之间是否存在官方关联?
  • 如果答案是肯定的,它在哪里写的?
  • 如果答案是否定的,为什么呢? 并且是否存在非官方版本表(例如,JDK 1.4适用于J2EE 1.3,JDK 1.5适用于J2EE 1.4,JDK 1.6适用于Java EE 5,等等)

我可以想到解耦的几个原因,但似乎无法找到一个好的参考源

相关问题:

Java SE与Java EE,大学和职业

什么是Java EE?


Answers

Java EE / J2EE和J2SE / JDK版本之间是否存在官方关联?

Sun可能会试图保持某种“关联”,以免混淆用户和营销目的,但是,AFAIK, ,没有官方关联(并且由于JDK的发展速度比Java快,因此维护伪同步可能会变得更难EE规范)。

更新:我错了,实际上有一个相关性(见下文)。 但我仍然认为这可能会成为一个问题:Java 7计划在2010年底推出,专家组是否会成功在Java 8和Java 7 EOL之前推出Java EE 7?

如果答案是肯定的,它在哪里写的?

引用JSR 151:JavaTM 2平台企业版1.4(J2EE 1.4)规范主页:

  • J2EE 1.4是Java平台1.4版的企业版,因此​​将构建在J2SE 1.4上。

引用JSR 244:Java(TM)Platform,Enterprise Edition 5(Java EE 5)规范主页:

  • Java EE 5是Java平台版本5的企业版,因此​​将构建在J2SE 5.0上。

引用JSR 316:JavaTM平台企业版6(Java EE 6)规范主页:

  • Java EE 6是Java平台版本6的企业版,因此​​将基于Java SE 6构建。

说真的,为什么我们必须去JCP网站找到这个(也许我应该在那里开始)?

如果答案是否定的,为什么呢?

Java Enterprise Edition是一个规范,而不是一个实现。 它可能依赖于特定功能(如Java EE 5和Java 5泛型),但JDK版本实际上取决于您正在使用的容器的实现。 请参阅下面的Websphere示例。 (即使在上面的大量更新之后,这仍然适用。)

并且是否存在非官方版本表(例如,JDK 1.4适用于J2EE 1.3,JDK 1.5适用于J2EE 1.4,JDK 1.6适用于Java EE 5,等等)

正如我上面所说,“ 顺利 ”并不真正有意义,因为这取决于您正在使用的容器,容器可能具有不同的兼容性要求(例如,IBM WebSphere的J2EE 1.4服务器可能无法与JDK 5一起使用)。 所以,我宁愿在要求方面说话。

J2EE 1.4 SDK与JDK 5捆绑在一起但是...... J2EE 1.4需要JDK 1.4或更高版本。 Java EE 5需要JDK 5或更高版本。 Java EE 6需要JDK 6或更高版本(JDK 5现在处于EOL 2个月以上)。


通常,Java Enterprise Editions在JDK之后出现在相同版本中。

基本上,对于过去的几个版本,您已经拥有这些下载包:
JDK 5与J2EE 4。
JDK 5与Java EE 5。
带有Java EE 5的JDK 6。
带有Java EE 6的JDK 6(目前只能从Java EE页面获得,Java SE页面仍然带有带Java EE 5的JDK 6)

请注意,这些下载包实际上包括Sun的Java EE版本(Glassfish,最近),这与Apache的Java EE版本(Tomcat / Geronimo)或IBM的Java EE版本(Websphere)不同。

如果您选择不使用Glassfish,则只需下载JDK6和其他Java EE软件包。 截至目前,Glassfish是唯一的Java EE 6产品,因为Java EE 6刚刚问世,它就是参考实现。


Java EE是一组规范和这些规范的参考实现。 给定版本可能恰好取决于某些版本的JDK中存在的语言功能,或者可能不会。

您可以像考虑Java的任何第三方框架或库一样考虑Java EE。 Java EE和JDK的版本号没有任何理由可以完全相互关联。


**如果您使用TOMCAT或JETTY,请阅读! **

接受的答案确实有效,但前提是将webapp部署到像Glassfish或Wildfly这样的应用服务器,以及可能部署了像TomEE这样的EE扩展的servlet容器。 它不适用于像Tomcat这样的标准servlet容器,我相信大多数人都在寻找这里想要使用的解决方案。

如果您使用的是标准Tomcat安装(或其他一些servlet容器),则需要包含REST实现,因为Tomcat没有安装。 如果您正在使用Maven,请将其添加到dependencies部分:

<dependencies>
  <dependency>
    <groupId>org.glassfish.jersey.bundles</groupId>
    <artifactId>jaxrs-ri</artifactId>
    <version>2.13</version>
  </dependency>
  ...
</dependencies>

然后只需在项目中添加一个应用程序配置类。 如果除了为其余服务设置上下文路径之外没有任何特殊配置需求,则该类可以为空。 添加此类后,您无需在web.xml配置任何内容(或根本没有):

package com.domain.mypackage;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("rest") // set the path to REST web services
public class ApplicationConfig extends Application {}

在此之后,使用Java类中的标准JAX-RS注释直接声明Web服务:

package com.domain.mypackage;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.GET;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.Path;

// It's good practice to include a version number in the path so you can have
// multiple versions deployed at once. That way consumers don't need to upgrade
// right away if things are working for them.
@Path("calc/1.0")
public class CalculatorV1_0 {
  @GET
  @Consumes("text/plain")
  @Produces("text/plain")
  @Path("addTwoNumbers")
  public String add(@MatrixParam("firstNumber") int n1, @MatrixParam("secondNumber") int n2) {
    return String.valueOf(n1 + n2);
  }
}

这应该是你所需要的。 如果您的Tomcat安装在端口8080上本地运行,并且您将WAR文件部署到上下文myContext ,则转到...

http://localhost:8080/myContext/rest/calc/1.0/addTwoNumbers;firstNumber=2;secondNumber=3

......应该产生预期的结果(5)。





java-ee java