因为小蛇,我之前为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的发展趋势。因为所要问的内容太过抽象,所以没有组织出合适的提问词句:(
发表评论
-
说说如何写分析类文章
2006-02-07 00:59 2010最近两周,在csdn上看到好几篇教人如何写文章的blog,例如 ... -
第三方点评如何发展
2006-02-07 01:02 1166在电子商务世界杂志刊登的《中国电子商务2006年八大电子商务 ... -
博客营销
2006-03-05 10:49 1592本文是我为论文的写作 ... -
广州UG亲历记
2006-03-13 01:30 1007User Group活动我听说的次数很多,亲身参加还是第一次: ... -
买了国外的虚拟主机
2006-05-11 02:29 1084人总是很复杂的,没有 ... -
web应用的跨域访问解决方案
2006-05-14 13:48 2380做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中,我 ... -
如何获得网站实时代码
2006-05-15 00:12 1289看《Ajax修炼之道》一书的时候,第一次认识了Instant ... -
Javascript的认识层次
2006-08-17 10:35 1015Javascript的普及应用率远比Java高,它与CSS和H ... -
Spring的疑问若干
2006-08-25 07:25 1056关于spring的疑问若干,先提在这。 1、新手达到什么程度可 ... -
攀登爪哇山
2006-08-28 00:43 952以前给别人做过Java方面 ... -
怀平凡心做小事情
2006-08-30 23:21 1097与人交流,逛逛blog,偶 ... -
九月最热门的25个开源项目
2006-09-13 08:13 43251. Gaim 即时通讯项目,支持AIM, ICQ, Yaho ... -
EJB3.0的目标
2006-09-18 08:32 1776很多Java开发人员不了解 ... -
别把web开发高手不当高手
2006-09-24 17:23 1050继上次百度被攻击之后 ... -
hibernate学习要点指引
2006-10-24 08:14 1366最近几天,团队有几个人在blog上开始贴自己学习hiberna ... -
Google所有服务列表(2006年10月27日版)
2006-10-25 21:55 2108今天由于搜集Google相关资料的关系,对互联网上的Go ... -
Google的API介绍
2006-10-27 10:26 14712关于Google的APIs,大 ... -
Google搜索风云榜
2006-10-28 00:43 5859在搜索趋势服务领域,百度有百度指数,Google有Google ... -
互联网的思维
2006-11-02 23:14 1568中国网民数量已经突破1.25亿了,光从数量的角度来看,大众已经 ... -
about google fans
2006-11-04 20:31 1744不知道百度的拥趸是否有这么疯狂,但我通过搜索已经了解了goog ...
相关推荐
之前在nuget上看到qiniu的官方SDK引用进来后,会提醒你该sdk是基于.NET Framework版本,那如果部署在IIS下是没问题的,但是如果部署在linux下,那就跑不起来了,基于此,也为了以后方便其他项目的迁移,就捣鼓了一个...
它轻量级、易于阅读和编写,便于Java后端与JSP前端交换聊天数据。 6. **Session和Cookie管理**:在聊天室中,用户身份验证和状态跟踪是必要的。Java的HttpSession接口和Cookie机制可用于管理用户的登录状态,确保...
jQuery则是一个轻量级的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互。在聊天应用中,jQuery用于动态更新页面内容,实现客户端的即时通信效果,如发送消息、接收消息并显示在聊天窗口中,...
它是一个轻量级的库,专门用于在输入框中实现类似GitHub风格的提及功能。Tribute.js提供了丰富的自定义选项,如数据源、触发词、模板等,使得开发者可以根据自己的需求定制提及功能。在Vue.js项目中,可以通过Vue...
9. **VC6.0开发环境**:尽管VC6.0是一款较旧的IDE,但它仍然支持C++标准,并且在某些场合下因为其轻量级和兼容性而被选择。然而,现代项目更倾向于使用更新的Visual Studio版本,因为它们提供了更好的调试工具和对新...
Swing组件是轻量级的,它们大部分功能都是由Java代码实现,而非依赖于操作系统提供的原生控件,这使得Swing应用具有更好的可移植性。 在描述中提到的"直接按照包路径放到开发环境即可运行",这意味着源码已经包含了...
Vue.js 是一个轻量级的前端 JavaScript 框架,以其简单易学、高性能和组件化的设计理念受到开发者们的青睐。在“vue-聊天室.zip”这个压缩包中,包含了一个名为“vue-mchat”的项目,我们来详细探讨一下这个聊天室...
MyBatis则是一个轻量级的持久层框架,简化了数据库操作,允许开发者用Java代码直接操作SQL语句。 在这个"基于WebSocket和SSM框架简单网页聊天管理系统源码案例设计"中,WebSocket很可能被用来实现用户间的即时通讯...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于存储和传输数据。在Chrome扩展开发中,Manifest文件的结构和JSON紧密相关,因此理解JSON格式对于扩展的配置至关重要。此外,DOM(Document ...
UDP是一种无连接的、不可靠的传输层协议,它不保证数据包的顺序、完整性和可靠性,但因其轻量级和快速的特点,在实时应用(如在线游戏、视频通话和VoIP)中被广泛采用。与TCP相比,UDP没有建立连接、流量控制、拥塞...
Flask是一个轻量级的Web服务器和Web应用框架,它以简洁和模块化的设计理念著称。在聊天机器人的实现中,Flask将作为后端服务器,接收用户发送的请求,处理这些请求,并返回相应的响应。 接着,**NLP(自然语言处理...
在Java SE 7及Android环境中,开发者可以利用WebSocket API来创建轻量级的客户端和服务器软件包,实现高效的数据同步。 WebSocket协议基于TCP/IP,并在HTTP/1.1的基础上进行了扩展,通过一次握手完成连接建立,之后...
- Vue.js是一个轻量级的前端JavaScript框架,用于构建用户界面。它的响应式数据绑定和组件化特性使得开发更加高效。 - 使用`vue-socket.io`库将WebSocket集成到Vue应用中,实现实时通信。 4. **Spring Boot后端...
在Android应用开发中,数据持久化是一个至关重要的环节,而GreenDao就是这样一款高效、轻量级的对象关系映射(ORM)框架,专为Android设计。本项目“GreenDaoDemo-master”是一个示例,展示了如何利用GreenDao来设计...
开发者可能将聊天记录存储在SQLite这样的轻量级数据库中,方便随时读取和展示。 在GUI设计上,QT提供了许多控件,如QLineEdit、QTextEdit、QPushButton等,用于创建输入框、聊天窗口和按钮等元素。信号和槽机制是QT...
开发者可能使用SQLite这样的轻量级数据库,或者更复杂的数据库管理系统如MySQL,通过ODBC或JDBC接口进行数据交互。 8. **事件驱动编程**:聊天软件通常采用事件驱动模型,如异步I/O或Reactor模式,以处理用户的输入...
小程序以其轻量级、便捷的特性,逐渐渗透到人们的日常生活中,为各个行业提供了新的商业机会。 首先,电商小程序是创业者最关注的领域之一。借助小程序,商家可以摆脱对第三方平台的依赖,自主运营,直接触达微信...
首先,`libsqlite.so`是SQLite的一个关键组件,SQLite是一个轻量级的、自包含的、可嵌入的、无服务器的SQL数据库引擎。Android系统内建了SQLite,许多应用程序,特别是需要存储结构化数据的应用,都依赖它来处理数据...
Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它对WebSocket的支持非常完善。 在标题提到的"Java Web Project开发WebSocket服务端/客户端"项目中,开发者选择了Jetty作为服务器平台。Jetty 7.0版本的...
agsXMPP 是一个专门用于实现 XMPP(Extensible Messaging and ...同时,agsXMPP 适用于各种设备,包括嵌入式设备如 PPC's 和 Smartphones,因为它采用了轻量级的 XML DOM 实现,以确保在资源有限的平台上也能高效运行。