在OS X Lion上安装Java EE 6

8
我的OS X Lion工作站上的Java Preferences应用程序显示我已安装了Java SE 6 v1.6.0_29-b11-402(32位和64位版本)。不幸的是,我需要额外的功能,这些功能仅在企业版中才有。
“Jesper”在“如何在Mac OS X上安装特定的jdk?”中的评论建议我使用由Apple提供的Java,而不是Oracle/Sun提供的Java。不幸的是,似乎Apple没有提供Java 6的企业版。
这引出了一些问题:
  1. 我有什么遗漏吗?苹果是否提供Java 6的EE版?
  2. 如果第1个问题是真的,我该怎么做才能得到它?它可以与Java SE 6“并排”安装吗?
  3. 如果第1个问题是假的,Oracle/Sun版本可用吗?是否有推荐的安装位置?我猜/System/Library/Frameworks/JavaVM.framework/Versions/文件夹不被推荐。
  4. Oracle/Sun版本似乎包含了很多额外的东西(例如Glassfish),我不想安装。我可以只安装核心SDK而不安装这些额外的东西吗?Tomcat 7作为Glassfish的替代方案可行吗?

** 编辑 **

这个问题是我发布的另一个问题RESTful web service: java.lang.NullPointerException service.AbstractFacade.findAll的结果。看起来这个特定的错误是缺少注释(@Stateless)导致的。这个注释包含在javax.ejb.*命名空间中,它包含在一个没有在我的工作站上的.JAR文件中。

这让我得出结论,我需要Java 6的“企业版”(其中将包含缺失的.JAR文件和其他依赖文件)。我想,如果有办法确定缺失哪个.JAR文件(Netbeans 7似乎没有帮助),我可能只需将其添加到项目中并跳过EE的麻烦。
3个回答

17

对于任何平台,都不存在名为企业版Java的特殊运行时。

有Java SE,只是一些企业版容器实现的接口。

多年前Sun在命名上混淆了市场,当他们提出J2EE时。它从来不是Java的一个单独版本,只是一些附加的API,如果服务器实现了它们并通过了一些认证,就可以称自己为J2EE容器。

当他们开始称其为Java EE 6时,他们进一步混淆了市场。

如果您正在针对这些API进行开发,则只需要包含这些接口声明的.jar文件。您可以下载这些API .jar文件,以前称为J2EE。但是它们本身相当无用。

但我怀疑您想编写Java EE服务器,而是想使用它。如果要使用服务器,则需要下载符合Java EE标准的服务器并使用它提供的.jar文件。

值得使用的每个IDE都以某种形式包括这些内容,通常是通过定义将要部署的服务器。Tomcat不是完全的EE容器。它是一个Servlet容器,是完整EE规范的一个子集

自OSX Lion起,苹果不再提供JDK了,现在只有Oracle的JDK可用,而您似乎已经成功获取了它。


我不明白。如果没有企业版,为什么Oracle仍然使用这个术语?http://www.oracle.com/technetwork/java/javaee/documentation/javaee6sdku3-relnotes-444316.html - craig
4
你并不是从某个地方下载“Java EE”,而是在下载一些实现(如GlassFish、JBoss AS、WebSphere、WebLogic等)后,对这个服务器进行开发。请注意,这些实现并非“Java EE”的下载,而只是“Java EE”规范的实现之一。 - Xorty
实际上,对于Java SE来说并没有那么不同。你也不会下载Java SE,而是会下载一个实现。只有Oracle的实现占据了如此多的市场份额,才变得或多或少与Java SE同义,但还有JRockit、MJR、微软版本(曾经最著名的版本!)和仍然存在IBM版本、GCJ(虽然从未真正起作用)和其他一些晦涩的实现。OpenJDK是最著名的替代品,尽管Oracle版本现在直接基于此,因此也没有太大的区别。 - Arjan Tijms
那么,苹果公司是否可以提供EE的实现而不是SE的实现(这似乎是在Lion之前所做的)? - craig
1
谢谢,您编辑后的回答清晰明了得多。就我个人而言,我发现与Java名称有关的任何东西都非常混乱(Oracle的影响?);也许他们应该将其改名为阿司匹林... - craig
阅读了这个答案后我更加困惑了。我没有看到关于安装Java EE的任何说明,而这正是原帖作者所要求的。 - Jason

5
Java EE 6是一种规范,具有一些作为接口表示的附带API。 Java EE 6本身不是这些API的实现。如果您希望使用Java EE 6 API,则需要使用兼容的Java EE应用程序服务器。 Glassfish是Java EE 6的参考实现,但还有其他符合标准的服务器可用。 JBoss是另一个流行的选择。
这些在Mac OS X上很容易安装。

0

有一个Java EE下载。http://www.oracle.com/technetwork/java/javaee/downloads/index.html 但是,如果您想开发旨在在多个容器中运行的应用程序,它本身并不特别有用。

通常,您需要下载一个容器并进行开发。例如Glassfish(在上面的同一链接中提供)。使用IDE(如Netbeans)的支持可以使此任务变得更加容易。您可以下载包含Glassfish和Java EE API的Netbeans版本,并立即开始工作。其他IDE /容器组合也可能可行,通常有某种插件可用。

OSX的Java 6 JDK / JRE仍然来自Apple。他们将大部分代码转移到了Oracle,JDK 7的OSX版本接近发布状态,可能已经足够成熟以满足您的需求。我最好的猜测是这样的。


从 Lion 开始,苹果不再直接支持 JDK,而是由 Oracle 提供、开发和维护。 - user177800
如果您阅读与您链接的堆栈溢出问题相关联的文章,您会注意到它提到了Openjdk 7。请查看以下SO问题的第一个答案,了解如何在Lion上下载JDK6:https://dev59.com/W2w15IYBdhLWcg3wbbRx - BillRobertson42
如果您阅读我提供的答案,它是关于Java在Lion中如何被传递的。 - user177800

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接