关于到底用框架,还是纯JAVA的讨论

关于到底用框架,还是纯JAVA的讨论 收藏

新一篇: 从零学习freemarker(1)老紫竹的第一个freemaker程序 | 旧一篇: 试用地址栏的动态图标

目前讨论才刚刚开始,不过这个主题许多初学的,包括一些有几年经验的热都有疑问,欢迎大家参与。
最后的讨论结果将整理在这个帖子里

原文如下 : http://topic.csdn.net/u/20080805/22/02471f8b-c9f9-45d5-b25c-bbb521ee1f85.html


楼主siu5:
考虑到版权的问题,公司基本上是决定用JAVA的了。但现在又出现了新问题,到底是用框架,还是纯JAVA?
我现在被公司排到一个培训中心学习。JAVA已经学到可以做简单的项目了。
这个学习又学了框架的使用(SSH)。没想到因为使用前要进行麻烦的设置,而且多人合作开发的之后,合并项目的时候,要对XML文件进行复杂的修改(可能还没掌握到巧妙之处),以及经常抛写不知道怎样修改的异常出来,使我对框架的使用不是很感冒。
后来无意之中和该中心的校长的一次谈话中,他对框架的评价更是贬多于褒,更使我对框架提不起兴趣。
但没想到的是,中心教JAVA的老师,对框架却又非常推崇,说可以减少工作量,提高开发效率。

纯JAVA写项目的时候,虽然写Bean、写Form、写Action都比框架麻烦得多,但很多时候,我可以对代码有充分支配权,操作的自由度很大。特别是有些多表链接T-sql语句,连教JAVA的老师都承认,写起来比用框架灵活得多。而公司的项目,有些方面的业务逻辑比较复杂,我很担心用开了框架之后,很多东西被封装起来,到时用起来会非常不方便。

所以现在我就很烦恼,到底是在框架上再多下一些功夫,还是用纯JAVA就算了。
还有一个问题,学框架赌场,老师说了一句话,我印象非常深刻的:用了框架,大家以后就可以不用“new”。是不是“new”一些类出来的时候,会占用很多资源?如果接入服务器的用户多了起来,大家都“new”的话,是不是会对服务器做成很大的麻烦?

谢谢!



1楼 ZangXT
框架不会封装你的业务逻辑.
不知道这里的new是什么意思?创建对象的new?
用了框架,大部分类是写在配置文件里,解析的时候通过反射来创建对象.我感觉还不如自己new呢


3楼 dragon0361
在没有足够的功底前建议 适当的使用框架,必竞很多框架都是这么多年来大家都认可了的,比方Struts做MVC就很成熟了,关于多人开发最好是使用 VSS/CVS等配置管理工具,对hibernate 掌握如果不熟可以考虑自己写个DB工具类封装JDBC操作,也比较灵活.其实使用什么框架还是需要结合项目的实际情况来考虑的,怎么样好用是相对的.

4楼:jdlsfl
学到底都是一样的
关键不在于你用不用框架
关键是 框架是否适合你的项目

5楼 Geomatic
首先,为什么要用框架。看过一句话,我很赞同
框架就是为了实现设计的复用
一个大型的项目,都会有架构师先把系统的整体架构设计好之后,然后程序员
领会他们的思想,再开始编码,这样,不同的程序员写出来的代码可以很好的协同工作。
框架也是如此,现在流行的框架都是很多人一起开发出来,并且不断改进的作品。
充分考虑了整个系统的健壮性,安全性等等。一个团队搞开发的时候,如果大家都会某个
框架,那么可以很容易的明白自己要做什么,怎么做,这是框架的优点之一
其次,框架都是在不断改进,不断完善之中,很多地方,都是大家公认的最佳实践(Best Practise)
对于初学者来说  框架就是一部教科书  可以加快他们的学习进程

然而,由于框架并不总是能符合具体应用的要求,很多地方都是考虑通用的情况,可能会带来一些
效率上,或者其他方面的不足。因此,框架要求使用者对框架有足够深入的了解,必要时候,根据
具体情况改动框架。

总之,对于框架,我是褒多于贬,诚然,很多东西,不同过框架,我们都可以用很灵活的方式
实现,但是,JAVA语言本身就是一门工业化的强类型语言,为大规模的应用而生的,
现在软件也是逐渐向多人构建大型应用发展,所以,我的建议还是用框架。

唉,想到以后大家可能都向编码员方向发展了,惆怅啊


