一封致想学J2EE的新手的回信

------------------ 原始邮件 ------------------
发送时间: 2009年9月2日(星期三) 上午9:27
收件人: "340098052"<340098052@qq.com>;
主题: [博客园留言通知]关于java学习(来自杨松)
 

前辈,您好,小弟是JAVA新手,学过C的一些基础。
最近看过许多JAVA帖,想问问如果 目标定位就是J2EE,那么之前应该怎么学习呢?

是一开始就要把eclipse,jdk,tomcat和spring,struts,hibernate这些加到一起用还是 就用eclipse,jdk,tomcat就可以呢?希望前辈不吝赐教
发送者:杨松
Email:
yang246593@gmail.com
发送时间:2009-09-02 09:27
消息来自:
http://www.cnblogs.com/pricks/
 
 
以下是回复内容:
 
你的目标定位是正确的。事实上,java语言主要就是用来做web开发的,而web开发之主要目标,则是为企业服务,这就是所谓的j2ee。
首先,不要将j2ee看的有多么高贵多么深奥,其实也就那么回事。我当初刚入道时,很多高人都对我说什么j2ee,什么struts,什么hibernate,还有spring……当时我被搞的惶惶不可终日,心内感觉j2ee无比的神圣。但几个项目做下来,在做的过程中逐渐明白了jdk,j2ee,j2me,j2se,struts,jsp,hibernate,spring……乱七八糟的东西,现在再回过头来看看,感觉没什么,尤其是我当初对j2ee,j2me和j2se以及jdk这四个概念死活分不清,而很多高人又会时不时地将这些概念说的玄之又玄,但现在看来,感觉很好笑,无非就是一堆概念而已。
至于学习,如果你听我一言,就请从最基本的开始学起吧。当然,servlet、applet这些东西建议先不要看,因为看了也会白看。直接先粗略地看一下jsp和struts,了解一些概念性的东西,然后html、javascript也是要看一看的。看完了这四个,就做个管理员登录和用户增删改查的小项目,在这个过程中一点点弄明白mvc框架怎么搭建、利用eclipse怎样搭建一个web项目、怎样配置struts-config.xml、怎样利用struts标签库来进行前端显示逻辑(jsp也有标签库,但一般不用,也不必去学)、理解struts框架是如何截获客户端请求以及如何为该请求指派后台处理模型的、理解struts框架是如何将HTML的request对象面向对象化或者是struts框架是如何将客户端表单数据封装进org.apache.struts.action.ActionForm中的以及由此给web前端开发所带来的革命性影响(即前端开发人员无需再不断地进行request.getAttribute()操作了)、学会如何使用struts框架来进行页面重定向以及转发的。OK,上面这些技术搞定了,那么你对struts框架也就基本上懂了70%,然后,你对web开发流程、框架原理也会明白很多。当然,上面这些主要是讲了web开发中的前端显示技术和MVC模式中的控制器的控制技术,而后台模型处理,则要依赖所谓的jdk和j2ee,也就是你得掌握java语言。jdk就是java开发工具,它负责编译java语言,不编译的话,机器怎么会识别java语言呢;j2ee说白了则是一堆类库而已,j2se则是标准类库,j2me则是开发微型应用程序时所用到的一堆类库而已,从类库的内容含量来看,它们的关系是:j2ee类库包含了j2se,j2se又包含了j2me。就这么简单。
 
当然,在开发上面这个项目之前,你还得搭配一个开发环境IDE,搭配工作主要包含:安装jdk(现在好像是是6.0版本了)并设置其环境变量;安装tomcat并设置环境变量(tomcat的运行必须依赖于jdk);安装eclipse并将其与刚才安装的jdk和tomcat相关联;导入struts类库。搭配的具体过程在我的博客中有一篇文章作了详细说明:http://www.cnblogs.com/pricks/archive/2009/05/28/1491392.html。在安装的过程中,你肯定会碰到各种各样的问题,虽然我的这篇文章中对常规问题给出了解决方案,但依然无法预测你安装时将会碰到的特殊问题,但是你别丧气,因为每一个想学习j2ee技术的人都必须经历这一步磨练——自己搭配开发环境。只有通过自己来搭配这个环境,你才能对j2ee有一个形象的理解。虽然搭配的过程可能会很痛苦,因为刚开始你根本不知道为什么要配置这个,为什么要那样设置,但你却必须自己走完这一步。如果遇到问题了,先百度后谷歌,几乎没有找不到答案的。我当初自己搭配的时候,花了整整三天三夜。当然,如果你看了本文,也许只需半天便可搭配完成。
 
