山那边是海 发表于 2015-1-18 11:36:24

JAVA编程:Java 进修杂谈(七):接口、组件和容器仓酷云

由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,终究又静上去持续写这个主题的续篇,前六篇次要讲了一些J2se方面的履历和感觉,眼下Java使用局限已被J2ee占有了相称年夜的一块范畴,有些人乃至宣称Java被J2ee所代替了。不晓得人人怎样来了解所谓的J2ee(Java2EnterpriseEdition),也就是Java企业级使用?

笔者的概念是,手艺的开展是适应天下变更的趋向的,从C/S过渡到B/S形式,从客户真个角度思索企业级使用大概说电子商务范畴不在体贴客户端保护成绩,这个义务已交给了任何一台PC城市有的扫瞄器往保护;从服务器真个角度思索,以往C/S中的TCP/IP协定完成载体ServerSocket被WebServerContainer所代替,比方人人都很熟习的Tomcat、JBoss、WebLogic等等。总之统统的变化都是为了使得Java手艺能更好的为人类临盆生存所服务。

有人会问,间接往学J2ee跳过J2se行否?笔者是一定不同意的,实践上的确有人走这条路,但笔者本身体味是恰是因为J2se的基本很固定,才会招致在J2ee进修的路途上顺风逆水,常识点上不会有甚么利诱的中央。举个复杂的例子吧:

笔者已经跟年夜学同砚会商上面这两种写法的区分:
ArrayListlist=newArrayList();//笔者不说否决,但最少不同意
Listlist=newArrayList();//笔者撑持
已经笔者跟同砚争辩了几个小时,他非说第一种写法更迷信,第二种完整没有需要。我没法完整压服他,但笔者以为优秀的习气和认识是任什么时候候都应当针对接口编程,以到达解耦合和可扩大性的目标。上面就以接口入手下手进进J2ee的天下吧:

1.J2ee与接口

每个版本的J2ee都对应着一个断定版本的JDK,J2ee1.4对应Jdk1.4,如今对照新的是JDK5.0,天然也会有J2EE5.0。实在笔者一向在用的是J2EE1.4,不外没甚么干系,人人能够下任何一个版本的J2eeapi来略微扫瞄一下。笔者想先声明一个观点,J2ee也是源自Java,以是底层的操纵仍然挪用到良多J2se的库,以是才倡议人人先紧紧把握J2se的支流手艺。

J2eeapi有一个特性,人人对照熟习的几个包java.jms、javax.servlet.http、javax.ejb等都以interface占多数,完成类较少。实在人人真正在用的时分百分之六十以上都在重复的查着javax.servlet.http这个包上面几个完成类的api函数,其他的包很少问津。笔者倡议在进修一种手艺之前,对全体的框架有一个懂得是很有需要的,J2ee旨在经由过程interface的声明来标准完成的举动,任何第三方的厂商想要供应本人品牌的完成条件也是遵守这些接口界说的划定规矩。假如在夙昔J2se进修的路途上对接口的了解很好的话,这里的体味将长短常深入的,举个复杂的例子:

publicinterfaceMp3{
publicvoidplay();
publicvoidrecord();
publicvoidstop();
}

假如我界说这个复杂的接口,公布进来,划定任何第三方的公司想推出本人的名字为Mp3的产物都必需完成这个接口,也就是最少供应接口中办法的详细完成。这个意义已远远不止是面向对象的多态了,只要厂商遵守J2ee的接口界说,天下上的J2ee程序员才干针对一致的接口举行程序计划,终极不必改动代码只是由于利用了分歧厂商的完成类而有分歧的特征而已,实质上说,不管哪种厂商完成都完成了职责局限内的事情。这个就是笔者想一向夸大的,针对接口编程的头脑。

接口究竟有甚么优点呢?我们如许假想,如今有AppleMp3、SonyMp3、SamsungMp3都完成了这个Mp3的接口,因而都有了play、record、stop这三个功效。我们将Mp3产物坐位一个组件的时分就不必要晓得它的详细完成,只需看到接口界说晓得这个对象有3个功效就能够利用了。那末相似上面如许的营业就完整能够在任什么时候间从3个品牌扩大就任意个品牌,开个打趣的说,项目司理居高临下的写完10个接口里的办法声明,然后就丢给部下的程序员往写内里的细节,因为接口已一致(即每一个办法传进和传出的格局已一致),司理只需存眷全局的营业就能够每天端杯咖啡走来走往了,^_^:
publicMp3create();
publicvoidcopy(Mp3mp3);
publicMp3getMp3();

最初用一个复杂的例子申明接口:一个5号电池的手电筒,能够装进任何牌子的5号电池,只需它切合5号电池的标准,装进以后任何看不到是甚么牌子,只能感觉得手电筒在完成它的功效。那末临盆手电筒的厂商和临盆5号电池的厂商就能够完整排除依附干系,能够各自自在开辟本人的产物,由于它们都恪守5号电池应有的外形、正负极地位等商定。这下人人能对接口多一点体味了么?

