JAVA学习心得

时间:2024.3.27

JAVA学习心得

每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法。因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法,只能给大家提供一点参考了。

学习Java的第一步是安装好JDK,写一个HelloWorld,?其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两个问题摸索清楚了,就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的《Java深度历险》,对这两个问题进行了深入的探讨。

第二步是学习Java的语法。Java的语法是类C++的,基本上主流的编程语言不是类C,就是类C++的,没有什么新东西,所以语法的学习,大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,这可能需要有人来指点一下,我当初是完全自己琢磨出来的,花了很久的时间。不过后来我看到《ThinkinginJava》这本书上面是讲了这些概念的。

第三步是学习Java的面向对象的编程语言的特性的地方。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C++的经验,只有C的经验,我是大概花了一个月左右吧,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了不下5遍,才彻底领悟了。不过我想如果有C++经验的话,应该一两天时间足够了。那么在这个过程中,可以多看看《ThinkinginJava》这本书,对面向对象的讲解非常透彻。可惜的是我学习的时候,并没有看到这本书,所以自己花了大量的时间,通过自己的尝试和揣摩来学会的。

第四步就是开始熟悉Java的类库。Java的基础类库其实就是JDK安装目录下面jrelib t.jar这个包。学习基础类库就是学习rt.jar。基础类库里面的类非常非常多。据说有3000多个,我没有统计过。但是真正对于我们来说最核心的只有4个,分别是

java.lang.*;

java.io.*;

java.util.*;

java.sql.*;

这四个包的学习,每个包的学习都可以写成一本厚厚的教材,而O"reilly也确实是这样做的。我觉得如果时间比较紧,是不可能通过读四本书来学习。我觉得比较好的学习方法是这样的: 首先要通读整个package的框架,了解整个package的class,interface,exception的构成,最好是能够找到介绍整个包框架的文章。这些专门介绍包的书籍的前几章应该就是这些总体的框架内容介绍。

对包整体框架的把握并不是要熟悉每个类的用法,记住它有哪些属性,方法。想记也记不住的。而是要知道包有哪些方面的类构成的,这些类的用途是什么,最核心的几个类分别是完成什么功能的。我在给人培训的时候一般是一次课讲一个包,所以不可能详细的介绍每个类的用法,但是我反复强调,我给你们讲这些包的不是要告诉你们类的方法是怎么调用的,也不要求你们记住类的方法调用,而是要你们了解,Java给我们提供了哪些类,每个类是用在什么场合,当我遇到问题的时候,我知道哪个类,或者哪几个类的组合可以解决我的问题,That"all!,当我们具体写程序的时候,只要你知道该用哪个类来完成你的工作就足够了。编码的时候,具体的方法调用,是边写代码,边查Documentation,所有的东西都在Documentation里面,不要求你一定记住,实际你也记不住3000多个类的总共将近10万个方法调用。所以对每个包的总体框架的把握就变得极为重要。

第五步,通过上面的学习,如果学的比较扎实的话,就打好了Java的基础了,剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到这一步,Java的自学能力已经被培养出来了,可以到了直接学习Documentation的水平了。除了要做GUI编程之外,JDK里面其他会有用处的包是这些:

java.text.

这些包里面真正用的比较多的类其实很少,只有几个,所以不需要花很多时间。

第六步,JavaWeb编程,Web编程的核心是HTTP协议,HTTP协议和Java无关,如果不熟悉HTTP协议的话,虽然也可以学好Servlet/JSP编程,但是达不到举一反三,一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话,又有了Java编程的良好的基础,学习Servlet/JSP简直易如反掌,我学习Servlet/JSP就用了不到一周的时间,然后就开始用JSP来做项目了。

在Servlet/JSP的学习中,重头仍然是ServletDocumentation。ServletAPI最常用的类很少,花比较少的时间就可以掌握了。把这些类都看一遍,多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过HTTP协议在WebServer和Brower之间交谈。另外对JSP,还需要熟悉几个常用JSP的标记,具体的写法记不住的话,临时查就是了。

此外JavaWeb编程学习的重点要放在WebApplication的设计模式上,如何进行业务逻辑的分析,并且进行合理的设计,按照MVC设计模式的要求,运用Servlet和JSP分别完成不同的逻辑层,掌握如何在Servlet和JSP之间进行流程的控制和数据的共享,以及WebApplication应该如何配置和部署。

第七步,J2EE编程

以上的学习过程如果是比较顺利的话,进行到这一步,难度又陡然提高。因为上面的知识内容都是只涉及一个方面,而像EJB,JMS,JTA等核心的J2EE规范往往是几种Java技术的综合运用的结晶,所以掌握起来难度比较大。

首先一定要学习好JNDI,JNDI是AppServer定位服务器资源(EJB组件,Datasouce,JMS)查找方法,如果对JNDI不熟悉的话,EJB,JMS这些东西几乎学不下去。JNDI其实就是

