写在“轻量级开发”聊天活动之后

时间:2022-05-10 09:06:32

因为小蛇,我之前为CSDN将要开始的“轻量级开发”聊天活动准备问题,于是写了一篇《Spring的疑问若干》。前天,这个聊天活动结束了,我因为搬家,错过了时间,没有第一时间看到聊天记录。不过现在查看了聊天记录之后,我将之前的问题整理了答案:

1、新手达到什么程度可以开始spring的学习?

答:最简单的来说,一年多持续的Java Web应用开发经验,基本上就没太大问题。 目前公司团队中,几乎所有团队成员都是从进入公司开始学习应用Spring,从学习的速度来观察,基本上一年的实际WEB开发经验,已经足以产生理解Spring基础结构的基础。这时候,只要有适当的资料加以辅导,应该学习曲线不会太过难看,呵呵。(夏昕的回答)

最开始提出这个问题时,我的考虑是对于spring,新手上手之时会畏难,心理没底从而不知道如何下手,同时会怀疑自己是否具有学好spring的能力。而如果专家能够给出一种说法,相信能够帮到很多新手。

以下是我的理解,一年时间并不是必须的,实际上学习spring最重要的条件是具备web开发的基础知识,至少有一个完整的项目开发经验(帮助你理解应用开发中的各个不同层面),对MVC/ORM有基本的认识,这个时候再有一两本合适的入门书(例如《Spring技术手册》)就perfect了。

 

2、学习J2EE开发的人,不学习spring可以么?

答:可以的啊!并没有规定一定要学过J2EE,才可以学习Spring,也没有规定一定要学过Spring,才可以学习J2EE,只是,学习Spring,甚至是一些Opensource project,重点是了解其精神,学过Spring,有助于您在J2EE开发时的设计,事实上,Opensource界在Java的设计精神上取得很大的胜利,在未来的Java EE中,有很多都是借镜Opensource界的经验,具体就是采用了Spring/Hibernate的一些设计精神,在这种情况下,学习Spring,或说过学过Spring/Hibernate等,多少有助于了解将来的Java EE。 (林信良的回答)

深深的同意。林信良自己是SUN教育训练中心讲师,谈到学习问题自然很有见地。刚开始学技术,大家都会有这样的感觉,.net比Java上手。这既有微软的原因,同时也跟Java学习的特点有关。学习java意味着你需要花大量的时间去深入了解细节,从而理解各种J2EE技术的内涵。学习Java EE的人,未来最大的收获应该是来自于设计思想,而不只是技术本身。

3、对spring的学习和应用有没有能力程度的区分?(有的话,依据是什么)

答:对Spring的学习和应用,很多情况下是受制于学习者对于“设计”本身的领悟。从某些方面来讲,可能好奇心比所谓的能力更加重要一点。(夏昕的回答)

呜呜,夏帅哥的回答让我有点郁闷。出于私心,我是期望他能够定义出他认为的层次区分的,我认为这样的能力区分能够为学习spring的人提供方向导引。

4、学习spring的好书和论坛有哪些?

答:我入门Spring时,夏昕先生的Open Doc给了我很大的帮助,Spring in action是本入门的好书,Spring的参考文档一定要看,另一方面,也可以看看Professional Java Development with Spring Framework,当然,最重要的,如果有时间,回去翻翻J2EE without EJB。(林信良的回答)

 其实近期国内出版的几本书籍,我都看过,都是很不错的Spring参考资料。 林先生的就不错 :) 毕竟这也是出版社在咨询了很多专家之后确认的出版计划。 至于论坛,csdn,javaeye和cjsdn都值得推荐。csdn以人气取胜,javaeye和cjsdn则相对讨论较为深一点,适合有一定经验的Spring使用者。(夏昕的回答)

嘻嘻,提这个问题,纯粹是为了让专家给新手指路,同时也宣传好书。

5、什么情况下适合将spring纳入项目中加以应用?(最适合spring应用的场景有哪些)

答:使用Spring,最怕的是为了Spring而Spring,为了IoC而IoC,为了AOP而AOP,这样的话,Spring对您没有好处,有几点可以参考…

1. 當元件出現重用時,才開始考慮使用 Spring IoC。

