为什么我不能只将库导入 Java SE 而不是为 Java EE 付费?



我正在努力理解Java SE和EE之间的区别。有很多信息,但从我目前有限的理解来看,Java EE似乎只是Java SE,上面添加了一些东西。为什么我不能只使用Java SE,并在需要时导入API或包?例如,如果我需要能够连接到一个数据库,我可以导入JDBC API,那么这与在Java EE中使用JDBC有什么不同吗?

。。。看起来JAVA EE只是JAVA SE,上面添加了一些东西。

这是不正确的。

实际上,JavaEE是一个规范和一组库,它们提供了API接口供编程使用。JavaEE本身没有提供这些接口的实现。

Java EE实现体现在Java EE供应商编写的代码中。该实现可能是也可能不是您必须付费的产品。

另一件事是,Java SE不是Java EE的一部分,在任何意义上都不是。JavaEEAPI(和实现)依赖于JVM和JavaSE类库,但它们是独立的,通常是单独分布的。


为什么我不能只使用JAVA SE并在需要时导入API或软件包?

假设您已经下载了Java EE API JAR文件(或者您的构建工具已经为您完成了这项工作),那么您可以根据Java EE API编译代码。

但你不能>gt;运行<lt;您在普通Java SE平台上的代码,因为Java SE或Java EE API JAR都不包含实现Java EE API的类;即servlet框架等等。

如果你在没有供应商提供的代码的情况下尝试Java EE应用程序,它将不起作用。(如果你不相信我/我们,你自己试试吧。)


例如,如果我需要能够连接到数据库,我可以导入JDBC api,那么在JAVA EE中使用JDBC有什么不同吗?

JDBC以前是Java EE API,但现在是Java SE API。(查看Java SE API文档!)

但事情是这样的。如果您想使用JDBC连接到数据库,您的应用程序需要使用特定于数据库的JDBC驱动程序。。。您可以从数据库供应商那里获得。(就像您从Java EE供应商那里获得Java EE实现一样!)


为什么我不能直接将库导入Java SE而不是为Java EE付费?

上面已经解决了大部分问题。但你也提到";支付";。

您需要付费的原因是JavaEE实现通常是专有产品。一家公司在开发他们的代码库方面投入了大量资金,他们希望从这笔投资中获得回报。

事实上,从Java 9开始,Oracle Java SE也不是免费的。。。用于大多数用例。

在任何一种情况下,如果真的不想付款,有三种选择:

  • 找到一个免费的(例如开源)实现。它们适用于Java SE和Java EE
  • 开发自己的相关规范实现。(就时间而言,这将比向供应商付款更贵。)
  • 在不支付所需许可费的情况下使用该产品,希望不要因为侵犯版权等而被起诉

Java平台不是独立的吗?

Java编程语言是独立于平台的。

Java SE API与平台无关(或多或少)。

Java SE实现不是独立于平台的。如果您下载Java SE for Windows并尝试在Linux上运行,它将不起作用。(从来没有,永远不会)。

";写一次,到处跑"mantle假设您已经在平台上安装了适当版本的JavaSE实现。这并不意味着这样的实现存在,也不意味着它将免费提供,也不暗示它将在任何地方安装。

什么";写一次,到处跑"咒语实际上是说,您不必修改您的Java应用程序,使其在另一个Java平台上运行。(请注意,WORE应用程序的性质有很多注意事项。例如,它不能依赖于可能存在或不存在的本地库或外部应用程序。)


我不能在任何连接到互联网和静态Ip地址的计算机上导入Java EE库、获取Java.servlet、用它编程、主机我的应用程序服务器吗?

用两个词来说:你不能。

不管你问了多少次,或者问了多少种不同的方式。

您所说的Java EE库只定义接口。你不需要为它们付钱。但是您需要这个接口的实现。例如,您可以导入JavaEE库,您将获得java.servlet.Servlet。但是不会实现这个类。

要运行JavaEE应用程序,您需要一个实现所有这些接口的平台。这样的平台被称为所谓的JavaEE运行时或像WildFly或WebSphere这样的应用程序服务器。

最新更新