javax.naming.*这个包,运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置,就需要看看专门的文档规范了,比如web.xml的写法,ejb-jar.xml的写法等等。针对每种不同的AppServer,还有自己的服务资源配置文件,也是需要熟悉的。

然后可以学习JTA,主要是要理解JTA对于事务的控制的方法,以及该在什么场合使用JTA。这里可以简单的举个例子,我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setAutoCommit(false),....,conn.commit()),做为一个原子操作,但是假设我的业务需求是要把对两个不同数据库的操作做为一个原子操作,你能做的到吗?这时候只能用JTA了。假设操作过程是先往A数据库插一条记录,然后删除B数据库另一个记录,我们自己写代码是控制不了把整个操作做为一个原子操作的。用JTA的话,由AppServer来完成控制。

在学习EJB之前要学习对象序列化和RMI,RMI是EJB的基础。接着学习JMS和EJB,对于EJB来说,最关键是要理解EJB是如何通过RMI来实现对远端对象的调用的,以及在什么情况下要用到EJB。

在学习完EJB,JMS这些东西之后,你可能会意识到要急不可待学习两个领域的知识,一个是UML,另一个是DesignPattern。Java企业软件的设计非常重视框架(Framework)的设计,一个好的软件框架是软件开发成功的必要条件。在这个时候,应该开始把学习的重点放在设计模式和框架的学习上,通过学习和实际的编程经验来掌握EJB的设计模式和J2EE的核心模式。

J2EE规范里面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外还有很多很多的企业技术,这里不一一进行介绍了。

另外还有一个最新领域WebServices。WebServices也完全没有任何新东西,它像是一种黏合剂,可以把不同的服务统一起来提供一个统一的调用接口,作为使用者来说,我只要获得服务提供者给我的WSDL(对服务的描述),就够了,我完全不知道服务器提供者提供的服务究竟是EJB组件,还是.Net组件,还是什么CORBA组件,还是其他的什么实现,我也不需要知道。WebServices最伟大的地方就在于通过统一的服务提供方式和调用方式,实现了整个Internet服务的共享,是一个非常令人激动的技术领域。WebServices好像目前还没有什么很好的书籍,但是可以通过在网络上面查资料的方式来学习。

首先java完全可以在半年之内学通,只要你确实用心学,这点完全不必担心。

如果你智商属于普通人并且完全没有编程的基础,例如c,c++,或者其他编程语言(我指

的是亲手编写一个完整的程序,helloworld或者剪切字符串不算)我强烈不推荐你看书,不然将浪费你大量的入门时间,甚至走许多弯路(比如做j2ee的话swing与swt是基本不用会的,多线程也只要会点基础即可),现在java的视频教程满天飞,完全可以选一个讲解清晰,条理明确的java入门视频,这里我推荐马士兵的j2se视频教程,以前我看的也是这个,虽然现在看来里面有点小错,但不失为一个看起来愉快,学起来轻松的入门级教程,毕竟刚开始的时候还是应该以培养兴趣为主,。

入了门之后就要选方向j2me或j2ee,这两种你可以自己上百度搜下,其实都是满有前途的,以后牛了双修也未尝不可。

我个人学的是j2ee的内容,j2ee说白了就是做网页,这时候你要从先从java里脱身出来,学些跟网页有关的东西:

1.html:很简单的东西不是太笨的话半天左右即可搞定

2.js:易学难精,想速度找工作不必花太多时间,随便买本javascript书略读并备查 推荐:JavaScript高级程序设计;JavaScript权威指南

3.数据库:如果没有基础的话,建议多花时间,至少一个月,开始建议用mysql,然后是oracle,然后是sqlserver,这段时间最关键的就是sql语言的编写,关系到你今后笔试的成败,一定要自己多练,多在网上找笔试题做。

5.xml 就是一种封装数据的格式,没啥好学的,练习一下怎么用dom4j或者jdom读写xml即可,可以直接去网上下有注释的例子程序来看看,比看视频看书快多了。

6.jsp,servlet,tomcat: 这段时间说白了就是用jsp来做个网站,学习方法也很多种,可以看书比如java web 开发详解,我一同学就是看这本书看会的。

也可以继续看视频比如尚学堂的jsp,servlet。

7.学再多不实践也是不行的,这时候可以自己搞个小项目了,可以参考尚学堂shopping视频,bbs视频,不过这两个项目练练手可以,别往简历上写,太丢脸了。这其中还有很多小工具,例如jxl的excel读写,jfreechat的图表生成等等,实在不行进公司再学也行,因为不一定每家公司都用这些东西。

8.开始进入框架时代,框架说白了就是加速开发的工具,内在原理还是以上的那些东西 主要是3大框架:

mvc框架:struts,struts2,jsf

or映射框架:hibernate,ibatis

业务框架:spring

重量级框架:ejb

每种挑一样学即可,因为大概都差不多,学了一种同类产品可以在3天内搞定 学习方法分两类