2. 元件動用到外部資源時,使用 Spring IoC。

3. 當元件需要 AOP 時,再考慮設定到 Spring xml。

4. 能不用 Spring IoC 就不用!

5. 不要為Spring而Spring。

6. 不要為IoC而IoC。

7. 不要為AOP而AOP。

简单的说,采XP的方式,可以让您考量到,何时该采用Spring,何时该采用IoC、AOP等。 这边有个案例可以参考: http://www.javaworld.com.tw/roller/page/ingramchen?entry=2006_2_1_KeepSpringIoCCoarseGrained

另一方面,Spring在JDBC这方面所提供的封装,其实蛮值得分开来看看的,可以省去不少的功夫。 (林信良的回答)

这样的答案为大家提供了思考和进行选择时的原则:)

6、ruby on rails出现后,spring是否能够适应现在互联网敏捷开发的要求?

答:可能这不仅仅是Spring的问题。而是Java WEB开发与ROR开发之争了。目前来看,Spring还谈不上是一个WEB的RAD框架,它本身还是定位于一个微内核容器,希望会有相关的子项目出现。 对于java web开发中的RAD感兴趣的,可以去看看RIFE,可以说是ROR的Java实现,这其实很早就出现了。(夏昕的回答)

gigix前不久在csdn搞了一次“敏捷开发”的聊天,问这个问题纯粹因为受上次聊天活动的影响。

7、有多少企业将spring应用于现有的开发当中?

答:这个问题没有被提出来,不过答案应该是比较显然了,呵呵,很多企业都在用。当时提出这个问题是打算凑数,小蛇让我提10个问题,我的脑袋想破了。。。。:(

_______________________________________________________________________

补充的几个问题:

1、相比较仅仅使用jsp或者struts等简单框架的开发,使用了spring的web应用,其性能如何?

答:客观来讲,Spring的微内核容器的确会在一定程度上消耗额外的系统性能。 不过,除非对于并发性能(比如超大规模论坛)、实时性能(比如超大规模信用卡在线交易系统)关键的业务系统,我还是推荐使用Spring进行开发。 Spring为我们带来的系统结构和开发上的帮助,远远可以抵消这部分损失。 (夏昕的回答)

呵呵,JavaEE中提到的复杂技术以及Java领域流行的框架都是为非一般业务服务的。90%的问题,我们使用JSP+Servlet就够了,但如果仅仅使用JSP/Servlet这些简单的技术,客户无法相信它们能够达到稳定性和实时性等要求,而本身系统的扩展能力都会受到局限。

2、spring能够粘合不同层面的解决方案,但无论是MVC层还是ORM层,Java领域从来都不缺少好的框架,我们使用spring时,在这些框架中做选择的依据是什么?

答:选用框架的依据,主要是考虑稳定性,例如Struts,虽然它是个相对古老的框架,但稳定性高,也许就现在的设计观点来说,它旧了,但开发不是追求流行,不是最新的框架就最好,另一点,选择框架的一个重点常被忽略,那就是人员培训,一个好但复杂的框架,一个好但文件缺乏的框架,用了好吗?开发不是一个、两个人的事,而是众人的事,我看过很多公司为了追求流行而忽略这点。 (林信良的回答)

Java的开源事业空前繁荣,正因为这样,java开发人员往往面临的选择很多,同时知识的更新速度要求很高,因为不学习就会迅速的在个人知识能力上落后于主流。但个人能力与产品开发是要把握平衡的,开发过程中最重要的是采取合适的方案去完成项目,并且对后续工作提供足够的支持。我自己看到的多数资料中,框架选择问题主要集中在MVC层和ORM层,Struts/Webwork+Spring+Hibernate/iBatis的选择是主流。

3、Java领域的开源事业空前繁荣,spring作为期待包容开源框架的产品,它的研发更新速度是否能够适应Java开源领域以及企业应用领域的需要呢?

答:从目前的情况来看,Spring已经做到了这一点。很多新开发的企业级应用系统,已经建立在Spring框架之上。(夏昕的回答)

这个问题我没有设计好,当时期望让夏昕与林信良去探讨的是未来spring的发展方向以及web framework的发展趋势。因为所要问的内容太过抽象,所以没有组织出合适的提问词句:(