`
macroway
  • 浏览: 53303 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多

因为小蛇,我之前为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的发展趋势。因为所要问的内容太过抽象,所以没有组织出合适的提问词句:(

 

 

分享到:
评论

相关推荐

    一个轻量级的七牛SDK. A lightweight Qiniu Python SDK.rar

    之前在nuget上看到qiniu的官方SDK引用进来后,会提醒你该sdk是基于.NET Framework版本,那如果部署在IIS下是没问题的,但是如果部署在linux下,那就跑不起来了,基于此,也为了以后方便其他项目的迁移,就捣鼓了一个...

    java+jsp 聊天室集合17个

    它轻量级、易于阅读和编写,便于Java后端与JSP前端交换聊天数据。 6. **Session和Cookie管理**:在聊天室中,用户身份验证和状态跟踪是必要的。Java的HttpSession接口和Cookie机制可用于管理用户的登录状态,确保...

    网页聊天(struts2+jquery)

    jQuery则是一个轻量级的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互。在聊天应用中,jQuery用于动态更新页面内容,实现客户端的即时通信效果,如发送消息、接收消息并显示在聊天窗口中,...

    JavaScript聊天室@功能实现示例 vue-tribute-demo

    它是一个轻量级的库,专门用于在输入框中实现类似GitHub风格的提及功能。Tribute.js提供了丰富的自定义选项,如数据源、触发词、模板等,使得开发者可以根据自己的需求定制提及功能。在Vue.js项目中,可以通过Vue...

    C++基于socket的多线程聊天程序

    9. **VC6.0开发环境**:尽管VC6.0是一款较旧的IDE,但它仍然支持C++标准,并且在某些场合下因为其轻量级和兼容性而被选择。然而,现代项目更倾向于使用更新的Visual Studio版本,因为它们提供了更好的调试工具和对新...

    聊天室程序swing源码.rar直接可用

    Swing组件是轻量级的,它们大部分功能都是由Java代码实现,而非依赖于操作系统提供的原生控件,这使得Swing应用具有更好的可移植性。 在描述中提到的"直接按照包路径放到开发环境即可运行",这意味着源码已经包含了...

    vue-聊天室.zip

    Vue.js 是一个轻量级的前端 JavaScript 框架,以其简单易学、高性能和组件化的设计理念受到开发者们的青睐。在“vue-聊天室.zip”这个压缩包中,包含了一个名为“vue-mchat”的项目,我们来详细探讨一下这个聊天室...

    基于websocket和SSM框架简单网页聊天管理系统源码案例设计.zip

    MyBatis则是一个轻量级的持久层框架,简化了数据库操作,允许开发者用Java代码直接操作SQL语句。 在这个"基于WebSocket和SSM框架简单网页聊天管理系统源码案例设计"中,WebSocket很可能被用来实现用户间的即时通讯...

    Chrome扩展及应用开发

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于存储和传输数据。在Chrome扩展开发中,Manifest文件的结构和JSON紧密相关,因此理解JSON格式对于扩展的配置至关重要。此外,DOM(Document ...

    基于UDP的简单可视化界面聊天程序(c/c++)

    UDP是一种无连接的、不可靠的传输层协议,它不保证数据包的顺序、完整性和可靠性,但因其轻量级和快速的特点,在实时应用(如在线游戏、视频通话和VoIP)中被广泛采用。与TCP相比,UDP没有建立连接、流量控制、拥塞...

    Python基于Flask的聊天机器人源码,NLP课程项目

    Flask是一个轻量级的Web服务器和Web应用框架,它以简洁和模块化的设计理念著称。在聊天机器人的实现中,Flask将作为后端服务器,接收用户发送的请求,处理这些请求,并返回相应的响应。 接着,**NLP(自然语言处理...

    WebSocket:Java SE 7 + Android轻量级WebSocket客户端服务器软件包(RFC 6455)

    在Java SE 7及Android环境中,开发者可以利用WebSocket API来创建轻量级的客户端和服务器软件包,实现高效的数据同步。 WebSocket协议基于TCP/IP,并在HTTP/1.1的基础上进行了扩展,通过一次握手完成连接建立,之后...

    基于WebSocket实现Web端聊天系统【Vue+SpringBoot】.zip

    - Vue.js是一个轻量级的前端JavaScript框架,用于构建用户界面。它的响应式数据绑定和组件化特性使得开发更加高效。 - 使用`vue-socket.io`库将WebSocket集成到Vue应用中,实现实时通信。 4. **Spring Boot后端...

    GreenDaoDemo-master.zip

    在Android应用开发中,数据持久化是一个至关重要的环节,而GreenDao就是这样一款高效、轻量级的对象关系映射(ORM)框架,专为Android设计。本项目“GreenDaoDemo-master”是一个示例,展示了如何利用GreenDao来设计...

    QT 网络互联程序源码

    开发者可能将聊天记录存储在SQLite这样的轻量级数据库中,方便随时读取和展示。 在GUI设计上,QT提供了许多控件,如QLineEdit、QTextEdit、QPushButton等,用于创建输入框、聊天窗口和按钮等元素。信号和槽机制是QT...

    聊天软件代码(类似于QQ).rar

    开发者可能使用SQLite这样的轻量级数据库,或者更复杂的数据库管理系统如MySQL,通过ODBC或JDBC接口进行数据交互。 8. **事件驱动编程**:聊天软件通常采用事件驱动模型,如异步I/O或Reactor模式,以处理用户的输入...

    小程序开发创业热门项目有哪些.pdf

    小程序以其轻量级、便捷的特性,逐渐渗透到人们的日常生活中,为各个行业提供了新的商业机会。 首先,电商小程序是创业者最关注的领域之一。借助小程序,商家可以摆脱对第三方平台的依赖,自主运营,直接触达微信...

    libsqlite.so解决7.0以上聊天用到系统库问题

    首先,`libsqlite.so`是SQLite的一个关键组件,SQLite是一个轻量级的、自包含的、可嵌入的、无服务器的SQL数据库引擎。Android系统内建了SQLite,许多应用程序,特别是需要存储结构化数据的应用,都依赖它来处理数据...

    Java Web Project开发WebSocket服务端/客户端

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它对WebSocket的支持非常完善。 在标题提到的"Java Web Project开发WebSocket服务端/客户端"项目中,开发者选择了Jetty作为服务器平台。Jetty 7.0版本的...

    创建基于agsXMPP的实例

    agsXMPP 是一个专门用于实现 XMPP(Extensible Messaging and ...同时,agsXMPP 适用于各种设备,包括嵌入式设备如 PPC's 和 Smartphones,因为它采用了轻量级的 XML DOM 实现,以确保在资源有限的平台上也能高效运行。

Global site tag (gtag.js) - Google Analytics