1.看视频:时间长,要有耐性,估计全看完要1个半月,基本可以学全开发用的东西,但是对内在原理了解不深。

2.看网上资料,看书:速度因人而已,领悟力强的半个月就能搞定,学的东西还比看视频多,毕竟学到这阶段都有点基础了,可以研究下程度更深的东西,如果自觉不够聪明就别勉强了,说不定3个月还云里雾里。

当年我基本是2种结合,一边利用上无聊课的时间看书,大学这种课应该还不算少,视频如果觉得会了就拉过去。

视频主要是2家,尚学堂的够全面,但不够深入,学起来比较简单。

传知播客够深入,也全面,但是学起来比较难。

9.最后一个,在我面试的经历中几乎必问的东西,AJAX

首先是搞清楚原理,最基础的那段js调用服务器的代码必背,

然后是学一个ajax框架,推荐jquery学起来简单,ext备选,用的人多。

10.webservice,ant,gis等等等等。

这些东西笔试面试最多问你做没做过,基本不影响你进公司,以后有机会就在项目中学。

11.面试之前自己做一个拿的出手的项目,不需要太大,4,5张表即可,但一定要够花哨,ssh框架全用上,ajax必用,报表功能必有,面试的时候就拿这项目猛吹,然后源码丢给他,基本就没啥问题了(美工直接上网抄,或者上网找个现成的项目扒光后台全部自己写)。 最后,送你一句话,男儿当自强。

在程序员这行里,能力远远大于学历,你相信你能成功,你就能成功!


第二篇:java学习心得


java学习心得.txt如果你看到面前的阴影,别怕,那是因为你的背后有阳光!我允许你走进我的世界,但绝不允许你在我的世界里走来走去。 本文由junpeng258贡献

doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 java 是一种面向对象语言,真正的面向对象,任何函数和变量都以类(class)封装起来 java 所有的源码以及编译后的文件都以类的形式存在 java 没有所谓的类外部定义,所有的函数(方法)以及变量(属性)都必须在类内部定义 java 完全屏蔽了指针,同时引入了垃圾回收机制,它完全屏蔽了内存管理 java 其实也无法保证程序不去调用空的指针,但是它会在最大程度上避免空指针的调用 虚拟机跨平台,这是 java 最大的特点 java 可以做到在 windows 上编译,然后在 unix 上运行 在这三个 J2*E 中 J2SE 是基础,就是 java 2 的标准版(java 2 standard edition) 也就是最基础的 java 语言部分,无论学什么 java 技术,J2SE 都是必须掌握的 要使用 J2SE 就必须安装 JDK(java development kit) JDK 包含有五个部分: 核心 API, 集成 API, 用户界面 API, 发布技术, java 虚拟机 有 (JVM) 运行环境最主要要说的就是 java 虚拟机(JVM) java 是跨平台的语言,那么如何做到跨平台呢?java 的设计者们提出了一个虚拟机的概念 在操作系统之上建立一个统一的平台,这个平台必须实现某些功能以支持程序的运行 如下图: | program | | JVM | | UNIX | Windows | Linux | Solaris |.. 程序员所写的每一个程序都先运行在虚拟机上 所有操作都必须经过虚拟机才能和操作系统交互 这样做不仅统一了所有操作系统,同时也保证了操作系统的安全 要死机的话,死的是虚拟机(JVM)而操作系统并不会受此影响 JDK(java development kit)的 API,用 JDK 来包括运行环境以及开发工具 那么什么是 API? 简单地说就是 Application Programming Interface,应用程序编程接口 在 java 里面,就是一些已经写好了的类打成的包 包就是类的集合,一个包包含零个或多个类,这些类是 java 的基础类,常用的类,可以简 单理解成 java 的工具集 JDK 的发布技术,讲白了就是编译器 将.java 文件转换成.class 文件的一种技术 这三部分组成了 JDK,有了 JDK,就可以开发出 J2SE 应用软件了 最原始的只要用一个记事本写几行代码就可以了 但一般来说我们会使用效果比较好的开发工具,也就是 IDE

