首先轻量级与重量级是一个相对的概念,主要是对应用框架使用方便性和所提供服务特性等方面做比较的。
比方说EJB就是一个重量级的框架,因为它对所编写的代码有限制,同时它也提供分布式等复杂的功能。
相比之下,Spring就是轻量级框架,因为它需要的只是普通的Java对象,它所提供的也只是足够中小应用使用的功能。
但是,随着Spring的发展,它也所具有的功能也越来越强大,而EJB的使用也在变得简单,所以这随着技术的发展,这个概率也需要更新。毕竟它的出现是为了和使用复杂的框架做区别,那么当各家都在不断吸收对方长处的时候这个界线就没有那么明显了。

其实:划分一个应用是否属于轻量级还是重量级,主要看它使用了多少服务.使用的服务越多,

容器要为普通java对象做的工作就越多,必然会影响到应用的发布时间或者是运行性能.

对于spring容器,它提供了很多服务,但这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明使用该服务,如果

应用使用的服务很少,如:只使用了spring核心服务,那么我们可以认为此时应用属于轻量级的,如果应用使用了spring提供的大部分服务,这时应用就属于重量级。目前EJB容器就因为它默认为应用提供了EJB规范中所有的功能,所以它属于重量级。

另外:轻量级组件是用JAVA代码画出来的,这样具有平台移植性
而重量级组件是调用操作系统的函数画出来的组件,比如主窗体

一般来说尽量用轻量级的组件,这样对程序的移植性很好
一般javax.swing包里的组件大部分是轻量级的
java.awt里面的是重量级的

Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。

总的说来:

重量级组件:运行平台必须存在一个对应的组件.
轻量级组件:在一个虚拟的画布上画出来的组件(所以swing较慢),所有轻量级组件"最终"要放到重量级组件(jframe,jdialog)中.由于是画出来所以能做到各种平台上一致的表现.同样,如果混合重量级组件和轻量级组件容易引起重叠上的冲突.

JDK 1.2 之后,Java 有了另一组 GUI 的 API,叫做 Swing。因为 Swing 是 lightweight 的 API,所以无所不能,不但有各式各样先进的组件,而且连组件风格都可抽换。Swing 出现之后,大家很快地就不太使用 AWT 了。
不要以为 Swing 是用来取代 AWT 的,其实 Swing 是架构在 AWT 之上做出来的(Swing 有四个 heavyweight 组件),没有 AWT,也就不会有 Swing。Swing 的出现只是减少程序员直接使用 AWT 的机会,而不会让 AWT 消失。

java中的重量级与轻量级概念相关推荐

  1. Java中抽象类和接口在概念、语法和应用上的区别和关系

    2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...

  2. Java中整数常量池的概念

    Java中整数常量池的概念: java中为了提高程序的执行效率,将[-128, 127]之间256个整数所有的包装对象提前创建好了,类加载时就已经创好了,放在了一个方法区的"整数常量池&qu ...

  3. [Java高并发系列(5)][详细]Java中线程池(1)--基本概念介绍

    1 Java中线程池概述 1.1 什么是线程池? 在一个应用当中, 我们往往需要多次使用线程, 这意味着我们需要多次创建和销毁线程.那么为什么不提供一个机制或概念来管理这些线程呢? 该创建的时候创建, ...

  4. 教妹学Java(二十三):怎么理解 Java 中对象和类的概念?

    你好呀,我是沉默王二,CSDN 排名前十的博客专家.这是<教妹学 Java>专栏的第二十三篇,我们来理解一下 Java 中的对象和类,以及它们俩的概念--什么是对象?什么又是类? 本专栏中 ...

  5. 浅谈java中的四个核心概念【转】

    2019独角兽企业重金招聘Python工程师标准>>> Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少.现 ...

  6. Java中堆和栈的概念与区别

    栈内存:栈内存首先是一片内存区域,存储的都是局部变量,凡是定义在方法中的都是局部变量(方法外的是全局变量),for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再 ...

  7. Java中的锁机制 -- 乐观锁、悲观锁、自旋锁、可重入锁、读写锁、公平锁、非公平锁、共享锁、独占锁、重量级锁、轻量级锁、偏向锁、分段锁、互斥锁、同步锁、死锁、锁粗化、锁消除

    文章目录 1. Java中的锁机制 1.1 乐观锁 1.2 悲观锁 1.3 自旋锁 1.4 可重入锁(递归锁) 1.5 读写锁 1.6 公平锁 1.7 非公平锁 1.8 共享锁 1.9 独占锁 1.1 ...

  8. java 流的概念_举例讲解Java中的Stream流概念

    1.基本的输入流和输出流 流是 Java 中最重要的基本概念之一.文件读写.网络收发.进程通信,几乎所有需要输入输出的地方,都要用到流. 流是做什么用的呢?就是做输入输出用的.为什么输入输出要用&qu ...

  9. C#、C++、JAVA中虚函数和抽象函数的概念对比

    这两天恶补了下C#的相关内容,虚函数的概念又挖掘了下,总结如下: 1.C++中函数被定义为虚函数的方法是在函数名前加virtual,虚函数可以有自己的具体内容,也可以不含有函数实现内容,称为纯虚函数. ...

最新文章

  1. 为什么不推荐使用BeanUtils属性转换工具
  2. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值、标准偏差)实战(dot plot)
  3. tcpdump 抓取icmp数据包
  4. oracle+挂载dbf,dbf导入oracle工具下载|OracleToDbf(dbf导入oracle工具) v1.2官方版 附教程_星星软件园...
  5. bootstrap guide
  6. php正则检查QQ,PHP 正则匹配手机号的QQ号
  7. OpenShift 4 概念 - OpenShift是如何通过ImageStream访问Image的
  8. 我对类和结构的一点理解
  9. 关闭多个activity
  10. 190716每日一句, 勇于尝试,创造属于自己的时机
  11. java实现爬虫_手把手教你从零开始用Java写爬虫
  12. 程序员必看!java操作word表格
  13. 浏览器之硬件加速机制
  14. plupload插件上传总结(分片上传,php后端处理)
  15. EXCEL表格-COUNTIF函数查找数据重复项
  16. 喜欢看电影来哦!教你如果使用Python网络爬虫爬取豆瓣高分电影!
  17. pagefile.sys删除
  18. Kali 无线网卡无法连接到网络
  19. Linux 鼠标可以移动但是无法点击。
  20. FPGA基础资源之IOB的应用

热门文章

  1. suse leap_Ruby程序检查leap年
  2. java scanner_Java Scanner match()方法与示例
  3. Java PriorityQueue poll()方法与示例
  4. 在C ++ STL中使用string :: to_string()将数字转换为字符串
  5. 计算机硬盘正在工作应特别注意避免,初级计算机考试题库
  6. html流动海报css,海报网css代码怎样把模块移到右面?最好把代码直接给我!嘿嘿。...
  7. matlab在绘图时分数,第三章_Matlab图形绘制试卷.ppt
  8. 在数组中查找第k个最大元素_查找数组中每个元素的最近最大邻居
  9. c 运算符##_C#程序演示关系运算符的示例
  10. Mybatis中SQL注入攻击的3种方式,真是防不胜防!