6楼 java2000_net
到目前为止,尚未长时间使用MVC的框架。只是用过taspety 大约1个月。
不好评价框架的详情。


不过,既然这个东西如此流行,我想其道理一定很有说服力。个人认为应该是统一了编码的习惯。
10个人,每人的编码习惯不同,这样大家合作一个项目就会出现很多个版本,这样对于整个项目非常不利。你写的代码和我的连结构都不同,互相看其它9个人的将是非常困难的。虽然结果都出来了,但以后的维护成本将会非常大。
使用框架则正好解决的部分问题,大家都在用同一个东西在做,写出来的也都差不多,都是标签,配置文件和后面的action.详细看具体的某个功能的实现当然就简单的多了,因为那只是局部代码。
如果项目小,2-3个人做,大家约定一下编码规范也是可以的,难道那些MVC出来之前,全世界的人都不编码了吗?呵呵。
配置文件冲突,这个在任何地方都出现,不是框架的问题,而是管理的问题。


8楼:mrshelly
我个人不太喜欢框架.  重要的是系统的整体架构设计了..

设计得好.往往一次 action 不会需要很复杂的业务逻辑去支持.



13楼: For_suzhen
各有利弊,如果出于商业目的,我看裸奔编程还是少数,尤其是对于一些商务应用。
框架是便于开发的。你想自由,可是就看客户乐意不乐意了。需求才有决定权。
记得一高人说过, 技术的价值体现在生产力


17楼:RonoTian
我觉得刚开始的时候可以考虑使用纯Java,因为技术框架可以在某些方面节约时间,但是使用第三方的框架其实是需要承担风险的,特别是某些复杂逻辑的实现,使用框架做开发的时间估计比自己写差不多。况且错误难于把握。。。

另每个项目都有自己特定的东西,可以考虑借鉴框架的某些部分的优点,自己写些能够适合项目需求的,有用的框架,反正框架都是人写出来的,自己写为什么不可以??


20楼:yirentianran
1.如果你能很好的完成框架有的功能你可以不使用框架
自己实现类似框架的东西 是很灵活
但是你不用框架你就不用mvc了吗?
那样你的代码可能较难维护
虽然在你类多的时候mvc也可能产生类爆炸
但是相对还是较成熟 封装的东西也较实用

2.你也可以不用spring
但是spring的ioc是一个比较好的思想
你可以自己使用简单工厂模式来实现
spring的aop也很好
你也可以使用发射来自己实现
但是spring的背后有一个开源的团队
我想应该会比很多人自己实现的要成熟

3.hibernate的使用是稍显笨重
但是可以省去很多工作不用自己来做
正确使用也不用太担心效率的问题
理论上会比一般人自己实现持久层要好一些

综上: 个人认为框架的使用就是为了方便、快捷、避免重复劳动
没有框架我们一样可以完成工作,但不一定可以同样快捷、很好的完成工作
框架的一些思想都是从实际工作中抽象、分离出来的
如果你可以很好的用自己的代码来实现这些思想、代码很灵活、也很好维护、同时开发也很快捷
你完全没有必要使用框架
不要为了使用而使用


23楼:alloyer
在最初学习的时候,当然是学习纯java,它有助于你理解java底层和内部的一些东西.
不过在实际开始应用时,应当采用框架来完成.
当然,很重要的一点是,你应该有 为你的应用选择一个合适框架的能力.这往往是架构师来做的,所以,不是说要使用框架,就可以随便拿一个来用的道理.
框架往往有助于我们整个业务的理解,有助于我们进行代码的重构,减少我们的工作量.

比如,你在开始一个项目前,已经对项目的基本应当采用的架构和技术有了很多了解,并且,你对几种框架有很好的理解.那么,往往,在对这几个框架进行比较, 选择的过程中,你会对你的项目的业务逻辑有更进一下的认识,可以说是做了一种更好的抽象.这往往得益于你选择了正确的框架,它会帮助你对当前的业务逻辑或者系统的结构豁然开朗.


24楼:gonxi
对于说不用框架好的人,应该是没有明白使用框架的目的。

使用框架不是为了加快开发效率,虽然有些可以提高效率,但通常会增加开发时间。

根本的目的是 为了使代码的结构变得规范,有一个标准可以遵循,为了方便以后的维护,这个才是使用框架的长远目标。

如果只是为了实现功能,以后没有别人去维护的话,用java bean ,jsp都可以,就是你用汇编写,也没什么问题。

但如果要别人来维护,你想一下,那个人第一眼看到代码后,他的想法会是什么?