在 J2SE 这一块,特别推荐 JCreator 这款 IDE java 企业级应用分为硬件篇和软件篇 重点在软件,硬件是外延,严格地说与 java 没有必然联系 硬件是软件的基础 硬件,简单地说就是我们实际生活中看得见摸得着的东西 也就是那些冰冷的机器,比如服务器,个人电脑还有网络交换机,路由器等等 简单划分为:服务器,工作站还有微机 服务器(server) 服务器涵盖了几乎所有的大型机以及大部分中型机甚至一些小型机 比如提供门户站点相关服务(sina) ,比如电子商务(ebay,阿里巴巴) 这些服务对机器都有一些特定的要求,尤其强调安全和稳定 工作站(workstation) 工作站其实是图形工作站的简称,说白了,就是某种功能极其强大的计算机 用于特定领域,比如工程设计,动画制作,科学研究等 个人电脑/微机(pc) 计算机网络的最末端 说完了分类,我们就来说说各个硬件供应商 首先是服务器还有工作站 这两类硬件供应商主要是以下三家:Sun,IBM 还有 HP(惠普) 然后是网络,也就是路由器和交换机:Cisco(思科)Brocade(博科)还有 McDATA 三足鼎立 内核(CPU) PC 内核:主要是 AMD 和 Intel, 所谓软件通俗地说就是一套计算机程序,实现了某些功能的计算机程序 在很早很早以前,一台计算机的软件是不分层次结构的,一台计算机只有一个系统,这个系 统既是操作系统又是应用软件,与硬件紧密绑定 后来经过许多年的发展, 人们把一些与硬件紧密相连的又经常用到必不可少的功能做到一套 程序中去,这一套程序就被人们称做操作系统 另外一些可有可无的,不同工作适应不同环境的功能封装到另外一套程序中去 而这一系列程序被人们称作应用软件 如下图: |应用软件:falshgat/IE/realplayer/winamp..|

|操作系统:UNIX/Windows/Linux/Solaris……

|

硬件分为服务器工作站与 pc,其实无论哪种硬件的软件,都有操作系统与应用软件 在现在企业级应用中,我们的应用软件一般分为三层:表示层,业务逻辑层,数据持久层 我们来说说三层中的代表软件 表示层 这一层一般在客户端 pc 机上,最常见的是 IE 浏览器,这就是表示层的软件 表示层是直接与使用者交互的软件 业务逻辑层 这一层一般在服务器端,所有业务逻辑处理都在这一层完成 最典型的是 appserver,比如 IBM 的 websphere,BEA 的 weblogic 还有 tomcat/jboss 等 这一层也是三层中的重点, 我们要说的大部分内容都是关于这一层的, 这一层就叫做中间层 数据持久层 这一层典型的就是数据库,一般也在服务器端 但该服务器一般与装业务逻辑层软件的服务器分开 这一层要做的就是保存数据,业务逻辑层软件一般不负责保留数据 或者说业务逻辑层只负责暂时储存数据,一关机,业务逻辑层数据全部 over 了 那么数据的持久化(也就是储存数据)就必须要在这一层完成 中间件是业务逻辑层的应用软件,是处理业务数据与客户端之间业务逻辑的一种应用软件 一种提供网络服务的服务器端应用软件 举个非常简单的例子,网上银行,某个人想用 IE 进入工行的账户,然后转帐,在这个例子 中,客户端表示层显然是 IE,数据持久层显然是银行的核心数据库 那么中间件是什么?中间件就是提供这种服务的系统 这三层的划分如下 |表示层 | 业务逻辑层 | 数据持久层 | | IE | 网上银行 | 数据库 |

下面重点介绍一下中间件,也就是业务逻辑层的软件结构 java 程序是跑在虚拟机之上的 也就是说操作系统先运行一个 java 虚拟机,然后再在虚拟机之上运行 java 程序 这样做的好处就是安全,一旦出现病毒或是其他什么东西,挂掉的是虚拟机,操作系统并不会受多大影响

我举出四组工程师:网络工程师,数据库工程师,操作系统工程师以及设计网上银行系统的业务工程师 每个项目都需要,我们是不是可以用一个产品来取代这三组的工程师呢? 我们的业务工程师只需要遵循这个产品所提供的接口,进行相应的开发就行了 人们提出了一种叫做 appserver 也就是应用服务器的东西 应用服务器是干什么的?按官方的说法,应用服务器是包括有多个容器的软件服务器

什么是组件?组件其实就是一个应用程序块,但是它们不是完整的应用程序,不能单独运行 就有如一辆汽车,车门是一个组件,车灯也是一个组件,但是光有车灯车门没有用,它们不能跑上公路 在 java 中这些组件就叫做 javabean 特别说明的是,由于任何一个 java 文件编译以后都是以类的形式存在,所以 javabean 肯定也是一个类

容器里装载的是什么呢?就是这些组件,而容器之外的程序需要和这些组件交互必须通过容器 举个例子,IE 发送了一个请求给容器,容器通过调用其中的一个组件进行相关处理之后,将结果反馈给 I E,这种与客户端软件交互的组件就叫做 servlet

但是组件有很多种,那么如何区分这些组件呢? 有多种管理办法,比如同是同样是 servlet,有些是通过 jsp 生成的,而有些是开发人员自己写的 通过 jsp 生成的 servlet 集中放在一个地方,而开发人员自己写的则需要在 xml 里面配置一些基本的参数 同时,不同组件有可能还需要继承一些特定的父类或者接口,这也是容器管理的需要

