Java for Google App Engine和Java EE之间的核心区别是什么?

17

Java for Google App Engine和Java EE之间的核心区别是什么?(我对Java一无所知,所以您能否请简单解释一下它们的区别,并告诉我哪一个更适合我的简历?)

4个回答

17

Google App Engine for Java是建立在一个Web应用程序容器(Jetty)之上的,因此它显然只提供了Java EE的子集,并附带一些限制(但也添加了使用标准化API利用其基础架构的功能):

  • Servlets 2.4,JSP 2.0
  • 部分支持Datastore的JDO和JPA
  • JavaMail用于...邮件
  • JAXB
  • 用于XML处理API的DOM、SAX和XSLT

不支持的Java EE API和技术包括:

  • 企业级Java Bean(EJB)
  • JAX-RPC
  • JAX-WS
  • Java数据库连接(JDBC)
  • Java EE™连接器架构(JCA)
  • Java管理扩展(JMX)
  • Java消息服务(JMS)
  • Java命名和目录接口(JNDI)
  • 远程方法调用(RMI)

更多详细信息请参见在App Engine中能否播放

顺便说一下,我们不再使用J2EE了,自2005年起变为Java EE :)


1
而且它们不提供全文搜索!:-((我被告知Lucene已经移植,但由于线程失败了) - Vladimir Dyuzhev
2
@Vladimir 是啊,多么讽刺! - Pascal Thivent
1
谷歌不提供搜索,这很酷!(加一 Pascal Thivent!) - Rella
1
这个答案有点偏颇。Google Appengine确实支持J2EE的一个子集,但是J2EE也支持Appengine技术的一个子集。 - TjerkW
@Pascal:链接失效 -> “它能在App Engine中运行吗?” - A.D.

4

第一个答案说Appengine是Java EE的子集是正确的,但它缺少一些信息。

Google Appengine确实支持Java EE的子集,但Java EE也支持Appengine技术的子集。

Appengine配有高可靠性数据存储和弹性扩展功能。因此,您不必为闲置的服务器付费。Appengine支持Web Hooks,这是一种新技术,可以用于执行类似JMS的操作。出于某种原因,不支持JNDI,因为在Google Appengine中获取服务是通过简单的Java API完成的。因此简化了模型。RMI在appengine的内部大量使用,如果需要,您也可以自己使用它。但是,在appengine中使用RMI没有太多意义,因为机器间通信可以通过XMPP或高可靠性来完成。

因此,使用Appengine可以开发与Java EE类似的应用程序,但您必须绑定到Google的基础架构。许多繁重的工作,例如机器配置、网络配置和扩展,都是自动完成的。因此,不需要一个庞大的系统工程团队。

总之,Java EE是被大型公司使用的旧方法。Appengine由初创企业使用,这些企业希望快速增长并需要扩展,但不希望有较小的初始成本。


注意:现在前进的方式当然是Kubernetes和Docker化的东西 :-) Appengine仍然很好。 - TjerkW

3

谷歌应用引擎提供了有限的功能,与底层机器相比,你不能访问本地存储,并且你的请求处理必须在指定的时间限制内完成,否则你的任务将被终止。


1

语言上没有区别:它们都是Java。不同之处在于可用的类库。


1
请问您能否澄清在使用J2EE和未使用GAE时,GAE无法使用或受到限制的可能性是什么? - Rella
1
查看GAE可用的白名单类。 http://code.google.com/appengine/docs/java/jrewhitelist.html - Manjoor

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