Java SE与Java EE,大学和职业

我目前正在大学学习计算机科学,他们主要教授Java标准版,我看到在业界这个用不多,而是使用了Java EE。 如果我的学院教我Java SE而不是Java EE,这会让我减少就业吗?

这些差异究竟是什么? 语法不同? 不同的编程方式还是什么?

出于所有意图和目的,Java和Java SE是相同的。 当您说您正在学习Java SE时,这意味着您正在学习Java,它的语法,function和标准库。 在学习这些技能之前,您无法学习Java EE。

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

考虑学习Java SE学习驾驶汽车。 Java EE就像学习驾驶18轮车一样,你不需要知道如何从A到B,但如果你需要携带10吨货物,这肯定有帮助8-)

Java SE包含标准Java库:所有基础,容器,网络,GUI等。 它主要用于桌面应用程序和浏览器小程序。

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 EE技术(如Enterprise Java Bean(EJB))即可进行服务器端Java开发 – 特别是随着替代的轻量级方法的出现,例如支持POJO , Hibernate用于持久化层。 像EJB这样的Java EE的许多部分肯定已经超过了他们的炒作周期的高峰期。 您可能甚至不需要彻底了解所有“低级”Servlet和JSP内容,因为Struts , JSF或Wicket等高级框架已经变得流行。

一个案例研究:我在大学学习了Java(和OO编程)的基础知识 – 而且只有很少(并且没有任何实际的)企业版。 现在我作为“Java EE开发人员”工作了4-5,即做服务器端Java。 我从未真正使用过EJB或大多数其他Java EE技术。 我主要做的只是纯Java(即标准版),其中包含一些JSP,Servlets,Filters等相关内容(当然还有HTML,JS,CSS等Web技术); 利用大量 (主要是开源的)第三方库,并根据需要拾取所有内容。 (但是,我打算提高我对Java EE的了解,并在某些时候采用SCWCD – 我认为即使Java SE有很长的路要走也会对我有益:)

在我看来,大学真的是要教你在基础和概念上坚强,不一定教会你在工作中需要的确切技能。 所以最重要的是我建议您确保学习企业应用程序需求中的概念(例如,事务,消息队列/主题等等)但是,如果这真的是您的关注,我建议您这样做自学(可能是课程学分)。 此外,尝试找一个可以让你玩一些Java EE代码的实习。

当我即将结束大学时,我问自己同样的问题。 我现在正在Java EE环境中工作,并且使用Java EE库有一些学习曲线。 我必须同意许多其他人的观点,并说与我工作过的其他项目相比,进行企业级java开发并不是很有趣,所以你可能想继续在大学里玩得开心,并在你参与的时候推迟讨厌的东西。劳动力。

这就是我看待它的方式。

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

与大多数其他编程语言一样,它也捆绑了许多标准库。

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

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

来自维基百科 :

Java平台(企业版)与Java标准版平台(Java SE)的不同之处在于它添加了库,这些库提供了部署容错,分布式,多层Java软件的function,主要基于在应用程序服务器上运行的模块化组件。 。

语法是一样的。 您学到的与Java SE相关的所有内容都将适用于Java EE。 它只是添加了一堆新的API,并要求某种风格的应用程序设计非常适合特定类型的问题。 这些问题(大型,容错,分布式,可扩展,多层……)以及如何解决这些问题实际上是Java EE的内容,而不是恰好是规范一部分的实际API。

请记住,CS学位不是职业学位。 它旨在教你如何学习和思考,而不是训练你为特定的行业利基量身定制的特定技能。

Java语言本身就是Java开发的一个方面。 使用标准版构建的应用程序可满足特定需求。 如果你所知道的只是标准版,那么你可以认为你可以将它与企业版“联系起来”,这是一种误解。 图书馆制作语言。 虽然Java EE的某些方面有他们(当之无愧的)批评者,但仍然有很多function。 即使是有问题的零件仍然在行业中大量使用。

Java EE只是Java SE(诸如servlet之类的企业库)的超集。 学习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特定部分的经验。