当然你也可以自己做一个规范,但这个规范必须成为你们公司的标准,否则就你一个人遵循是没有意义的。



25楼:gohands
一个人先写好部分配置文件,其他人在上面补充!!
主要还是 在于管理
框架只是一个工具一种手段!!
当然开始的时候如果没有太多经验不一定要同时使用SSH!!
根据项目的情况灵活使用!其实就算你使用hibernate,
你也不一定所有的数据库操作都是通过hibernate来实现!


28楼:mengweilil
自己写框架,总不如现成的好吧?毕竟人家是一个team,而且发布了,被到处用了的框架。。。。。。

当然 框架不是万能的(记得当年还是一个商业软件框架呢,竟然编译不通过。。。。。C++的,必须自己改了才行。。。。。。)

其实,学习嘛, 先IDE,然后框架,等作了一两个项目, 回过头来再看基础也没啥不好。


32楼:ZyxIp
系统的灵活性,业务的 可扩展性取决于你的设计,而不是取决于你用什么技术.

将整体进行好的业务分类,在选择正确的技术去实现.

最主要的是系统中实现风格统一,相同或类似的功能都进行了统一的封装,各个实现模块有较高的自治程度,可以独立进行修正而不会影响全身.

就算用了hibernate 也只是帮你实现了数据的持久化的功能,但重要的是数据的分类和设计要合理,规整,清晰.

JSP 只是做为生成HTML格式,给用户展示.服务器端的Action类仅是做为从用户处接收数据,然后提交给业务处理对象,根据返回结果流转到不同的页面.

而数据一但到了业务对象这里,和这些框架就没有什么关系了,更喜欢将业务对象都封装成类似的数据容器,将数据提交到存储过程去执行业务规则,这样就算有什么业务变动也可以尽量少的重启服务器.


34楼:wargrey
我就经常自己写框架,不过我还是学生,有时间。反倒是我不怎么推荐使用现成的框架。原因就如ls一哥们所说, 习惯了框架离开他就不知道怎么办了。

而且自己些的框架最适合自己所在的群体,不像现成的,那个80/20就不重复了。但是必须为了那一小部分花多余的时间来理解那一大部分,不划算。

所以,想提高自己,或者项目跟别人没有关系,尽量自力更生,没准哪天你的框架将代表中国某领域的突破。



36楼:shicp2008
其实用框架就是 用的一种思路
一种很容易看懂的思路 呵呵
楼主刚学还是用吧
确实很不错
等你用了几年再去想着写自己的框架吧
一开始就对一个东西 特别是很流行的东西抵触  这是大忌


41楼:TinyJimmy 顶4楼
说得挺对!

或可将眼光放高一点, 不要陷在Coding里头. 用框架也好, 纯代码编程也好, 我想你公司的目标都不是代码, 而是为了实现项目或产品的要求.

一个好的公司通常会更关心产品特性:
产品是否能吸引更多客户?
产品是否有效快捷开发?
产品是否易于维护?
产品运行效率是否高?
是否能避免无谓的错误?
...

一切东西都与钱相关! 管理者会在这里找到一个平衡点, 能赚更多钱. 包括送你们去培训框架, 也是为了以后的开发效率, 为了产品出品率.

回到楼主的话题, 对产品而言, 用框架出来的代码和纯Java开发的代码, 真正的区别在于开发出品率/维护成本/运行效率等各方面的平衡. 而对程序员的区别是你熟悉怎么样的代码Coding方式(哪怕XML配置也是Coding的一部分). 一个合适的框架对产品/团队开发会有很大帮助.

举个例子, 使用Struts和直接使用Servlet+JSP处理业务而言, Structs的代码量要大, 还要兼顾MVC的接口. 而Servlet一个类可以处理完. 但是, 对于大型应用而言, 团队会有分工, 业务/页面/美工/数据库管理通常是分离的. MVC恰恰就是这样分离的, 使用Servlet分离灵活性大, 要规范起来不容易(或者说规范的结果就是Struts了).

说了一大堆, 自己都说晕了. 总而言之, 我的想法就两个字: 平衡



43楼: whyf521
1.你如果是公司的项目的实现人员,基本不用考虑使用什么来实现,因为项目的设计架构工程师已经定好了,你照他的要求做就是了;
2.你如果是公司的项目的设计人员,要从项目的大小和客户的需求来设计项目的具体的实现框架;
3.你如果以自己学习为主,那我建议你都看一些,了解现有一些框架,可能以后真正项目中用不上,但这些都是相通的吗!