那么容器有很多种,按照他们装载的组件类型划分 比如有装 ejb 的 ejb 容器,有装 servlet 与 jsp 还有静态页面的 web 容器等等 //这种只含有 web 容器的应用服务器也被叫做 web 服务器 当表示层的应用软件通过网络向 appserver 发送一个请求的时候 appserver 自动找到相应容器中的组件,执行组件中的程序块,把得到结果返还给客户 而我们要做的事就是写组件也就是 javabean,然后放到 appserver 里面去就可以了

appserver 与其他相关软件的关系如下图: | 表示层 | 业务逻辑层 | 数据持久层 | | | | | | | client IE | | -> <| javabean | | | -> DB | | | | | |

appserver <-

|| | 虚拟机 |

||||

|

Windows

|

Linux/Saloris

|LinuxSaloris|

|||| 图上可以看出:虚拟机负责处理中间件与操作系统之间的交互,appserver 则负责组件的管理以及与其他两 层的业务交互

要说明的是上图中还包含有应用程序客户端容器(Application client container) ,管理应用程序客户端组件 的运行,应用程序客户端和它的容器运行在客户机,这种情况比较复杂一般说的是两个 server 之间的通讯 比如 jsp/servlet 容器在一个服务器上,而 ejb 容器在另外一个服务器上,这是分布式操作系统大面积应用的 基础

什么是中间件? appserver 就是所谓的中间件,但是中间件不仅有 appserver,还有其他的东西 换句话说,appserver 只是中间件的一种 而关于中间件有诸多规范以及遵循这些规范的模型,最流行的规范无非两种,一个是 j2ee 还有一个是.net

那么各大公司关于这两套规范各有什么产品以及周边呢?

j2ee: 黄金组合 操作系统:Solaris 应用服务器:Weblogic 数据库:Oracle 开发工具:JBuilider/IntelliJ IDEA

优点:性能一级棒,大企业大公司做系统的首选,世界五百强几乎都是这套组合 缺点:极贵

超级组合,也是最安全最酷的黄金组合,硬件采用 SUN 公司的机器 SUN 的服务器支持 Solaris 的效果自然不用说,Solaris 号称是世界上最安全的操作系统 Oracle 也是世界上最安全,性能最优的数据库,Weblogic 是当今性能最优的 appserver JBuilder 和 IDEA 各有所长,JBuilder 是 Borland 公司的招牌之一 ,是当今世界上最流行的 java IDE,用 d elphi 写的,IDEA 拥有插件功能,界面在所有 java IDE 中最为漂亮,用 java 写的 价格方面,Solaris 开源,但是 SUN 的服务器比较贵,Weblogic 最高是 34 万 oracle 标准版要 18.6 万,企业版要 49 万,JBuilder 要 2.7 万左右 IDEA 零售价大概是 500 美金,也就是 5000 多元

开源系列 应用服务器:JBoss 数据库:MySql 开发工具:Netbeans

优点:便宜,性能未必最佳,但是对付中小企业足够了

java 阵营最大的特色,免费,还有在开发工具这一栏 Eclipse 也是免费的 tomcat 仅有 web 容器而没有 ejb 容器,而 jboss 已经集成了 tomcat 下载了 jboss 之后,启动的同时也就启动了 tomcat,jboss 在 tomcat 基础之上多加了一个 ejb 容器 使得 jboss+tomcat 成为和 weblogic,websphere 之外又一个得到广泛应用的 appserver 现在大概是这样,中小型企业多用 jboss,如果应用小一点就用 tomcat 只有给那些大型企业做的项目,才会花钱去上一个 weblogic 或者 websphere 开发工具方面,netbeans 是 sun 公司极力推广的一种 IDE

IBM 套餐 操作系统:Linux 应用服务器:Websphere 数据库:DB2 开发工具:Eclipse/WebSphere Studio

优点:服务好,IBM 可以提供全套服务,也可以替客户承担风险 缺点:把机器数据全部交给 IBM,安全什么的都由不得你了

价格方面,Linux,DB2,Eclipse 都是开源产品,Websphere 目前零售价是 33.8 万人民币

.net: 微软阵营 操作系统:Window s 应用服务器:.net 应用服务器(IIS) 数据库:SqlServer 开发工具:MS Visual Studio 优点:客户端的用户体验良好,和客户端诸多微软产品的兼容性强 缺点:离开了微软,寸步难行,和其他任何一家公司的产品都不兼容 在其传统领域,比如写一些桌面软件等客户端应用上,.net 还是第一选择 由于 J2EE 得到了绝大多数 IT 企业的支持以及 JAVA 跨平台的特性 我们可以自由地定制个性化的组合 windows+jboss+eclipse+oracle solaris+websphere+IDEA+mysql 还有就是遵循 j2ee 规范的所有的组件都可以在不同的应用服务器上互相移植 比如可以在测试的时候用 jboss,而在正式投产上线的时候使用 websphere,只需要在配置文 件中作相应改动即可 Java 之父 James Gosling JavaBean 是什么? 咖啡豆 用 java 语言编写的可重用的软件组件 将 javabean 放入杯子//容器 就可以冲泡//编译 成咖啡,供客人们品尝//运行 容器从某种意义上说其实就是一个可运行的 java 写的应用程序 犹如 c++/c 编译后生成的.exe 文件 不同的是 java 编译后的文件需要用命令行或者脚本启动执行 由于容器是由 java 写的,所以容器都能够跨平台 但是大部分容器都针对不同的操作系统提供了不同的版本 但可以肯定的一点是,相同容器间的移植组件不需要重新编译 Servlet web 容器组件 Servlet 就是 web 容器运行的 java 组件,Servlet 定义了一系列方法,如 init()和 destroy() , 供容器调用,调用的主要目的是为了管理 当一个 request 请求被 web 容器截获之后,容器分析该请求地址,然后通过一个配置文件中 的映射表 web.xml,调用相应的 Servlet 组件处理后将结果返还给客户端