绕回正题:当你完成了上面的那个小项目时,接下来,如果你想深入web开发的话,那么你必须学习以下内容:HTML、CSS、Javascript(微软的Jscript就不必学了,jQuery也不要学)、深入研究MVC模式的产生背景和发展历史、深入学习JAVA语言、深入学习JDBC、掌握servlet。学完了这些基本技术,并且再利用struts框架去做一两个web项目,你就会对j2ee有一个比较深刻的了解了,并且你也对web开发基本入门了。
 
接着,由于你之前是学习C语言,如果你没有C#和JAVA的面向对象基础,那么你还需要去研读有关设计模式的书,例如:程杰龙先生所写的《大话设计模式》便是一本很好的,它是用C#进行例示,但由于JAVA和C#语法和内涵基本相同,因此你完全可以拜读此书。对设计模式有了一定的研究以后,你再去学习当下十分流行的spring框架和hibernate框架,相信此时你不会花费很大精力,便会很快理解并会运用这两大框架,甚至你完全可以自己写个spring框架出来!但是,如果你没有面向对象的基础,也对设计模式一无所知,那么即使你学了这两个框架,也始终是个门外汉而已,并且当以后有新的框架出来的时候,你又得花很多精力去学习那些所谓的新框架,那么你在IT的技术道路上不会走的很远!当下形形色色的框架,无非都是建立在特定的技术之上,例如spring,struts,hibernate框架,都是以java语言为基础写成的,因此,框架没有技术含量,有的,只是独到的设计模式或者说是设计思想。我们只有搞明白一个框架的设计思想,那么这个框架就基本理解了,当然,运用也不会成问题;相反,如果我们不懂设计思想,只知道去学习使用它,那么我们国人便完全被外国人牵着鼻子走,浪费时间、金钱和精力。搞定了设计模式和思想,无论以后出现什么样的框架,都会很快理解并使用。
 
当你达到以上程度时,你已经可以算是半个高手了。一般的web项目队你而言,已经不会有什么难点。此时,你还必须去深入地各个击破web技术的方方面面,具体包括:前端表现技术、后台处理模型、数据库、联络前后端的HTTP协议和TCP/IP协议。而前端表现技术就很多,比如:HTML、DHTML、javascript、ajax、flex、silverlight、xml、css、flash……这些,对于一个web开发人员来讲,都必须掌握,是需要一定的时间和经验的,尤其是ajax、flash、silverlight等等富客户端应用技术在时下越来越流行,但是我们还是以HTML、CSS和javascript为基础即可,将这三个基础打牢,别的富客户端技术也基本能够很快就能掌握;数据库很复杂,比如oracle、mysql、mssql,其中以oracle数据库最为复杂,很多程序员干三四年以后都往数据库方向发展,工资高、工作相对比较清闲,但是技术含量很高,非一般人所能做的了,但是对于程序员来说,只需知道它们的接口,学会调用接口去完成数据的增删改查便足够了;HTTP协议最好要了解一下,否则你做web开发到最后也是糊里糊涂的。
 
当你对以上这些技术都很精通或者熟练的时候,就可以往系统架构师方向发展了。架构师之所以能成为架构师,就是因为他对方方面面的技术都熟练或者精通,否则他怎么去驾驭整个系统?并且,当达到上面的水准后,技术再也不是问题,也不会被层出不穷的新技术所左右。
 
好吧,就说到这里,本想继续往下说,但我目前也就修炼到这里,再往后的路,我自己尚未看清,也不知道如何发展。今天恰好公司的项目完成了,所以得空写下此文,希望你不要被上面这么多技术所吓倒,告诉你一个秘密:我是个非计算机专业的大学毕业生,在去年到今年近一年的时间里了解和学习了这么多。我一个半路杀出来的程咬金都能够如此,相信你们计算机科班出身的更不是问题!当然,其中艰辛也自是别人不能比,经常夜里学习到2点钟才睡觉。
 
希望我们共同进步,同时,希望你在有朝一日学有所成时,将你的经验也奉献给广大新手,尽早给他们指出一条明路,可以让他们少走两年弯路!
原文地址:https://www.cnblogs.com/pricks/p/1601732.html