以上个人意见,只做参考!



45楼:Ant_Yan
我的个人观点:使用框架是 提高开发效率的捷径,人家国外的大师把框架做出来,我们还要固执的使用纯Java的话,就永远也赶不上人家
常听见的一个比喻是人家都已经造好汽车到处开了,我们还在关着门造轮子

要真有研究学术的精神,是应该把Java底层学好,把人家框架的设计精髓学到,把思想和素质提高,简而言之就是把我们与他们的差距先想办法缩短再努力赶超

但是要真说到开发项目,使用 优秀设计思想的代表框架是项目稳定性能的保证,虽然我们也可以用Java来实现,但代价太大,我们可以去做一些小的模型,但我不认为任何人有这个时间去真正实现一个大型项目完全不用框架。这是人家几十年前干的事情,我们为什么现在还要去重复这个过程呢?

任何事情都是双面的,我们既不能依赖框架,又要有效的使用框架,衷心希望中国的程序员整理提高,不光是技术上的,更多是思想和素质上的!



46楼:yl0002
能用框架,就用框架。(框架是巨人的肩膀)
框架使用太麻烦(实际原因是自己水平不行)。就不用框架。
最终目标: 使用框架、改进框架、扩展框架
要达到最终目标。前提至少是自己实现一遍框架。呵呵。


48楼:zhuyx808
要看项目具体需求来决定,并不是一句话两句话可以说清楚,假如你现在就只有一个页面,你用ssh就是画蛇添足;假如你项目足够庞大,建议还是用框架好点,毕竟各有分工,MVC不过就是把各个层面划分开来,方便各方面的人去干他专长的东西,美工就专搞页面。。。。 各司其职
项目版本管理推荐用svn很好用上手很快,管理也很方便。



61楼:Gump09
好热闹 我也来说说
对于项目首先要有侧重, 稳定? 实时? 安全? 等等
这些取舍决定了你是否用框架,用什么框架
我接触过三个项目 框架不一 但都用了(自己开发的或者是既有框架扩展)
框架明显的好处是便于统一编程风格。
成熟框架也可以提供很好的稳定性,安全性,扩展性
对框架稍加扩展即可很好的实现效率的提高。
我不觉得现在还有不用框架的应用。

楼主想问的可能是对现在刚刚起步的人,是学框架好,还是先一步一个脚印的作出自己的一个东西来好。
我的回答可能比较扯。但是我还是要说。其实你自己做一个东西不见得好。
其一,你肯定要花大时间调试,重构,最后很可能做不出来或者直接错误百出
其二,当你埋头调试的时候你是不会想如何让你的东西更好,因为你不知道怎么才能更好
其三,很多东西你想不到,最后会有很多bug
好处就是你从此对编程有了不一样的认识,你上路了
而用框架也有很多不好处
其一,你使用的框架决定了你的学习曲线,你很可能花大时间学习到最后也吃不透
其二,使用框架会让你忽略掉大量编程细节,为以后买下隐患
其三,学则框架不当,会使你的知识结构不能和公司接轨,白白浪费时间
但我还是推荐你使用框架,为什么,因为大家都在用,你就捡公司用什么你就用什么
这样可以让你在进公司不久站在更高的起跑线上。

再说说我接触的项目。
项目无非是调研,基本设计,详细设计,编码,测试,发布,维护。
不知道你在什么样的公司,我这里做基本设计的是比较牛的,同时有一批牛人作选框架,定制框架的工作。
框架有什么好处?
作为基本设计人员,你不用考虑编程,但是如果发布了20个版本以后可能你就有点发怵,新设计在旧程序上
跑的过吗?如果有个好框架,不用担心,20个版本都是一水的整洁,扩展良好哦
详细设计?不要犯难,流程是一样的,什么流程,上个版本的一拷贝你就知道了,省心
编码?按照规范编就行,机能差不多的拷一个改改
测试?还是上一个测试框架,熟阿,快啊
发布?还是上一个发布脚本,乐啊
维护?代码还是一样的流程,找bug 快啊

有人说5个版本以上见功夫,真对
如果你有时间又有自信还有不已物喜不已己悲的心那就自己编
如果只是为了出东西,那用框架
如果只存高远那么选框架,用框架,扩展框架,做框架




新的有价值的评论将继续更新。。。。

你可能感兴趣的:(java,spring,框架,Hibernate,mvc,struts)