java中的重量级与轻量级概念

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中持久化是什么意思?

什么是持久化? 要想说明这个名词,还要从上世纪70年代说起,数据库技术兴起,这时的软件结构发展为双层结构。在双层结构中实现了的数据存放与应用程序分离,构成了现代软件模型的雏形。但是,随着软件体量越来越…

mysql主从报错_Mysql主从报错锦集

前言在发生故障切换后,经常遇到的问题就是同步报错,下面是最近收集的报错信息。记录删除失败在master上删除一条记录,而slave上找不到Last_SQL_Error: Could not execute Delete_rows event on table hcy.t1;Cant find record in t1,Error_co…

JAVA中的那些名词解释

1.JDO: (Java Data Object )是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API.作用:用于存取某种数据仓库中的对象 2.JPA: JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象&a…

mysql资质_MySQL语句与Java代码实现按需过滤企业员工的资质证书

在企业ERP中,每位员工拥有多个资质证书,资质证书有种类、名称和登记时间,以及变动时间和结束时间的主要属性;现在有一个需求,员工在系统查看自己的信息之时:同一种类、同一名称、同一登记时间的资质证书&am…

java对象的序列化和反序列化详细解释

java对象的序列化和反序列化是什么意思 1、序列化是干啥用的? 序列化的原本意图是希望对一个Java对象作一下“变换”,变成字节序列,这样一来方便持久化存储到磁盘,避免程序运行结束后对象就从内存里消失,另外变换成字…

oracle to mysql demo_oracle to mysql

http://blog.csdn.net/hwhua1986/article/details/53257427oracle到mysql的迁移步骤及各种注意事项http://www.2cto.com/database/201305/210248.htmlhttp://www.cnblogs.com/HondaHsu/p/3641116.htmlhttp://www.cnblogs.com/HondaHsu/p/3641183.htmlhttp://www.cnblogs.com/Ho…

IDEA快捷键调整字体大小 设置 (Ctrl+滚轮) 调整字体大小

IDEA设置Ctrl滚轮调整字体大小 第一步:打开idea 设置界面: 第二步:勾选上下图中红色部分即可实现 保存后,ctrl滚轮就能改变代码字体大小

mysql5.7主从全备恢复_mysql主从,或者全备份

mysql的主从复制依赖bin-log日志,会因为各种问题中断,如flush table,网络问题等,还有一些未知的bug因素,之前使用mysql import方式恢复速度太慢,一个3G的库要恢复一个下午,实在是无法忍受。现在…

IDEA中三种注释方式的快捷键

三种注释方式 单行注释、多行注释、方法或类说明注释(文档注释)。 单行注释 快捷键:Ctrl /   使用Ctrl /, 添加单行注释,再次使用,去掉行注释    多行注释 快捷键:Ctrl Shift /   使用…

lombok @Accessors用法详解(一看就能懂)

Accessors(chaintrue) 链式访问,该注解设置chaintrue,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。 package com.pollyduan;import lombok.Data; import lombok.experimental.Accessors;Data …

随机森林特征重要性计算_R语言随机森林模型中具有相关特征的变量重要性

原文链接:http://tecdat.cn/?p13546​tecdat.cn变量重要性图是查看模型中哪些变量有趣的好工具。由于我们通常在随机森林中使用它,因此它看起来非常适合非常大的数据集。大型数据集的问题在于许多特征是“相关的”,在这种情况下,…

在IDEA中右键New没有创建Mapper文件选项解决办法

问题解决 1.File–>Settings–>Editor–>File and Code Templates 模板中输入内容 <?xml version"1.0" encoding"utf-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/…

mysql合并多条纪录字段_mysql合并多条记录的单个字段去一条记录

mysql怎么合并多条记录的单个字段去一条记录&#xff0c;今天在网上找了一下&#xff0c;方法如下&#xff1a;测试用表结构&#xff1a;-- ------------------------------------------------------------ 表的结构 tet--CREATE TABLE IF NOT EXISTS tet (id int(11) NOT NULL…

三步教你解决Invalid bound statement (not found): com.xxx.dao.xxxDao.selectByxx错误!!!!很简单

1 问题实质: dao层(又叫mapper接口)跟mapper.xml文件没有映射 2 问题原因: 出现这种映射问题的原因分为低级原因和更低级原因两种 更低级原因: (1)dao层的方法和mapper.xml中的方法不一样; (2)mapper中的namespace resultParameter 和对应的dao层entity层不一样 (3)拼写错误 如…

java mysql lru_Java集合详解5:深入理解LinkedHashMap和LRU缓存

今天我们来深入探索一下LinkedHashMap的底层原理&#xff0c;并且使用linkedhashmap来实现LRU缓存。摘要&#xff1a;HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap&#xff0c;其落脚点在HashMap&#xff0c;因此更准确地说&#xff0c;它是一个将所有Entry…

SpringBoot中注入ApplicationContext对象的三种方式

在项目中&#xff0c;我们可能需要手动获取spring中的bean对象&#xff0c;这时就需要通过 ApplicationContext 去操作一波了&#xff01; 1、直接注入&#xff08;Autowired&#xff09; Component public class User {Autowiredprivate ApplicationContext applicationCont…

django2.1支持的mysql版本_一文解决django 2.2与mysql兼容性问题

Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MTV的框架模式&#xff0c;即模型M&#xff0c;视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的&#xff0c;即是CMS(内容管理系统)软件。并于2005年7月在BSD许可…

springBoot的自动扫描包范围

springboot扫描包的范围的约定 SpringBoot的注解扫描的默认规则是从SpringBoot的项目入口类。若入口类所在的包是com.example.demo那么自动扫描包的范围是com.example.demo包及其下面的子包&#xff0c;如果service包和dao包不在此包下面&#xff0c;则不会自动扫描。 手动配置…

mysql一共有多少引擎_MySQL存储引擎你们知道多少?

MySQL是我们经常使用的数据库处理系统(DBMS)&#xff0c;不知小伙伴们有没有注意过其中的“存储引擎”(storage_engine)呢&#xff1f;有时候面试题中也会问道MySQL几种常用的存储引擎的区别。这次就简短侃一下存储引擎那些事儿。先去查一下“引擎”概念。引擎(Engine)是电子平…

SpringBoot 中@Autowired 注入失效原因及解决方法

SpringBoot 中Autowired 注入失效原因及解决方法 1、原因分析 1.1 包没有被扫描到通过Autowired注入的类所在的包路径不在Application启动类所在的包/子包路径下。Spring Boot项目的Bean装配默认规则是根据Application类(指项目入口类)所在的包位置从上往下扫描。eg: Applica…