首先轻量级与重量级是一个相对的概念,主要是对应用框架使用方便性和所提供服务特性等方面做比较的。
比方说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中的15种锁概念及机制!

    在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 1.公平锁 / 非公平锁 2.可重入锁 / 不可重入锁 3.独享锁 / 共享锁 4.互斥锁 / 读 ...

  2. Java中的泛型 (上) - 基本概念和原理

    本节我们主要来介绍泛型的基本概念和原理 后续章节我们会介绍各种容器类,容器类可以说是日常程序开发中天天用到的,没有容器类,难以想象能开发什么真正有用的程序.而容器类是基于泛型的,不理解泛型,我们就难以 ...

  3. 理解Java中【包】的概念

    Java中用package关键字定义一个包,下面通过几个实验,理解Java中的包的概念和作用. 实验1:先看一个无包的情形 在G盘下新建一个Test.java,如图1: 写下面这些代码 <spa ...

  4. 浅谈java中的四个核心概念--思途青岛

    Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少. 现在介绍下java的四个核心概念: 1.Java虚拟机 Java虚拟机的主 ...

  5. java中守护线程的一些概念和用法

    网上的资料中,守护线程的功能一般都是“只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用是为其他线 ...

  6. Java中泛型通配符的一点概念

    以List<T>为例,通常如果我们想在List中存储某种类型的数据,我们会用下面的语法进行声明和使用: List<String> allMsg = new ArrayList& ...

  7. java中实参与形参的概念

    形参: public void fun(形参类型 形参名){ ... } 实参: public static void main(String[] args){ 类 对象名=new 类(); 对象名. ...

  8. Java中的各种锁--分类总结

    前言 本文需要具备一定的多线程基础才能更好的理解. 学习java多线程时,最头疼的知识点之一就是java中的锁了,什么互斥锁.排它锁.自旋锁.死锁.活锁等等,细分的话可以罗列出20种左右的锁,光是看着 ...

  9. 5000字 | 24张图带你彻底理解Java中的21种锁

    本篇主要内容如下: 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持续更新中 帮你总结好的锁: 序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 synch ...

随机推荐

  1. iOS开发之-- oc 和 swift混编之自建桥接文件

    进行swift开发的时候,oc 的项目已经进行了很长一段时间,所以默认使用Xcode自建的桥接文件的时候,这个桥接文件名称是固定的,放置的目录也是无法更改的,所以我就想自己创建一个桥接文件,然后在ta ...

  2. Zabbix-3.0.x使用OneAlert发送告警

    导读 OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.它能以史上第二快的速度,对事件进行智能的组织. ...

  3. Android解析JSON速度对比

    转载参考:http://blog.csdn.net/h3c4lenovo/article/details/26568531 { "testStr":"这是String的测 ...

  4. Delphi XE5通过WebService开发Web服务端和手机客户端

    Delphi XE5通过WebService开发Web服务端和手机客户端介绍 我们开发一个三层的android程序 建立一个webservices  stand-alone vcl applicati ...

  5. js实现购物车(源码)

    首先是页面布局html+css部分 <!doctype html><html lang="en"> <head>  <meta chars ...

  6. 160406、mybatis批量删除

    <deleteid="deleteCTQ" parameterType="java.lang.String"> DELETE FROM sqm_pr ...

  7. 在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树

    nginx平台初探(100%) — Nginx开发从入门到精通 http://ten 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来 ...

  8. nodejs(三)上之express

    express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...

  9. Jumpserver使用

    堡垒机介绍 在一个特定网络环境下,为了保障网络和数据不受外界入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态.安全事件.网络活动,以便集中报警.及时处理及审计定责. 我们 ...

  10. SpringBoot-URL路由:@Controller和@RequestMapping

    SpringBoot定义URL处理方法:@Controller和@RequestMapping @Controller标注的类表示的是一个处理HTTP请求的控制器(即MVC中的C),该类中所有被@Re ...