我目前正在大学学习计算机科学,主要教授Java标准版。我发现在工业界中,这种版本并不常用,而是使用Java EE。如果我的大学教授的是Java SE而不是Java EE,这会影响我就业吗?
那么,它们的确切区别是什么呢?语法不同?编程方式不同还是其他方面的差异?
我目前正在大学学习计算机科学,主要教授Java标准版。我发现在工业界中,这种版本并不常用,而是使用Java EE。如果我的大学教授的是Java SE而不是Java EE,这会影响我就业吗?
那么,它们的确切区别是什么呢?语法不同?编程方式不同还是其他方面的差异?
就所有实际目的而言,Java和Java SE是同一件事。当你说你正在学习Java SE时,这意味着你正在学习Java,它的语法、特性和标准库。在学习这些技能之前,你不能学习Java EE。
Java EE是一组标准,定义了许多不同的接口和功能,用于构建解决企业级问题的软件。这些包括事务、分布式计算、消息传递、Web应用程序和资源管理等内容。所有这些都在一个管理环境中提供。所有这些都是使用Java语言编写的,并由于软件将运行的环境而具有特定的规则和特征。
把学习Java SE想象成学习驾驶汽车。Java EE就像学习开18轮卡车一样,你不需要知道如何做才能从A到B,但如果你必须携带10吨货物,那么学习开卡车肯定会非常有帮助 8-)
Java SE包含标准的Java库:基础知识、容器、网络、图形用户界面等等。它主要是为桌面应用程序和浏览器小程序而设计的。
Java EE增加了一个服务器框架。当你谈论Java在服务器中时,这就是你所指的。它是一个巨大的库,有很多预先设定的“最佳实践”。在JIT还很年轻的时候,Java EE的高度可扩展性设计使其在服务器上非常受欢迎,除了JVM(当时还有显著的)开销之外。
我并没有真正在任何严肃的事情中使用过Java EE;但是我认为最好先学习Java SE,然后再学习Java EE。这需要更多的时间;但让你更好地理解什么是语言和什么是框架。
如果我的大学教授的是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的东西,因为更高级的框架,如Struts、JSF或Wicket已经变得流行起来。一个案例研究:我在大学学习了Java(和面向对象编程)的基础知识 - 但是关于企业版,我只学到了非常少的东西(而且没有实际操作)。现在我已经作为“Java EE开发人员”工作了4-5年,也就是做服务器端Java。我从来没有真正使用过EJB或大多数其他Java EE技术。我主要做的是纯Java(即标准版),加上一些JSP、Servlets、Filters等相关内容(当然还有像HTML、JS、CSS这样的Web技术);利用大量(主要是开源的)第三方库,并根据需要掌握一切。(但是,我计划提高自己的Java EE知识,并参加SCWCD考试,我认为即使Java SE走得更远,这对我也有好处:)
这是我的看法。
你所知道的编程语言被称为Java。
和其他大多数编程语言一样,它也内置了许多标准库。
Java SE 是将语言和某些库结合起来,使得一般应用程序开发成为可能的组合。
Java EE 是另一组库,可以与 Java SE 结合使用,以开发企业/ Web 应用程序。
来自维基百科:
Java平台(企业版)与Java标准版平台(Java SE)的区别在于它添加了库,提供了部署容错、分布式、多层次Java软件的功能,主要基于运行在应用服务器上的模块化组件。
语法相同。你学习的所有关于Java SE的内容都适用于Java EE。它只是添加了一堆新的API,并呼吁采用特定类型问题所适合的应用程序设计风格。这些类型的问题(大型、容错、分布式、可扩展、多层次……)以及如何解决它们,这才是Java EE的真正意义,而不是规范中恰好包含的API。
记住,计算机科学学位不是职业学位。它的目的是教你如何学习和思考,而不是为某个特定行业定制特定技能集。
Java EE只是Java SE的超集(包括企业库,如servlets)。学习Java SE,你基本上就掌握了Java EE。
我认为你误解了Java SE(或“核心Java”)和Java EE之间的关系。
学习核心Java很重要,这也是大多数学校教授的内容。
由于编程围绕着使用轮子而不是重新发明它们,通常会有包含完成复杂任务的代码库。
例如,一些学校教授使用Java提供的AWT或Swing类库构建GUI,尽管还有其他选择。
Java EE虽然需要额外的软件来在服务器上运行程序,但更像是一个类和相关服务的库。您仍然会经常使用Java,只是使用流行且受Sun支持的库。您还将看到Hibernate和Spring,它们不是Java EE的一部分。
大多数地方首先希望确保您的Java基础扎实。随着您开始工作,您将获得使用Java EE特定部分的经验。