Oak//橡树

JSP//Java Server Page

web 容器组件 JSP 将 java 代码嵌入 html 代码内部 然后存成.jsp 文件,再由计算机编译生成 Servlet 储存起来 所以 JSP 和 Servlet 对于 web 容器来说其实是一种东西, 虽然它们编写遵循的标准有所不同 极大地简化了代码同时增加了代码的可读性,生产维护成本下降

EJB//Enterprise JavaBean ejb 容器组件 普通的 JavaBean 似乎并不能满足企业级应用的需要 最典型的就是虚拟机提供的垃圾回收收集机制也就是 GC 不够完善,可以优化的余地极大 EJB 和其它组件一样,不过遵循了某些规范而已 但是这些规范更多的是为充分利用机器并提高性能为主要目的 ejb 容器每天在干的事:管理内存中活跃的对象

JDBC 和数据库的连接 AppServer 不知道什么时候组件需要用到数据库 同时也需要开发人员告诉 AppServer 他们使用的是什么数据库,ip 地址等等 JDBC 就是关于这一套东西的规范,包括数据库的产商应提供什么样的接口 AppServer 应用服务器应该如何去连接,开发人员应该如何去配置这些连接等等

framework

框架就是那么一个通过预先写好代码从而帮我们建立起一个软件结构的这么一个东西 框架与规范//主要指 J2ee 规范也就是官方标准的区别 从某种意义上说,J2ee 规范本身就是一个框架 无论是 web 容器也好,还是 ejb 容器也好,它们都开发了一部分通用的代码 并且帮助我们搭建起来了一个软件结构,我们要做的就是往里面填入组件,比如 ejb/servlet/jsp 等等 框架是建立在规范之上的一种东西 可以说是标准的延续,或者说是民间的尝试,总之是这么一个非官方的东西

Struts 表示层框架,名字来源于飞机的金属框架 最早表示层说的是客户端,后来随着时间的发展人们也把服务器端直接与客户端//比如 IE 打交道的那部分 也称为表示层//JSP+Servlet 那么表示层框架是干什么的呢? 把表示层组件分为 V-Viewer,也就是 JSP;M-Model 模型,一般来说是一个 JavaBean;C-Controller 控制器, 一般来说是一个 Servlet 所有人通过 JSP 和服务器打交道,发送请求,Viewer 把这个请求转发给 Controller,

Controller 通过调用一

个 Model 来处理该请求,然后返回数据到 Viewer,从而达到数据与逻辑的剥离,增强代码可读性,降低维 护成本 对于这一层来说,在 JSP 的 html 代码中出现的 java 语句越少越好 因为 java 代码越少说明页面处理的业务逻辑越少,也越合理,这也是 Struts 最初的目的

Spring Spring 起源于 Rod Johnson 的《Expert One-on-One J2EE Design and Development》一书 Rod Johnson 认为,J2ee 里面的那一套//尤其是 ejb 太重了,对于单机的系统来说,没有必要使用那么复杂 的东西,于是就开始设计并引导 Spring 小组开发出这样一个构架 Spring 从诞生之日起就是针对 EJB 的,力争在不少应用上取代 EJB 现在包括 WebLogic 等主流应用服务器还有主流 IDE 都开始逐渐接受该框架,并提供相应支持 提到 Spring 就不能不说控制反转 Ioc//Inversion of Control 和依赖注射 DI//Dependency Injection 什么叫控制反转呢? 什么意思呢? 就好比一个皇帝和太监,有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女,皇帝往往不会告 诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女,其它一切都交由太监去安排, 到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上,这就是控制反转,而把美女送到皇帝的寝宫里 面去就是注射,太监就是是框架里面的注射控制器类 BeanFactory,负责找到美女并送到龙床上去,整个后 宫可以看成是 Spring 框架,美女就是 Spring 控制下的 JavaBean

