`
zh_harry
  • 浏览: 99587 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
877aca81-daac-33c8-8bf9-3a886cebc6c3
自己动手写java 框架
浏览量:27285
社区版块
存档分类
最新评论

关于JAVA框架的思考

    博客分类:
  • JAVA
阅读更多
目前的JAVA 企业级开发框架,我们常用的大致包括IOC AOP MVC ORM框架
1、 IOC spring是一个非常棒的ico容器,其思想非常简单,用一个集合对象如MAP 来缓存对象(对象都是单例的),这也就是spring 所说容器内单例,它和java中的单例模式的区别在于单例模式是在当前java进程中保持单例,因为它有三个必要条件:private static 自身对象、private 构造方法、public static getInstance()方法,以保持在进程中单例,而spring只能保证在容器中单例,用户是可以手动再new出其他对象的。所以这部分如果为了简单可以不使用spring的ioc框架以单例模式替代,减少spring的jar包,缺点是可维护性和扩展性较差。或自己写一个ico容器以实现spring的ico功能。
2、aop aop的实质是动态代理模型,框架包括spring、AspectJ等,当然最行的是spring, spring有两种实现形式,一种是jdk的动态代理,一种是cglib字节码框架(比jdk的反射要快,其asm框架实现),典型的场景是数据库事务,个人感觉aop的应用其实可以去掉。可维护性并没有提高,反而变更复杂。aop事务是在threadlocal是以threadlocal为基础的。关于aop去或留希望各位讨论。
3、mvc框架 spring mvc struts2 这两个框架相比:spring mvc的思想还是比较先进的,因为struts2的action bean不是单例的,每次通过反射new出一个对象,性能会相对较低。而spring mvc controller是单例的,继承至servlet类(单例多纯种)。它的实现思想的是方法参数的注入。两个都支持模型驱动。spring mvc有一个缺点,注解的配置模型全部用的java反射。性能也会有影响。两者都支持注解,个人认为xml要好于注解,开发阶段注解要优于xml,因为方便,而维护起来可能会比较麻烦,尤其是对刚接手项目的新人。最好的方案是取两者之长,去其缺点,保留spring的单例通过方法注入,注入时将jdk反射去掉,换成asm的注入思想,以提高性能。
4、ORM框架 hibernate mybatis。hiberate是全自动的orm框架,优点是简单使用方便,但jar包很多,大数据SQL调优问题比较大。mybatis 由ibatis升级,半自动orm框架,需要手动写sql,优点是方便sql调试,缺点是对于简单的单表增删改也需要手动写SQL,比较麻烦。所以最好是结合两个框架的优点开发一个单表的增删改orm(不依赖SQL),复杂SQL可以直接通过JDBC这样可以提高性能。
13
10
分享到:
评论
26 楼 zh_harry 2013-07-19  
windshome 写道
我觉得:

框架当然有用,很多框架写得很好,体现了设计者的功力,但是现在框架的作用和使用泛滥,作用也被夸大了。

十多个表的系统,设计时争论什么Hibernate货IBatis,有点搞笑吧,一共不上40个页面,谈什么SpringMVC还是Stucts,何必呢?

我用传统的JDBC,简单的servlet/jsp,做的也很好,当然定了很多名字和业务的对应规范,写起来也很爽,开发起来也很快。(当然,即便不用什么框架,我也不会把业务逻辑写在jsp中)。

所以我对动辄谈SSH/SSI很反感,甚或者很多人以为这才是Java、这才是J2EE,呵呵,一笑置之、当然,需要使用的时候我也不会犹豫,不需要的时候我也不会有依赖心理。

工具,为我所用;工具,不能反过头来影响设计、

我也比较喜欢用jdk的纯代码写项目,其实最主要的还是设计思想,框架和工具都是为开发和维护更方便。
25 楼 windshome 2013-07-19  
我觉得:

框架当然有用,很多框架写得很好,体现了设计者的功力,但是现在框架的作用和使用泛滥,作用也被夸大了。

十多个表的系统,设计时争论什么Hibernate货IBatis,有点搞笑吧,一共不上40个页面,谈什么SpringMVC还是Stucts,何必呢?

我用传统的JDBC,简单的servlet/jsp,做的也很好,当然定了很多名字和业务的对应规范,写起来也很爽,开发起来也很快。(当然,即便不用什么框架,我也不会把业务逻辑写在jsp中)。

所以我对动辄谈SSH/SSI很反感,甚或者很多人以为这才是Java、这才是J2EE,呵呵,一笑置之、当然,需要使用的时候我也不会犹豫,不需要的时候我也不会有依赖心理。

工具,为我所用;工具,不能反过头来影响设计、
24 楼 zh_harry 2013-07-19  
zh_harry 写道
andy_ghg 写道
zh_harry 写道
bommeibo 写道
Leon.Wood 写道
zh_harry 写道
zh_harry 写道
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?

已经写了呀,看我的博客,并且已经开源了http://lizhizhang.iteye.com/blog/1896545
大家拍砖
上面说得这些思想全包括了,还在升级中,希望大家关注...
也希望小编小这编文件也推荐到首页,绝对原创,没有一个jar,0框架开发,我很喜欢你所说的。
这个框架的名字我给他叫sparrow
麻省虽小,五脏俱全,其实中国就应该用自己的框架

再加一句,这么多人看过只有你提出这个问题,很棒!!

用别人的语言也没意思,咱自己写一个吧,来,扶清灭洋,走起

同意.希望1楼能开发出一个语言出来..不用任何框架的.所有功能都通过硬编码来实现..那就牛B.

就是硬编码啊,一个框架都没有
http://lizhizhang.iteye.com/blog/1896545
看这个了吗?

其实用框架的目的并不是因为他好学,简单。当一个项目需要许多人共同协作完成的时候,没有一个成熟稳定的框架,谁担这个责任?在业余的时候,我们可以自己写来玩玩,但是正式做开发,谁敢拍胸脯保证自己的框架符合实际条件?所以中国的IT现状不是框架造成的,而是大跃进式的开发造成的。现在有这么多现成的框架做参考,相信有几年开发经验的,自己写个框架都不是很复杂的事情。如果硬着头皮不参考别人的框架自己闭门造车,到底图什么?有这个造车的时间你完全可以做一点更有意义的事情。


你说的是对的,我的框架并不提倡用到实际项目中,目前还不完善。但对学习源码和编程思想还是有帮助的,对那些有代码洁癖的人,这样的框架还是很不错的,继续努力,大家多批评
再补充一点,不是闭门造车,参考很多开源代码的。
23 楼 zh_harry 2013-07-19  
andy_ghg 写道
zh_harry 写道
bommeibo 写道
Leon.Wood 写道
zh_harry 写道
zh_harry 写道
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?

已经写了呀,看我的博客,并且已经开源了http://lizhizhang.iteye.com/blog/1896545
大家拍砖
上面说得这些思想全包括了,还在升级中,希望大家关注...
也希望小编小这编文件也推荐到首页,绝对原创,没有一个jar,0框架开发,我很喜欢你所说的。
这个框架的名字我给他叫sparrow
麻省虽小,五脏俱全,其实中国就应该用自己的框架

再加一句,这么多人看过只有你提出这个问题,很棒!!

用别人的语言也没意思,咱自己写一个吧,来,扶清灭洋,走起

同意.希望1楼能开发出一个语言出来..不用任何框架的.所有功能都通过硬编码来实现..那就牛B.

就是硬编码啊,一个框架都没有
http://lizhizhang.iteye.com/blog/1896545
看这个了吗?

其实用框架的目的并不是因为他好学,简单。当一个项目需要许多人共同协作完成的时候,没有一个成熟稳定的框架,谁担这个责任?在业余的时候,我们可以自己写来玩玩,但是正式做开发,谁敢拍胸脯保证自己的框架符合实际条件?所以中国的IT现状不是框架造成的,而是大跃进式的开发造成的。现在有这么多现成的框架做参考,相信有几年开发经验的,自己写个框架都不是很复杂的事情。如果硬着头皮不参考别人的框架自己闭门造车,到底图什么?有这个造车的时间你完全可以做一点更有意义的事情。


你说的是对的,我的框架并不提倡用到实际项目中,目前还不完善。但对学习源码和编程思想还是有帮助的,对那些有代码洁癖的人,这样的框架还是很不错的,继续努力,大家多批评
22 楼 andy_ghg 2013-07-19  
zh_harry 写道
bommeibo 写道
Leon.Wood 写道
zh_harry 写道
zh_harry 写道
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?

已经写了呀,看我的博客,并且已经开源了http://lizhizhang.iteye.com/blog/1896545
大家拍砖
上面说得这些思想全包括了,还在升级中,希望大家关注...
也希望小编小这编文件也推荐到首页,绝对原创,没有一个jar,0框架开发,我很喜欢你所说的。
这个框架的名字我给他叫sparrow
麻省虽小,五脏俱全,其实中国就应该用自己的框架

再加一句,这么多人看过只有你提出这个问题,很棒!!

用别人的语言也没意思,咱自己写一个吧,来,扶清灭洋,走起

同意.希望1楼能开发出一个语言出来..不用任何框架的.所有功能都通过硬编码来实现..那就牛B.

就是硬编码啊,一个框架都没有
http://lizhizhang.iteye.com/blog/1896545
看这个了吗?

其实用框架的目的并不是因为他好学,简单。当一个项目需要许多人共同协作完成的时候,没有一个成熟稳定的框架,谁担这个责任?在业余的时候,我们可以自己写来玩玩,但是正式做开发,谁敢拍胸脯保证自己的框架符合实际条件?所以中国的IT现状不是框架造成的,而是大跃进式的开发造成的。现在有这么多现成的框架做参考,相信有几年开发经验的,自己写个框架都不是很复杂的事情。如果硬着头皮不参考别人的框架自己闭门造车,到底图什么?有这个造车的时间你完全可以做一点更有意义的事情。
21 楼 zh_harry 2013-07-19  
bommeibo 写道
Leon.Wood 写道
zh_harry 写道
zh_harry 写道
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?

已经写了呀,看我的博客,并且已经开源了http://lizhizhang.iteye.com/blog/1896545
大家拍砖
上面说得这些思想全包括了,还在升级中,希望大家关注...
也希望小编小这编文件也推荐到首页,绝对原创,没有一个jar,0框架开发,我很喜欢你所说的。
这个框架的名字我给他叫sparrow
麻省虽小,五脏俱全,其实中国就应该用自己的框架

再加一句,这么多人看过只有你提出这个问题,很棒!!

用别人的语言也没意思,咱自己写一个吧,来,扶清灭洋,走起

同意.希望1楼能开发出一个语言出来..不用任何框架的.所有功能都通过硬编码来实现..那就牛B.

就是硬编码啊,一个框架都没有
http://lizhizhang.iteye.com/blog/1896545
看这个了吗?
20 楼 bommeibo 2013-07-19  
Leon.Wood 写道
zh_harry 写道
zh_harry 写道
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?

已经写了呀,看我的博客,并且已经开源了http://lizhizhang.iteye.com/blog/1896545
大家拍砖
上面说得这些思想全包括了,还在升级中,希望大家关注...
也希望小编小这编文件也推荐到首页,绝对原创,没有一个jar,0框架开发,我很喜欢你所说的。
这个框架的名字我给他叫sparrow
麻省虽小,五脏俱全,其实中国就应该用自己的框架

再加一句,这么多人看过只有你提出这个问题,很棒!!

用别人的语言也没意思,咱自己写一个吧,来,扶清灭洋,走起

同意.希望1楼能开发出一个语言出来..不用任何框架的.所有功能都通过硬编码来实现..那就牛B.
19 楼 zh_harry 2013-07-19  
sprite311 写道
说的比较概括 要是能详细点就好了

是比较笼统,你看一下我的开源架构,博客当中有,有源码都开源了,有什么不足的地方尽管提,尽快完善...
18 楼 sprite311 2013-07-19  
说的比较概括 要是能详细点就好了
17 楼 Leon.Wood 2013-07-19  
zh_harry 写道
zh_harry 写道
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?

已经写了呀,看我的博客,并且已经开源了http://lizhizhang.iteye.com/blog/1896545
大家拍砖
上面说得这些思想全包括了,还在升级中,希望大家关注...
也希望小编小这编文件也推荐到首页,绝对原创,没有一个jar,0框架开发,我很喜欢你所说的。
这个框架的名字我给他叫sparrow
麻省虽小,五脏俱全,其实中国就应该用自己的框架

再加一句,这么多人看过只有你提出这个问题,很棒!!

用别人的语言也没意思,咱自己写一个吧,来,扶清灭洋,走起
16 楼 zh_harry 2013-07-19  
zh_harry 写道
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?

已经写了呀,看我的博客,并且已经开源了http://lizhizhang.iteye.com/blog/1896545
大家拍砖
上面说得这些思想全包括了,还在升级中,希望大家关注...
也希望小编小这编文件也推荐到首页,绝对原创,没有一个jar,0框架开发,我很喜欢你所说的。
这个框架的名字我给他叫sparrow
麻省虽小,五脏俱全,其实中国就应该用自己的框架

再加一句,这么多人看过只有你提出这个问题,很棒!!
15 楼 zh_harry 2013-07-19  
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?

已经写了呀,看我的博客,并且已经开源了http://lizhizhang.iteye.com/blog/1896545
大家拍砖
上面说得这些思想全包括了,还在升级中,希望大家关注...
也希望小编小这编文件也推荐到首页,绝对原创,没有一个jar,0框架开发,我很喜欢你所说的。
这个框架的名字我给他叫sparrow
麻省虽小,五脏俱全,其实中国就应该用自己的框架
14 楼 JavaTear2014 2013-07-19  
alvin198761 写道
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?



高人!
13 楼 alvin198761 2013-07-19  
一群用框架的人早就了中国IT行业的技术现状,一批用windows的人,早就了中国对windows的依赖的现状,

我不用框架,不用第三方jar,java开发照样继续,看到讨论框架还争来争去,想问一句,咱能自己写个框架,然后讨论自己的好不好行不,你说的好不好,都是别人的东西,有意思吗?
12 楼 zh_harry 2013-07-19  
alexlx 写道
注解配置方便,但是不够灵活;xml配置不方便,但是使用起来很灵活


xml便于维护,注解便于开发。
11 楼 alexlx 2013-07-19  
注解配置方便,但是不够灵活;xml配置不方便,但是使用起来很灵活
10 楼 zh_harry 2013-07-19  
加我QQ吧zh_harry@163.com
线下聊
9 楼 zh_harry 2013-07-19  
hss118100 写道
zh_harry 写道
hss118100 写道
zh_harry 写道
jayung 写道
不认为xml优于annotation,也不认为xml的性能好于annotation。
annotation比xml的优点:
1. 开发时不用来回在xml和java类之间切换
2. xml代码量远大于annotation
3. xml在启动时才会被校验,而annotation在java类保存编译时如果有误就会被校验且有IDE错误提示。

认为annotation是硬编码,xml灵活,这算是xml的一个优点吧,但貌似这个优点没有用武之地,没见谁上生产了,还需要改controller的映射关系。

从性能上来讲,annotation是优于xml的,但有缓存,这一点可以忽略,改映射是基本不可能的说的是对的。但我所强调的可维护性,并不是因为改映射。而是通过url来找对应的类以及处理方法时比较麻烦,尤其当人员流动新手接项目时,这一点就显现出来了。还有一点就是项目中的所有映射结构清晰,容易把握全局项目重构是有帮助的,再有用annotation,项目中一个接口有多个实现时,如果对每一个实现类都加注解,可能会乱,而且多个实现在产品中是比较常见的
所以长远考虑,这些框架的配置除orm之外,最好用xml.如果小项目,不做产品,annotation的开发效率要快的多。

其实你所说的通过url来找对应的类以及处理方法这种情况完全可以通过一些代码规范来解决,比如说我们就规定所有的后端url地址必须以module开头,然后下一级是包名,然后才是类名和方法,这样通过url定位类是非常方便的。还有就是对spring类的注入,我们要求bean id必须是类全名,如果改了类的位置了,那么相应的bean id也必须要改,这样在维护的时候也非常好定位是哪个实现

其实这个完全是公司的制度问题,如果这种代码规范有专门的代码规范检查和相应的制度的话,让程序员遵守还是完全没问题的

没有拍,很难得你能继续这篇文章,有思考在里边的,很不错。你说的这个方式是一种解决方案,我也曾经考虑过,但对程序员这样要求,他不一定完全按要求做的。还有其他几方面,综合考虑这种情况xml还是好于annotation的。谢谢关注


是制度问题,我说了一种解决方案,请考虑其他下其他方面,谢谢
8 楼 hss118100 2013-07-19  
晕,没法引用了。算了,我重新写。
你说的程序员没法遵守,我个人理解这个跟公司的制度有关系。如果公司有相应的代码规范检查并且有相应的制度的话,程序员遵守规范还是比较好控制的
7 楼 hss118100 2013-07-19  
zh_harry 写道
hss118100 写道
zh_harry 写道
jayung 写道
不认为xml优于annotation,也不认为xml的性能好于annotation。
annotation比xml的优点:
1. 开发时不用来回在xml和java类之间切换
2. xml代码量远大于annotation
3. xml在启动时才会被校验,而annotation在java类保存编译时如果有误就会被校验且有IDE错误提示。

认为annotation是硬编码,xml灵活,这算是xml的一个优点吧,但貌似这个优点没有用武之地,没见谁上生产了,还需要改controller的映射关系。

从性能上来讲,annotation是优于xml的,但有缓存,这一点可以忽略,改映射是基本不可能的说的是对的。但我所强调的可维护性,并不是因为改映射。而是通过url来找对应的类以及处理方法时比较麻烦,尤其当人员流动新手接项目时,这一点就显现出来了。还有一点就是项目中的所有映射结构清晰,容易把握全局项目重构是有帮助的,再有用annotation,项目中一个接口有多个实现时,如果对每一个实现类都加注解,可能会乱,而且多个实现在产品中是比较常见的
所以长远考虑,这些框架的配置除orm之外,最好用xml.如果小项目,不做产品,annotation的开发效率要快的多。

其实你所说的通过url来找对应的类以及处理方法这种情况完全可以通过一些代码规范来解决,比如说我们就规定所有的后端url地址必须以module开头,然后下一级是包名,然后才是类名和方法,这样通过url定位类是非常方便的。还有就是对spring类的注入,我们要求bean id必须是类全名,如果改了类的位置了,那么相应的bean id也必须要改,这样在维护的时候也非常好定位是哪个实现

其实这个完全是公司的制度问题,如果这种代码规范有专门的代码规范检查和相应的制度的话,让程序员遵守还是完全没问题的

没有拍,很难得你能继续这篇文章,有思考在里边的,很不错。你说的这个方式是一种解决方案,我也曾经考虑过,但对程序员这样要求,他不一定完全按要求做的。还有其他几方面,综合考虑这种情况xml还是好于annotation的。谢谢关注

相关推荐

Global site tag (gtag.js) - Google Analytics