Java SE与Java EE的区别,大学和职业生涯

5

我目前正在大学学习计算机科学,主要教授Java标准版。我发现在工业界中,这种版本并不常用,而是使用Java EE。如果我的大学教授的是Java SE而不是Java EE,这会影响我就业吗?

那么,它们的确切区别是什么呢?语法不同?编程方式不同还是其他方面的差异?


请查看这里:<a href="https://dev59.com/63VD5IYBdhLWcg3wDHDm">https://dev59.com/63VD5IYBdhLWcg3wDHDm</a> - Milan Babuškov
1
这里有一个提示--省略掉"I'm currently..."这些内容。"...make me less employable?"这个问题并不是一个有用的问题--这是一个判断性的调查。我们应该关注那些可以回答的问题:J2EE和J2SE,以及人们实际使用哪种。 - S.Lott
3
仅作为一个旁注:Java 2 Enterprise Edition (J2EE) 在2005年左右更名为Java Enterprise Edition(Java EE;JEE)。如果人们能终于采用现在更简单(且更合理)的名称,那将是很酷的事情。 - Jonik
1
@Jonik:是啊,我也受够了。已经三年了。每当我看到“J2EE”这个词时,我就会想到Java 1.4。 - Adam Jaskiewicz
@Arjan Tijms:你编辑了每一个回答,包括问题本身。 :) - Govind Malviya
@GovindKamalaPrakashMalviya 哈哈,不幸的是,这并没有获得 Stack Overflow 的奖励 :P - Arjan Tijms
9个回答

18

就所有实际目的而言,Java和Java SE是同一件事。当你说你正在学习Java SE时,这意味着你正在学习Java,它的语法、特性和标准库。在学习这些技能之前,你不能学习Java EE。

Java EE是一组标准,定义了许多不同的接口和功能,用于构建解决企业级问题的软件。这些包括事务、分布式计算、消息传递、Web应用程序和资源管理等内容。所有这些都在一个管理环境中提供。所有这些都是使用Java语言编写的,并由于软件将运行的环境而具有特定的规则和特征。

把学习Java SE想象成学习驾驶汽车。Java EE就像学习开18轮卡车一样,你不需要知道如何做才能从A到B,但如果你必须携带10吨货物,那么学习开卡车肯定会非常有帮助 8-)


2
我这样看:如果(a)你是招聘机构,或者(b)你已经与它们打交道太久了,那么“JSE”和“J2EE”都是“Java”。 - Neil Coffey

11

Java SE包含标准的Java库:基础知识、容器、网络、图形用户界面等等。它主要是为桌面应用程序和浏览器小程序而设计的。

Java EE增加了一个服务器框架。当你谈论Java在服务器中时,这就是你所指的。它是一个巨大的库,有很多预先设定的“最佳实践”。在JIT还很年轻的时候,Java EE的高度可扩展性设计使其在服务器上非常受欢迎,除了JVM(当时还有显著的)开销之外。

我并没有真正在任何严肃的事情中使用过Java EE;但是我认为最好先学习Java SE,然后再学习Java EE。这需要更多的时间;但让你更好地理解什么是语言和什么是框架。


8

如果我的大学教授的是Java SE而不是Java EE,这会使我的就业前景变差吗?

不会。这正是你的大学应该做的:专注于基础知识。在Java的情况下,这主要指标准版。

Java EE(不是J2EE,请参见我在问题中的评论)添加了一些服务器端Java API、规范和库。其中最重要的是Servlet API和JSP容器规范。但我认为重要的是要知道,即使在服务器端,它仍然主要是关于标准Java!很可能你会进行服务器端Java开发,而从不需要学习大多数Java EE技术,比如企业级Java Bean(EJB)——特别是随着轻量级替代方法的兴起,例如偏爱POJO,使用Hibernate作为持久层。许多Java EE的部分,比如EJB,肯定已经过了他们的炒作高峰期。你甚至可能不需要彻底了解所有“低级”Servlet和JSP的东西,因为更高级的框架,如StrutsJSFWicket已经变得流行起来。

一个案例研究:我在大学学习了Java(和面向对象编程)的基础知识 - 但是关于企业版,我只学到了非常少的东西(而且没有实际操作)。现在我已经作为“Java EE开发人员”工作了4-5年,也就是做服务器端Java。我从来没有真正使用过EJB或大多数其他Java EE技术。我主要做的是纯Java(即标准版),加上一些JSP、Servlets、Filters等相关内容(当然还有像HTML、JS、CSS这样的Web技术);利用大量(主要是开源的)第三方库,并根据需要掌握一切。(但是,我计划提高自己的Java EE知识,并参加SCWCD考试,我认为即使Java SE走得更远,这对我也有好处:)


2
在我看来,大学真正的意义在于教授你基础和概念,而不是一定要教你在工作中需要的确切技能。因此,我最想建议的是确保你学习企业应用需求中的概念(例如事务、消息队列/主题等)。然而,如果这真的让你担心,我建议你自学(可能还能获得学分)。此外,尝试找到一个能让你参与Java EE代码开发的实习机会。
当我即将结束大学时,我也曾问过自己同样的问题。现在我在Java EE环境下工作,使用Java EE库有一些学习曲线。我必须同意其他人的观点,即与我从事的其他项目相比,进行企业级Java开发并不是很有趣,因此你可能希望在大学里继续享受乐趣,并把无聊的东西留给你成为职场人士后再去面对。

2

这是我的看法。

你所知道的编程语言被称为Java。

和其他大多数编程语言一样,它也内置了许多标准库。

Java SE 是将语言和某些库结合起来,使得一般应用程序开发成为可能的组合。

Java EE 是另一组库,可以与 Java SE 结合使用,以开发企业/ Web 应用程序。


1
Java语言本身是Java开发的一个方面。使用标准版构建的应用程序可以满足某些需求。如果你只知道标准版,就认为可以随意使用企业版,那是一种误解。库使语言变得强大。尽管Java EE的某些方面受到了批评,但仍然有很多功能。即使是有问题的部分在行业中仍然被广泛使用。

1

来自维基百科

Java平台(企业版)与Java标准版平台(Java SE)的区别在于它添加了库,提供了部署容错、分布式、多层次Java软件的功能,主要基于运行在应用服务器上的模块化组件。

语法相同。你学习的所有关于Java SE的内容都适用于Java EE。它只是添加了一堆新的API,并呼吁采用特定类型问题所适合的应用程序设计风格。这些类型的问题(大型、容错、分布式、可扩展、多层次……)以及如何解决它们,这才是Java EE的真正意义,而不是规范中恰好包含的API。

记住,计算机科学学位不是职业学位。它的目的是教你如何学习和思考,而不是为某个特定行业定制特定技能集。


0

Java EE只是Java SE的超集(包括企业库,如servlets)。学习Java SE,你基本上就掌握了Java EE。


0

我认为你误解了Java SE(或“核心Java”)和Java EE之间的关系。

学习核心Java很重要,这也是大多数学校教授的内容。

由于编程围绕着使用轮子而不是重新发明它们,通常会有包含完成复杂任务的代码库。

例如,一些学校教授使用Java提供的AWT或Swing类库构建GUI,尽管还有其他选择。

Java EE虽然需要额外的软件来在服务器上运行程序,但更像是一个类和相关服务的库。您仍然会经常使用Java,只是使用流行且受Sun支持的库。您还将看到Hibernate和Spring,它们不是Java EE的一部分。

大多数地方首先希望确保您的Java基础扎实。随着您开始工作,您将获得使用Java EE特定部分的经验。


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