而传统的模式就是一个饥渴男去找小姐出台,找领班,帮助给介绍一个云云,于是领班就开始给他张罗 , 介绍一个合适的给他,完事后,再把小姐还给领班,下次再来,这个过程中,领班就是查询上下文 Contex t,领班的一个职能就是给客户找到他们所要的小姐,这就是 lookup()方法,领班手中的小姐名录就是 JNDI //Java Naming and Directory Interface,小姐就是 EJB,饥渴男是客户端,青楼是 EJB 容器

看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去;而皇帝爽翻了,什 么都不用管,交给太监去处理,控制权转移到太监手中去了,而不是皇帝,必要时候由太监给注射进去就 可以了 看到 Spring 的美妙了吧,Spring 还提供了与多个主流框架的支持,可以和其它开源框架集成

Hibernate 名字取材自 ORM 最早的一句玩笑话//ORM 就是 OR-Mapping, 说用了 ORM 之后, 程序员就可以去冬眠了, 而不需要操心那么多事,这里不得不说的是,该框架由于做得太好,以至于被 J2ee 招安,成为 EJB3.0 的 一部分,替代原有 EJB2.X 里面关于 Entity Bean 而成为 EJB ORM 的工具

这里解释一下 ORM//OR-Mapping 中文名对象关系映射 什么意思呢?传统的数据库都是关系型的, 一条条记录以表格的形式储存, 而表与表之间充 斥着是关系/关联,比如说一个人,名字 zhaoce,性别男,年龄 23 那么数据库中是这么储存

的 姓名 性别年龄 zhaoce m 23 某女 f 22 而实际应用服务器中的实体都是以对象的形式存在,一个个对象 zhaoce 是以这种形式存在的 Human human=new Human(); human.setName("zhaoce") human.setSex("m"); human.setAge(23); 这样的,那么我们知道,传统的 JDBC 是通过一个二维字符串将数据取出,需要我们自己将 其包装成对象,在存入的时候,我们还需要将对象拆开,放入 sql 语句中//Insert into Huam n values('zhaoce','m',23),然后执行该 sql 语句,太麻烦,ORM 理念的提出改变了这一切,O RM 认为,这些东西应该由框架来做,而不是程序员,于是就出现了 Hibernate,JDO,Top Link 等等,甚至.net 里面也有 ADO.net Hibernate 逐渐成为主流并被官方接纳成为规范标准之一,替代掉原来 EJB2.X 的 ORM Enti tyBean TopLink 则是 Oracle 公司推出和 Oracle 数据库结合的一种 ORM 商业用软件,贵且复杂,不 过正在逐渐开放 而象表示层一样, 这一种专门面对数据层的代码也被称为数据持久层, 所以数据持久层这一 概念有时不仅仅指

代数据库 关于 ORM,最高的境界应该是在 java 代码中不出现任何一句的 sql 语句 注意,是不包括 sql 语句,Hibernate 的 hql 以及 ejb 的 ejb-ql 不算在内 至于出现不出现 hql/ejb-ql 等替代 ql,这要视具体情况而定,不过最好也是不出现 当然最后所说的过分理想的情况往往不现实,总之一句话 以 sql 为代表的 ql/*还有 hql,ejbql 等*/语句在代码中出现得越少越好 要指出的是框架不是应用程序, 只是一堆组件的有序复合, 应用时不能脱离于应用服务器单 独存在

设计模式 模式是什么?模式是经验的总结,潜规则的抽象 模式是编程高手之间交流的桥梁 两个编程高手通过统一命名的模式了解对方的思想 面向对象有常用的 21 种模式,需要掌握,主要分为创建,行为,结构三类 J2ee 有 J2ee 的模式,Sun 公司出了一本书叫《J2EE 核心模式》可以拿来看看 必需要指明的是,模式不是规范,只要你愿意,你就可以不遵循模式 模式之外还有反模式,学模式不可定势,不要学死,活学活用,无招胜有招才是最高境界 JavaDoc

文档工具,极其好用,可以根据注释自动生成 HTML 文档

Ant 创建者:James Duncan Davidson 组织管理工具,可以这么描述它 比如你想在编译之后自动再次生成 JavaDoc 那么你只需要编辑 Ant 脚本//对,就像 Windows 脚本那样,然后批处理就可以了,不过现在 Ant 已经广泛 集成到 IDE 中去,不需要自己手动编写 JUnit 测试工具,Unit 家族可不只有 JUnit,还有其它版本的

POJO //Plain Old Java Object 就是传统的 Java 对象,也就是一个 JavaBean,由虚拟机来掌握其生死 常用的两个管理构架/规范是 Spring 和 EJB 容器 由于这种东西缺乏管理,不象 Servlet 有专门的容器管理并继承了一定的类 而没有管理的对象在虚拟机中是很危险的,因为垃圾回收机制各个虚拟机不同,而且也不怎样,极有可能 长时间不回收,这样在企业级的应用中就有可能造成内存大量被占用从而死机,毫无疑问,这种机制需要 优化,这种优化就是通过 EJB 容器或者 Spring 构架来实现,这么做还有一个好处就是迫使程序员对每一个 类做封装,强迫他做管理,以达到防止内存泄露的目的,内存泄露最经常出现的错误就是引用未释放,引 用最典型体现在 new 这个关键字上,new 得越多引用得越多,随着时间地增长,有可能导致循环,不停 ne w,其中哪怕只要有一个 new 处理不当,虚拟机无法回收内存,那就极有可能完蛋,而且这种小 bug 越是 在大的项目越是难以找到,有可能因为一个人而影响整个项目组,所以不妨记住我的一条经验:好的系统 框架不应该在业务逻辑流程中出现 new 关键字