2.组件和容器
针对接口是笔者特地夸大的J2ee进修之路必备的头脑,别的一个就是对照惯例的组件和容器的观点了。良多课本和专业网站都说J2EE的中心是一组标准与指南,夸大J2ee的中心观点就是组件+容器,这的确是无可厚非的。跟着愈来愈多的J2ee框架呈现,响应的每种框架都一样平常有与之对应的容器。

容器,是用来办理组件举动的一个汇合工具,组件的举动包含与内部情况的交互、组件的性命周期、组件之间的互助依附干系等等。J2ee包括的容器品种约莫有Web容器、ApplicationClient容器、EJB容器、Applet客户端容器等。但在笔者看来,如今容器的观点变得有点含混了,人人耳熟能详是那些功效壮大的开源框架,好比Hibernate、Struts2、Spring、JSF等,个中Hibernate就基于JDBC的基本封装了对事件和会话的办理,年夜小气便了对数据库操纵的烦琐代码,从这个意义下去说它已靠近容器的观点了,EJB的实体Bean也渐渐被以Hibernate为代表的耐久化框架所代替。

组件,本意是指能够重用的代码单位,一样平常代表着一个大概一组能够自力出来的功效模块,在J2ee中组件的品种有良多种,对照罕见的是EJB组件、DAO组件、客户端组件大概使用程序组件等,它们有个配合特性是分离会打包成.war,.jar,.jar,.ear,每一个组件由特定格局的xml形貌符文件举行形貌,并且服务器真个组件都必要被部署到使用服务器下面才干够被利用。

略微了解完组件和容器,另有一个主要的观点就是分层模子,最出名确当然是MVC三层模子。在一个年夜的工程或项目中,为了让前台和背景各个模块的编程职员可以同时举行事情进步开辟效力,最主要的就是完成层与层之间的耦合干系,很多分层模子的主旨和开源框架所寻求的也就是如许的效果。在笔者看来,一个完全的Web项目也许有以下几个条理:

a)暗示层(Jsp、Html、Javascript、Ajax、Flash等等手艺对其撑持)
b)把持层(Struts、JSF、WebWork等等框架在基于Servlet的基本上撑持,卖力把详细的哀求数据(偶然卸载从头装载)导向合适处置它的模子层对象)
c)模子层(笔者以为今朝最好的框架是Spring,本色就是处置暗示层经过把持层转发过去的数据,包括着大批的营业逻辑)
d)数据层(Hibernate、JDBC、EJB等,由模子层处置完了耐久化到数据库中)

固然,这仅仅是笔者团体的概念,仅仅是供人人进修做一个参考,假如要完成这些层之间的完整分别,那末一个年夜的工程,能够仅仅经由过程增添人手就来完成义务。固然《人月神话》中已很明白的论述了增添人手其实不能是效力增添,很年夜水平上是由于相互做的事情有按次上的依附干系大概说难度和事情量上的伟大差异。固然幻想形态在实在天下中是不成能到达的,但我们永久应当朝着这个偏向往不休勉力。最入手下手所倡始的针对接口来编程,哪怕是小小的细节,写一条Listlist==newArrayList()语句也能表现着到处皆利用接口的头脑在内里。Anyway,这只是个开篇,笔者会就本人用过的J2ee手艺和框架再细化谈一些履历
来自:http://topic.csdn.net/u/20070924/21/18482496-082f-4907-8751-b80ab5d56622.html?seed=1386683868

JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。

乐观 发表于 2015-1-21 10:55:30

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

爱飞 发表于 2015-1-25 12:09:59

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

冷月葬花魂 发表于 2015-1-26 17:11:05

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

再现理想 发表于 2015-2-4 17:01:16

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

不帅 发表于 2015-2-10 04:26:51

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

小魔女 发表于 2015-2-28 19:43:24

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

再见西城 发表于 2015-3-10 07:22:12

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

变相怪杰 发表于 2015-3-11 20:34:08

是一种为 Internet发展的计算机语言

灵魂腐蚀 发表于 2015-3-17 09:09:20

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

小妖女 发表于 2015-3-24 04:47:25

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

仓酷云 发表于 2015-4-3 10:43:33

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

老尸 发表于 2015-4-10 08:30:18

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

柔情似水 发表于 2015-5-5 06:03:48

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

因胸联盟 发表于 2015-5-6 05:11:45

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

小女巫 发表于 2015-6-28 11:30:46

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

海妖 发表于 2015-7-7 06:54:11

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

简单生活 发表于 2015-7-16 00:12:26

是一种语言,用以产生「小应用程序(Applet(s))

愤怒的大鸟 发表于 2015-7-26 03:11:45

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

飘飘悠悠 发表于 2015-9-25 11:18:32

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页: [1]
查看完整版本: JAVA编程:Java 进修杂谈(七):接口、组件和容器仓酷云