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

关于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
分享到:
评论
6 楼 zh_harry 2013-07-19  
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的。谢谢关注
5 楼 hss118100 2013-07-19  
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的开发效率要快的多。

个人理解,请勿拍砖
4 楼 hss118100 2013-07-19  
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也必须要改,这样在维护的时候也非常好定位是哪个实现
3 楼 zh_harry 2013-07-18  
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的开发效率要快的多。
2 楼 jayung 2013-07-18  
不认为xml优于annotation,也不认为xml的性能好于annotation。
annotation比xml的优点:
1. 开发时不用来回在xml和java类之间切换
2. xml代码量远大于annotation
3. xml在启动时才会被校验,而annotation在java类保存编译时如果有误就会被校验且有IDE错误提示。

认为annotation是硬编码,xml灵活,这算是xml的一个优点吧,但貌似这个优点没有用武之地,没见谁上生产了,还需要改controller的映射关系。
1 楼 lvwenwen 2013-07-18  
JAVA框架的思考

相关推荐

    Java框架研发思考

    ### Java框架研发思考 #### 背景与动机 在软件工程领域,特别是在Java平台下进行应用开发时,框架的研发不仅是技术挑战的体现,更是对未来技术趋势的一种预测和引导。本文作者彭晨阳分享了他在开发Jdon框架过程中...

    Java框架研发思考.docx

    【Java框架研发思考】 本文由彭晨阳撰写,回顾了他开发Jdon框架的心路历程,分享了在Java开发中的经验和教训,对于Java开发者尤其是面试者具有一定的参考价值。Jdon框架的诞生源于对Web应用多层架构复杂性的反思,...

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    关于Java框架Vert.x的几点思考.docx

    Java框架Vert.x是近年来在Java社区中备受关注的一个轻量级、高性能的应用平台,它基于全异步的Java服务器Netty,旨在解决传统Java框架在处理高并发、低延迟场景下的性能瓶颈。本文将深入探讨Vert.x的核心特性和优势...

    JAVA集合框架学习思考+总结

    JAVA集合框架,java框架总结,java集合框架,java集合框架学习,java集合框架类

    一个Java框架引发的思考:语言、框架、范式转换和软件生产力

    标题中的“一个Java框架引发的思考:语言、框架、范式转换和软件生产力”提示了本文将探讨一个特定的Java框架,并由此引申出关于编程语言、开发框架、编程范式以及它们如何影响软件开发效率的主题。从描述中提供的...

    Java mvc 框架例子

    **Java MVC 框架实例解析** 在软件开发中,Model-View-Controller(MVC)模式是一种常用的设计模式,尤其在Web应用中被广泛采用。这个Java MVC框架的例子为我们提供了一个直观的学习平台,帮助初学者理解MVC的运作...

    基于SSM框架的Java Web开发课程教学中的几点思考.pdf

    本文主要探讨了在基于SSM(Spring+Spring MVC+MyBatis)框架的Java Web开发课程教学中出现的问题,并提出了相应的改进措施。以下是详细的知识点总结: 1. SSM框架介绍: SSM框架是目前Java Web开发中广泛使用的一种...

    java 编程入门思考

    引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...1.11 Java和因特网 ...1.13 Java还是C++?...附录E 关于垃圾收集的一些话 附录F 推荐读物

    java思考

    如果这是一个文本文件,那么它可能包含了博主对于Java语言的深入见解,包括但不限于类和对象、封装、继承、多态等面向对象特性,也可能是关于异常处理、集合框架、IO流、线程并发、反射、泛型、注解等方面的讨论。...

    java基础知识思考题+答案(个人整理)

    ### Java基础知识思考题详解 #### 1. 缩写JDK的含义是什么? JDK,全称Java Development Kit,即Java开发工具包。它是Java软件开发的基础,包含了编写、编译和运行Java程序所需的所有工具。JDK不仅包括Java编译器...

    java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB.zip

    关于Java框架Vert.x的几点思考.docx 关于堆和栈的那些事.docx 写好Java代码的30条经验总结.docx 华为java笔试面试题2014.doc 多态的理解.docx 大公司最喜欢问的Java集合类面试题.docx 大公司的Java面试题集.doc 就业...

    JAVA SMART系统-系统框架设计与开发(源代码+论文)(1).zip

    《JAVA SMART系统-系统框架设计与开发》是一个深入探讨Java技术在构建智能系统中的应用的资源包,包含源代码和相关论文。这个压缩包旨在帮助开发者理解和实践如何使用Java技术来构建高效、灵活且可扩展的系统框架。...

    关于java中对象属性值的校验的思考

    Hibernate Validator是一个流行的Java Bean校验框架,它支持JSR-303和JSR-349标准。通过在属性上定义如`@NotNull`、`@Min`、`@Max`等注解,可以自动进行数据校验。例如: ```java public class User { @NotNull ...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    关于Java框架Vert.x的几点思考.docx 关于堆和栈的那些事.docx 写好Java代码的30条经验总结.docx 华为java笔试面试题2014.doc 多态的理解.docx 大公司最喜欢问的Java集合类面试题.docx 大公司的Java面试题集.doc 就业...

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    关于Java框架Vert.x的几点思考.docx 关于堆和栈的那些事.docx 写好Java代码的30条经验总结.docx 华为java笔试面试题2014.doc 多态的理解.docx 大公司最喜欢问的Java集合类面试题.docx 大公司的Java面试题集.doc 就业...

    Java程序设计教程,电子教案,实例源程序,思考练习参考答案

    12. **Java EE**:对于进阶学习,Java Enterprise Edition(Java EE)提供了服务器端开发的框架,如Servlet、JSP、EJB等,用于构建分布式应用。 13. **实例源程序**:这些实例程序将帮助你理解理论知识的实际应用,...

    java面试笔试资料Java经典项目集锦java笔试题大集合及答案题库java笔试题汇总资料个合集(188).zip

    Java框架研发思考.docx Java程序员们最常犯的10个错误.docx java程序员的就业指导(重点).docx Java程序员面试宝典 .pdf java笔试题大集合及答案 Java经典项目集锦.rar JAVA编程题全集(100题及答案).doc Java面试文档...

    对Java的思考(Thinking in Java) Java入门 java与C++对比 深入浅出

    本书通过对比Java和C++,使读者能够更好地理解Java的独特之处,并为初学者提供了一个逐步学习Java的框架。 第1章"对象入门"探讨了面向对象编程的基本原理,包括抽象、接口、隐藏实现、继承、多态以及异常处理。作者...

    [探秘Java:如何像计算机科学家一样思考].(唐尼).张平.扫描版.pdf

    《探秘Java:如何像计算机科学家一样思考》这本书由唐尼撰写,张平翻译,旨在帮助读者以计算机科学家的视角理解和掌握Java编程语言。通过深入阅读这本书,我们可以挖掘出一系列重要的Java编程和计算机科学思维的知识...

Global site tag (gtag.js) - Google Analytics