SOA 面向服务的构架,这个属于上上层建筑 面向什么就是对什么做封装,面向对象就是对对象做封装,面向服务类似,剩下的靠悟性

反射 1.4 新增功能,通过反射,程序可以解析出类本身的属性也就是变量 还有行为也就是方法,然后通过 invoke()方法调用该方法,甚至可以新增对象等,java 首创

容器 5.0 以后的版本在 J2SE 中都出现了容器 各位甚至可以自己尝试用标准库去使用容器

更多相关推荐:
民法学习心得体会

民法学习心得体会民法原理在我们现实生活中真的是无处不在,衣食住行各方面都有可能会和民法打上“交道”,毫不夸张的说,我们每个人从出生到死亡基本上都是生活在民法的框架范围内,因此学习好民法,掌握好民法,运用好民法就…

民族团结学习心得体会1

民族团结学习心得体会王帅自公元前xx年西汉设西域都护府以来,新疆就作为祖国不可分割的一部分纳入了祖国版图。几千年来,在这块土地上各族人民交融相处繁衍生息,共同缔造了灿烂辉煌的中华文化,谱写了一曲曲维护祖国统一、…

外训学习心得

参《采购价格与成本分析效益实务》之学习心得为时一天的培训课程结束了,时间虽短,但受益匪浅。我深刻领会到,作为一名合格的采购员,应具备一个管理者所拥有的思维度及对事物分析的敏锐度,更要学会倾听,掌握沟通技巧等多项…

广告学习心得作业

广告学习心得每天每个电视台都会播放广告,特别是在每次播放精彩节目的瞬间都会插播广告这对我来说已经是司空见惯了。所以一直以来我对广告没有什么好感。在上这门课之前我对广告艺术也是一无所知.在我眼中它们只不过是投资商…

法律的学习心得体会

法律的学习心得体会自XX年x月份以来,我们在学校领导的组织下,通过多种形式,进行了“法律进学校”的学习。我们集中学习了《中华人民共和国宪法》、《中华人民共和国教育法》、《中华人民共和国义务教育法》、《中华人民共…

学习心得

国培学习心得体会——湖北省黄梅县柳林乡中学梅利今年,我非常幸运地参加了“国培”教师培训,在培训学习期间,聆听了很多专家和名师的报告,他们以鲜活的案例和丰富的知识内涵及精湛的理论阐述,给了我强烈的感染和深深的理论…

学习心得

学习“吴大奎董事长讲话”的心得吴大奎董事长在柳州银海铝调研期间作了题为《新班子新柳铝新景象》的即兴讲话。在目前经济大环境不景气的现状下,这次讲话的内容非常的重要,对集团下属企业有着宏观上的指导意义。安徽广银领导…

学习心得体会——集团培训

学习心得体会————铸造公司-杨华武通过一年多的学习,我们系统的学习了管理方面,财务成本方面,专业技术方面的知识,在集团公司的高度重视和组织安排下,在老师精心备课,激情讲解下,我们学习结束了,感觉受益匪浅,现把…

关于科学发展观研究性学习心得体会

关于科学发展观研究性学习心得体会我们根据老师对关于中国特色社会主义理论的课题研究的要求,经协商决定对科学发展观这个课题进行研究,大致对科学发展观的含义、内容及其意义进行研究,我们分工合作,我所要找的相关资料是科…

3~6岁儿童学习与发展指南学习心得

《3-6岁儿童学习与发展指南》学习心得体会20xx年x月x日至10月x日,这两天的时间我们聆听了百色学院赵美音讲师及百色市幼儿园王春梅园长和百色市黄小专副科长对《3-6岁儿童学习与发展指南》的解读,以下是我听后…

二年级上册教材分析 学习心得

二年级上册教材分析学习心得今天,我学习了《二年级上册教材分析》,受益良多。现在我谈谈自己的学习心得。通过这次学习,使我更清楚地了解到本教材具有以下特点:围绕专题整合教材内容;课文具时代感,贴近儿童生活;课后练习…

《中小学班主任实务》课程学习心得体会

《中小学班主任实务》课程学习心得体会本学期参加了《中小学班主任实务》网络课程的学习,虽然我是一名有了10多年班龄的班主任,但是在认真学习完所有学习材料后还是觉得有很大收获。通过学习让我在理论和实践操作两个层面都…

学习心得(464篇)