在跳转到JavaEE之前,我应该多学习JavaSE吗?

6
我快要看完《Head First Java》这本书了。我学习它的原因是希望有一天能够从事JavaEE开发工作。现在我在思考,是继续学习EE(转向《Head First Servlets and JSP》),还是花更多时间学习SE?这会有所帮助吗?我直接说,我想在最短的时间内学习EE,但又希望达到最佳效果(一个平衡的方式)。有什么建议吗?
提前感谢!
7个回答

12

对我来说,如果你已经掌握了足够的SE,那么选择JavaEE是可以的。当然,在编程论坛里闲逛会教你一些你不知道的东西。相信我,有很多。不过,我有几条建议可以帮助你。

  • 最好能够非常熟练地掌握Java集合API
  • 另一个重要的是了解Java线程机制及相关类
  • 《Effective Java》对于任何Java开发人员来说都是必读的。所以去读一下吧
  • 在尝试使用任何框架之前,先练习使用普通的Servlet和JSP
  • 了解主要的设计模式是必须的

哇,谢谢!你会推荐哪些论坛?另外,我应该按照你给我的建议的顺序去做吗? - ajushi
我同意除了线程建议之外的所有内容。正如Brian Goetz在他的《Java并发编程实战》一书中所证明的那样,这是一个高级主题。一个servlet/JSP引擎为您处理每个请求的一个线程,因此您真正需要知道的就是如何确保您的类是线程安全的。 - duffymo
这就是我的意思,duffymo。这就是为什么我说了解机制和相关类别很重要。确切地说,就是你提到的原因。 - Adeel Ansari
Stackoverflow很好。JavaRanch论坛在这种情况下也很好,因为该论坛专门针对Java。你一定要试试它,http://saloon.javaranch.com - Adeel Ansari
非常同意。在线程问题上,你必须要知道“机制”,但是不要花太多精力去掌握它(在你的水平上还有更重要的事情)。 JavaRanch很好(至少在几年前是这样的)。而且,在你掌握简单的JSP之前,不应该尝试其他任何东西。不错的回答。 - OscarRyz
显示剩余2条评论

2

知识从来都不是坏事,所以建议更多地学习软件工程(SE)。

但现在涉足企业级开发(EE)也没有错。从Servlet、JSP和JDBC开始入手,只使用这些技术就可以完成许多有用的事情,并且可以称之为EE。

如果您编写JSP,请确保使用正确的方式——使用JSP标准标签库(JSTL),避免使用脚本代码。


谢谢!那就是我想要开始的地方。好的,我会记下来的。 - ajushi
我喜欢JSTL。:-S 对我来说,只要脚本在健康的方式下使用,它们就很好。我记得自JSP2.0以来有一些中间东西...它有类似于JSP-EL之类的东西。不过我从来没有深入研究过那个。 - OscarRyz

2
一个优秀的开发人员总是能够轻松掌握API。而一个糟糕的开发人员很容易误用API。因此,首先要成为一个优秀的开发人员。
我一直不喜欢“转向J2EE”这个术语,因为J2EE只是一组松散相关的技术。
有些人可以构建servlet和JSP,但对EJB一无所知,反过来也一样。有些人可以使用Hibernate进行持久化或使用JMS发送消息,而从未考虑过它是否属于J2EE(例如,我的情况)。
API会出现和消失,但成为核心Java的高水平开发人员最为重要。如果想要,可以阅读足够的教程以理解主要概念,甚至在业余时间进行一些实践。了解重要的概念,如线程、数据库等。
例如,在接触Hibernate之前,请先了解JDBC。

Uri,开始阅读J2EE实现的源代码,像Hibernate这样受人尊敬的框架,甚至是J2SE JDK本身,也是一个很好的展示。这是成为Java大师的毕业典礼。 - Alan
嗨Uri,你有没有关于掌握API和避免误用的任何技巧或资源? - ajushi
我的研究专注于API的可用性,并且我已经开发了与此相关的工具(请查看我的个人资料)。我能给你的最好建议就是学会阅读JavaDocs,通过培养辨别“指令”的技巧,即那些你真正需要采取行动的事项,而不是被所有详细规范所困扰。并且要时刻留意它们。 - Uri

1

