跟我学Java之Java GUI的发展和演化

【AI辅助生成】QT发展演化路径、技术需求、发展趋势 这篇博客使用AI技术辅助生成。 QT作为一款跨平台的C++图形用户界面应用程序框架。QT作为全球领先的GUI框架之一,发展历程反映了技术演进的轨迹。这篇博客将深入剖析QT的发展历程、技术需求、应用案例及未来趋势。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 跟我学Java之Java GUI的发展和演化 阅读次数2330 出处 furong_jj -------------------------------------------------------------------------------- 概览   当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(Abstract Windowing Toolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"write once, run anywhere"许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括Microsoft Windows, Sun’s own Solaris, Apple’s Mac OS以及Linux。       数码精品,购物零风险  建站_花小钱做大事业      新版Google工具栏 视频电话免费通全球   虽然最初Java是支持操作系统独立的应用程序开发,在Java提出"write once, run anywhere"宣言那段时间的革命导致了Java applet和主导桌面应用程序计划的产生。   尽管从那以后大部分构建桌面应用程序的成就都慢慢衰退,Java构建图形用户界面的能力反倒增强了。跟踪Java GUI的发展和演化,我们将发现3个主要的构建窗口程序库:AWT,Swing和SWT(Standard Widget Toolkit)。在这一章里我们将查看和分析这3个库中的每一个库,并且我们将一起来看一看第4个库--JFace。其实JFace不算一个真正的构建窗口程序库,而是在基于SWT之上的一个抽象层。   AWT   很多围绕着介绍Java技术的令人激动的地方都基于applets--一个可以让程序通过Internet发布并在浏览器内执行的新技术。用户和开发人员都热衷于斯,因为applets许诺将简化跨平台应用程序的开发,维护和发布,而这是商业软件开发中几个最富挑战性的话题。   为了方便用Java构建图形用户界面,Sun最初提供了一个在所有平台下具有的独特Java外观的图形界面库。Sun在applet技术策略方面的首要伙伴Netscape提出applets应该维持和运行时平台一样的外观。他们希望applets在某一平台下在显示和行为上能够像其他应用程序一样。   为了实现Netscape的"本地外观"的目标,在JDK的第一个发布版中包含了AWT这个库。AWT的缺省实现使用了"对等"机制,即每一个Java GUI窗口部件都在底层的窗口系统中有一个对应的组件。   例如,每一个java.awt.Button对象将在底层窗口系统中创建一个唯一对应的button。当用户点击那个按钮的时候,事件将从本地实现库传送到Java虚拟机里,并且最终传送到与java.awt.Button对象相关联的逻辑。对等系统的实现以及Java组件与对等组件之间的交流的实现都隐藏在底层JVM实现中,Java语言级的代码仍然跨平台。   尽管如此,为了保持"write once, run anywhere"的许诺,Java不得不妥协和折衷。特别的,Java采用了"最小公分母"的方法,即AWT仅仅提供所有本地窗口系统都提供的特性。这就需要开发人员为更多高级特性开发他们自己的高级窗口部件,然后提供给用户不同的使用体验。   其他的问题也减缓了人们对applets的接受和承认。Applets运行在一个安全的"沙箱"里面并且能够阻止恶意的applets对文件系统,网络连接等资源的滥用。尽管沙箱提供了安全性,但它"阉割"了应用程序。毕竟一个应用程序不能运用一个网络连接来保存一个文件是不好的。Java GUI应用程序也不能像本地程序一样响应灵敏。这是在当前硬件平台和Java的解释性天性下预期结果。   所以,用AWT开发的应用程序既缺少流行GUI程序的许多特性,又不能达到在显示和行为上像用本地窗口构建库开发的程序一样的目标。应该有一个更好的库来让Java GUI取得成功。   Swing   于1997年JavaOne大会上提出并在1998年5月发布的JFC(Java Foundation Classes)包含了一个新的使用Java窗口开发包。这个新的GUI组件叫做Swing,感觉到它是对AWT的升级,并且看起来对Java占据计算机世界很有帮助。对Java来说已经万事具备了:可下载的applets将是未来的软件,人们将从其他操作系统转向JavaOS,从传统的计算机转向叫做JavaStation的瘦客户端网络计算机,Microsoft将最终因为不能在桌面程序领域与之想抗衡而被废黜。虽然这些景象从来没有实现,Swing作为Java applets和applications的GUI库倒确实十分繁荣。   Swing架构   尽管"Swing"仅仅是这个新组件的指代名称,它一直持续使用到今天。可能是因为这个名称太贴切了,Swing尝试着以以下几种方式改变公认的观点:   AWT依赖对等架构,用Java代码包装本地窗口部件,Swing却根本不使用本地代码和本地窗口部件   AWT把绘制屏幕交给本地窗口部件,Swing自己的组件绘制自己   因为Swing不依赖本地窗口部件,它可以抛弃AWT的最小公分母的方法并在每个平台下实现每个窗口部件,从而创建一个比AWT更强大的开发工具包   Swring缺省情况下采用本地平台的显示外观。然而,它并不仅仅限于此,而是还可以采用插件式的显示外观。因此Swing应用程序可以看起来想Windows应用程序,Motif应用程序,Mac应用程序甚至它自己的显示外观--"金属"。所以,Swing应用程序可以完全忽略它运行时所在的操作系统环境并且仅仅看起来像自己。这是单调一致的桌面应用程序外观的一大挑衅。想象一下Swing有多傲慢!   尽管如此,Swing组件超越了简单的窗口部件,它体现了正不断出现的设计模式以及一些最佳实践。采用Swing,你不仅仅得到GUI窗口部件的句柄和它所包含的数据,而是定义一个模型去保存数据,定义一个视图去显示数据,定义一个控制器去响应用户输入。事实上,大部分Swing组件的构建是基于MVC(model-view-controller)模式的。MVC使应用程序开发变得更清晰,更易维护和管理。   Swing的缺点   尽管Swing在AWT的基础上做出了巨大的改进,它仍然没能使Java作为构建桌面应用程序的工具。也许Swing的拥护者会立即举出Swing的成功应用案例,例如开源文本编辑器jEdit(http://www.jedit.org/)或者Borland的UML(Unified Modeling Language)建模工具Together(http://www.borland.com/),但是Swing应用程序仍然在桌面应用方面显得很少。Sun提出了一个记录可得到的Swing应用程序的列表"Swing Sightings" (http://java.sun.com/products/jfc/tsc/sightings/)来证明Swing应用是值得注目的。然而我们也看到了"C Sightings"和"Visual Basic Sightings"的网页。   为什么Swing没有履行它的诺言?原因可能归结为下面两点:   速度的缺乏   界面外观   Swing的狂热者可能会对Swing速度慢这一点感到忿忿不平。不可否认,JIT(just-in-time)编译器,Java虚拟机以及Java语言本身就使得Swing应用程序和本地程序拉开了一定差距。尽管如此,Swing仍显得比本地应用程序行动缓慢和响应不积极。由于桌面计算变得越来越快,用户的速度期望值也随之增加,任何可感知的迟缓都将是无法忍受的。   对Swing的显示外观的问题的抱怨也引起了Swing的开发者的愤怒。毕竟他么宣称Swing拥有各种可插入式的外观,并且事实上可以显示成任何样子。J2SE 1.4.2 甚至添加了对Windows XP和GTK 的支持,以致于在这些平台下运行的Swing应用程序会自动采用该平台的外观。   尽管如此,问题仍然存在:Swing将一直处于最新的图形用户界面的后面,因为必需在Java库里明确地添加对最新GUI的支持。当使用J2SE 1.4.2 或更早的版本时在Windows XP上运行的Swing应用程序将显现为Windows 98的外观。而且,当使用XP themes或WindowBlinds(http://www.stardock.net/)等软件来改变皮肤或图形外观时用户日益铭记他们自己的特征和个性。而Swing不仅不理会操作系统,甚至连用户参数选择也不理会。   简短的说,Swing应用程序不像本地应用程序一样执行,外观也不一样。Java要想摆脱常年以来处于不断学习中的地位并掌握桌面应用程序开发中的众多角色,它的GUI仍需要改进。 SWT   当Eclipse.org社区人员开始构建Eclipse时,他们意识到Swing和AWT都不足以用来构建真实世界的商业程序。结果,他们决定构建一套新的GUI开发工具包用来显示Eclipse界面。这个工具包借用了VisualAge SmallTalk中的大量的库。他们把这个新的工具包命名为SWT(Standard Widget Toolkit).意识到本地行为需要本地窗口部件,SWT的设计者们采用了AWT的对等架构,而仅仅当本地组件不存在时(例如Motif下的树形组件)才求助于Java实现。这样,SWT吸收了AWT和Swing实现的最好的部分:当可以得到本地组件时使用本地实现,当不能得到本地组件时使用Java实现。这就同时保证了与本地窗口部件相当的外观和响应度。   SWT于2001年与Eclipse IDE(Integrated Development Environment)一起集成发布。在这个最初发布版之后,SWT发展和演化为一个独立的版本。它可以使用与众多操作系统,包括Microsoft Windows,Mac OS X以及几种不同风格的Unix等。写作本书的这个时候,当前官方发布版本为2.1.3。3.0版为beta版,现在也可以下载。本系列文章采用SWT 3.0。   另一个重要的优势为SWT的源代码是在一个开源许可下免费可得并无病毒的。这就意味着你可以在你的应用程序中使用SWT并且在任何许可认证下发布它。源代码对理解SWT库的低级别功能性和调试应用程序都是很有帮助的。开源软件也意味着比商业发布软件更新的更加频繁。   JFace   JFace的构建基于SWT,它提供了SWT的功能和更简易的MVC模式。SWT使用直接的API提供了原生的窗口部件,例如,你创建一个table部件并且插入你想显示的行和列的数据。JFace则提供了在SWT基础之上的抽象层,所以你可以对抽象层编程然后抽象层与SWT API交互来替代直接对SWT API编程。考虑一下对本地C窗口部件接口编程同使用C GUI类库的区别或是使用AWT与Swing的区别。这些类比将有助于阐述SWT与JFace的区别。例如,为了使用JFace中的table,你仍旧创建table窗口部件,但是你不向里面插入数据。反而,你将你的content(或model) provider类和你的display(或 view) provider类提供给它。接着,table调用你提供的类来决定数据内容和怎样显示数据内容。 JFace没有彻底地抽象SWT。即使在用JFace写的程序中也会常常出现SWT及它的低级API。在本文第二部分带领您构建正确的SWT基础之后,我们将在第三部分探究JFace的力量。   总结   从最开始Java就提供了构建跨平台的窗口GUI应用程序库,从AWT,Swing到现在的SWT和JFace。最初的工具包能力微弱,但是后来提供的工具包认识到之前工具包的缺点并取得了巨大的进步。SWT和JFace不仅使Java成为一个构建桌面应用程序的可行的选择,也使之成为一个具有优势的开发平台。尽管过去对得到轻便和强大的Java系统的尝试必然意味着接受它在GUI方面的缺点,如今这个不足已经不存在了,Java终于可以统领它在桌面计算应用方面的位置了。
39、软件演化的新兴趋势与发展挑战 本文探讨了软件演化领域的新兴趋势与技术挑战,涵盖了特殊软件类型的演化研究、机器人软件的发展、软件正确性验证的难点,以及软件迁移、逆向工程等带来的新问题。同时,文章分析了软件演化与技术债务的关系,社会技术网络的影响,跨学科研究的应用前景,以及可重复性研究的重要性。旨在为软件开发者、研究人员和管理者提供应对软件演化复杂性的策略和方向。 阅读详情

相关推荐

基于Codex平台与AI Agent技能开发,实现抖音爆款视频分析与脚本自动生成

大家好,我是专注于AI应用开发的技术博主。最近在探索如何利用AI工具自动化内容创作时,我发现了一个非常有趣的组合:通过Codex平台创建自定义的Skill(技能),来批量分析抖音平台的爆款视频,并基于分析结果自动生成新的带货视频脚本。这听起来像是内容团队的“黑科技”,但实现起来其实有清晰的路径可循。本文将为你完整拆解这个实战项目,从环境搭建、Skill编写、数据抓取到视频脚本生成,手把手教你打造自己的“AI内容助理”。无论你是想了解AI Agent的开发,还是对短视频自动化创作感兴趣,都能从本文中获得可直接

weixin_34110749的博客 645

Java图形程序设计学习(1)Swing技术概况

1、GUI编程技术之Swing技术 (1)Swing技术简介 (1)Swing是基于AWT架构之上的,提供功能更强大的用户界面组件;AWT是基本GUI程序设计的类库 (2)Java中的GUI编程技术的发展:AWT,Swing,SWT,JavaFX (2)Swing技术需要用到的API体系结构图 将Swing中的组件划分成3类:容器,控件和主题 容器: JFrame是顶层窗口...

Carl_changxin的博客 1024

EtherCAT应用层协议选型指南:CoE、SoE、EoE、FoE、AoE到底怎么选?看完这篇就懂了

本文深入解析EtherCAT应用层协议(CoE、SoE、EoE、FoE、AoE)的选型策略,从实时性、数据吞吐量和功能完整性三大核心指标出发,提供工业场景下的实战决策框架。通过技术特性对比、混合协议架构设计和常见故障规避指南,帮助工程师优化自动化设备通信性能。

weixin_28718793的博客 495

Java UI 是怎样演变的以及它的前景如何?

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 828

从Xilinx FPGA到MIPI DSI LCD屏:手撸代码的实战经验分享

本文分享了使用Xilinx FPGA驱动MIPI DSI LCD屏的实战经验。作者从依赖官方IP核失败,到与底层D-PHY IP缠斗,最终通过手撸代码,直接配置GTY收发器原语并实现完整的D-PHY与DSI协议栈,成功点亮屏幕。文章详细剖析了协议细节、Vivado工具链的调试技巧与避坑指南,为FPGA工程师提供了从理论到实践的宝贵参考。

weixin_29188997的博客 400

基于传统算法的半导体晶圆缺陷检测原理及代码(二)

了解基于传统算法的半导体晶圆缺陷检测原理和方法,对于深入理解半导体制造工艺和质量控制具有重要意义。在半导体制造技术持续创新的浪潮中,基于传统算法的缺陷检测技术也将不断演进,为半导体产业的高质量发展提供坚实可靠的技术支撑,确保在芯片制造的每一个环节都能精准识别和管控缺陷,推动半导体产业迈向更高的发展水平。基于传统算法的半导体晶圆缺陷检测技术在半导体制造的长期发展历程中扮演了重要角色,凭借其成熟的技术体系、较快的检测速度和相对较低的成本,在各个工艺阶段为保障晶圆质量发挥了关键作用。

m0_44975814的博客 2221

JAVA学习脚印11: java GUI 发展简史

JAVA学习脚印11:java GUI 发展简史 1.javaGUI 开发库发展简史 1.1AWT 当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(AbstractWindowing Toolkit)的库,用来构建图形用户界面应用程序。 AWT的缺省实现使用了"对等"机制,即每一个JavaGUI窗口部件都在底层的窗口系统中有一个对应的组件。 什么是对

王定桥的专栏 3496

路由三大分类:直连路由、静态路由、动态路由

直连路由、静态路由和动态路由各有其独特的特点和适用场景。直连路由适用于简单的直接连接网络,静态路由提供了精确的路径控制,而动态路由则在大型复杂网络中展现出强大的适应性和自动化能力。了解和掌握这三种路由类型的配置和管理,对于网络管理员来说,是确保网络高效、安全运行的重要技能。

网络技术联盟站 4699

Java GUI的发展和演化

Java GUI的发展和演化  概览  当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(Abstract WindowingToolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"write once, runanywhere"许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运

gexinxiaoqu90的专栏 353

S7-1200PLC 2轴直线插补详细算法(完整源代码)

速度轴V90PN总线伺服梯形加减速速度控制(标准报文1应用)_v90伺服加减速时间怎么调整-优快云博客文章浏览阅读288次。

RXXW_Dor的博客 4261

【感知模块算法】障碍物detect+trace+prediction方向介绍

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、多维度看感知问题,体会复杂性二、障碍物/环境目标detect方向1.视觉目标检测方向(1)图像处理认知(2)视觉基础理论部分1、获取数据集---python网页爬虫、买数据、自己录数据、使用开源比赛的数据集2、opencv库的学习3、深度学习框架学习(3)视觉目标检测理论(1)目标检测的概念(2)目标检测的应用场景(3)现有目标检测框架原理及论文【这仅仅是我当初入门学习的框架~

qq_35635374的博客 2894

Java GUI的发展和演化简史[zz]

当<span class="t_tag" onclick="function onclick(){tagshow(event)}">Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(Abstract Windowing Toolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"write once, run anywhere"许诺:一个具有下拉菜单

accpsoft2009的专栏 418

EMC诊断技术及电磁兼容理论设计

本文深入探讨了EMC诊断技术,重点在于滤波篇,详细讲解了EMI滤波器的设计、选型、测试及应用注意事项。内容涵盖噪声限值法规、滤波器的法规依据、插入损耗测试以及滤波电容的高频特性。同时,还阐述了噪声源的近场与远场特性,如何快速定位和抑制噪声。通过实例分析,提供了滤波器件和辐射噪声抑制器件的选型策略。

让你爱上电路设计 2164

第一章 Java GUI的发展和演化

概览  当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(Abstract Windowing Toolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"write once, run anywhere"许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括Micro

理想主义 2062

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

大模型GUI Agents全面综述:GUI Agents发展与演化、架构与设计原则

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

m0_56255097的博客 1271

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java GUI——Java图形用户界面

Java GUI——Java图形用户界面 1、Java GUI概述 1.1、GUI的前世今生 早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。如:Windows中的DOS窗口。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,与其它PC不兼容。这使得Apple公司错过了一次一统全球PC的好机会。后来,Microsoft公司推出了风靡全球的Windows操...

小仙儿 16万+

Java之Java GUI的发展和演化

当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(Abstract Windowing Toolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"write once, run anywhere"许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括Microsoft

Nicholas黎的专栏 1374

全面解析大模型GUI Agents:78页PDF深度综述

(智能体)的综述,探讨了它们的历史演变、核心组件和先进技术。****LLM驱动的GUI智能体的高级概念图示。****智能体接收用户的自然语言请求,并在多个应用程序中无缝地协调动作。它从文档中提取信息,在中观察内容,在中总结网页,在中读取PDF,并在创建幻灯片,然后通过发送它们。GUI Agents发展与演化详细讨论了大型语言模型(LLM)驱动的图形用户界面(GUI)智能体的发展和进步。随机基础自动化:使用随机动作序列进行GUI测试,这种方法在发现潜在问题时有效,但效率低下。

2401_84204207的博客 1351

Java GUI编程中AWT/swing/SWT的优缺点

AWT   AWT是Abstract Window Toolkit(抽象窗口工具包)的缩写,是SUN专门针对JavaGUI编程提供的最早的也是最初的开发工具包,用来建立和设置Java图形用户界面,这个工具包提供了一套与本地图形界面交互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系(peers)。也就是说,当我们利用 AWT 来构件图形用户界面的时候,实际上是在利用...

记事本 1278
上一篇: Struts hibernate开发(源代码)
下一篇: 单点登录基础设施JOSSO 1.4 发布
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值