我同意给出的建议,从学习核心Java开始尝试J2EE是可以的。但是,我建议继续磨练你的核心Java技能。

当我在寻找想要加入我的团队的J2EE开发人员时,我会寻找那些知道如何利用JDK编写简单可维护代码的人。你应该对集合API了如指掌。你一定要遵循Effective Java中的建议进行实践。最终,你会需要了解一些线程的微妙之处(第1步:保持对象不变;第2步:参见第1步)。

另外,如果你在纽约地区,请留言,也许我们可以线下联系。

澄清一下:每个有趣的Java应用程序都需要业务逻辑和使用普通的旧Java对象(POJO)。显然,这包括J2EE应用程序,无论它是一个Web应用程序、一个供Web应用程序使用的框架,还是一个J2EE应用服务器本身。对于Java开发人员来说,一旦他们开发了一个“玩具”应用服务器,就会产生新的认识,此后学习J2EE将变得更加容易。

从我的角度来看,一个真正的J2EE“绝地大师”知道如何将应用服务器拆分为其基本的Java组件。例如,EJB是代理,它通过添加使用RMI网络协议的远程过程调用以及事务管理器来包装业务POJO。如果你了解RPC、RMI和事务,那么你迅速理解EJB的机会就会增加。
或者用Joel Spolsky的话来说,J2EE是建立在J2SE网络API之上的泄漏抽象。

Alan,你是指JDK作为J2SE还是包括J2EE?我喜欢你寻找优秀的核心Java人才而不是那些可能具有糟糕SE基础的J2EE专家。毕竟,J2EE只是一堆松散绑定的API。 - Uri
我所说的JDK是指在尝试添加应用服务器之前从Sun下载Java时的普通旧版J2SE。是的,我很惊讶有人试图以不稳定的SE基础成为J2EE专家。 - Alan
嘿,我不住在纽约地区,但我想去那里:P - OscarRyz
谢谢Alan。你具体指的是我在使用J2EE制作Web应用程序时如何不断磨练我的核心Java技能?我该如何掌握集合API?此外,我是否应立即阅读Effective Java?你的回答非常有启发性,因为它让我了解了雇主们正在寻找什么。谢谢! - ajushi
你们做什么样的工作?(随时私信我)。就像我说的,我喜欢你们的方法。 - Uri

1

你已经准备好开始使用JavaEE了。

当你使用它时,你将使用JavaSE来进行JavaEE的开发,因为JavaEE是在JavaSE基础上增加了新的库。

对我来说,学习一项新技术最好(几乎唯一)的方法就是实际应用它。我曾尝试阅读和学习JSP(早在2000年)或任何新框架,但我只会感到无聊。

直到我有了一些可以应用Hibernate或EJB的项目,我才真正理解了它们。

我已经阅读了很多关于Spring的资料,可能我能通过面试,但由于我从未在项目中使用过它,所以我不认为自己真正掌握了它(尽管我知道它的工作原理、配置文件甚至新的变化)。

因此,我的建议是,如果你有能力,不要在意薪水是否低,尽快参与任何JSP项目。这样的学习效果比任何书籍、训练营、课程或其他任何东西都要好得多。

也许这只适用于我。 :)


实际上对我来说也是如此。我喜欢通过实践学习。 - ajushi

0

我开始学习JavaEE时,对基础Java知识了解不足,现在我非常后悔!

JavaEE不仅仅是一组附加的API,它涵盖了EAI、SOA和DBs等许多概念。试图掌握这些概念,学习API并且还要了解基础 - Java,是一个真正的挑战。

JavaEE听起来很令人兴奋,确实如此,但如果你想要编写干净、易于测试和正确的代码,我的建议是:从Java SE开始。


-1

当我们开始学习J2EE时,我们中没有人之前编写过除SE以外的任何代码;我会尝试去做。


谢谢Charlie!如果你不介意我问一下,在转向J2EE之前,你做过哪些SE程序? - ajushi
如果您不介意我插一句,我用JavaCC编写了一个COM/CORBA IDL生成器。当时连Java EE都还没有发明出来。这是纯SE版本,带有命令行UI和文件I/O。 - duffymo
实际上有相当多。在J2EE推出之前,我是IBM和Sun的早期Java架构师之一。 - Charlie Martin

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