没有合适的资源?快使用搜索试试~ 我知道了~
跨平台Java应用程序图形界面框架
软件X 12(2020)100599原始软件出版物ZWT:一个新的Java应用程序跨平台图形界面框架Simone Cirania,Marco Piconeb,Luca Veltric,Mr. Boga,Luca Zaccomerc,Francesco Zanichellica Caligoo Inc.,美国b意大利艾米利亚摩德纳和雷焦大学工程科学与方法系c意大利帕尔马大学工程与建筑系ar t i cl e i nf o文章历史记录:接收28可以2020收到修订版2020年9月23日接受2020年9月23日关键词:跨平台JavaAndroid用户界面a b st ra ctJava编程语言在过去的几十年里彻底改变了软件开发的世界由于其可移植性,Java使得开发可以在任何地方运行的软件成为可能,真正的跨平台计算环境。虽然在任何地方运行相同的Java代码都可以在主要的桌面和服务器平台上顺利运行,但当考虑到不同的设备和平台(如智能手机或嵌入式系统)时,这就变得更加复杂了。此外,即使我们考虑原生支持Java编程语言的设备,如果不重写部分或整个源代码,同一应用程序可能无法运行。这主要是由于用于访问输入/输出外围设备或系统特定特征的平台特定库的存在。特别是,主要的限制通常与必须用于编程图形用户界面(GUI)的不同API相关联。在本文中,我们提出了一种新的框架,可以用于开发人员编写Java应用程序与便携式GUI是真正的平台无关,因此可以运行在不同的系统,如PC,工作站,Android设备或移动电话和嵌入式系统与JavaMicroEdition(Java ME)。©2020作者由爱思唯尔公司出版这是CC BY-NC-ND下的开放获取文章许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。代码元数据当前代码版本v1.0用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX_2020_229Code Ocean computecapsule合法代码许可证Apache-2.0使用Git的代码版本控制系统使用的软件代码语言、工具和服务Java、Android、Java ME编译要求、操作环境依赖性Java 8或更高版本如果可用,链接到开发人员文档/手册https://github.com/zwt-sdk/zwt技术支持电子邮件:luca. unipr.it1. 动机和意义‘‘Write once, run anywhere (WORA)’’ was the original mottoused by Sun Microsystems for describing the characteristics ofthe 当程序员希望开发一个简单的应用程序而不关心具体的应用程序时,独立于实际运行的平台实现应用程序的可能性*通讯作者。电子邮件地址:luca. unipr.it(L. Veltri)。https://doi.org/10.1016/j.softx.2020.100599可用于所选平台的GUI小部件工具包。另一方面,开发一个可以在不同类型的平台(如PC,笔记本电脑,平板电脑和智能手机)上运行的应用程序可能是有用的,而不需要关心硬件和操作系统的差异。当一个应用程序满足上述开发特征时,我们可以说它是跨平台的。近年来,已经对CP解决方案给予了极大的关注和关注,以便克服与管理每个移动平台的不同代码库相关联的限制和问题Android和iOS)。在[1-2352-7110/©2020作者。由爱思唯尔公司出版。这是一篇开放获取的文章,使用CC BY-NC-ND许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxS. Cirani,M. 皮科内湖 Veltri等人软件X 12(2020)1005992(MADP),以了解移动景观的碎片化程度。根据2019年Stack Overflow开发人员调查结果[4],Java编程语言在全球所有使用的编程,脚本和标记语言中排名第五,包括专业和非专业开发人员(占所有受访者的41%)。Jet- brains [5]和Baeldung [6]提供的统计数据和分析描绘了一个繁荣的Java开发生态系统,其中使用多个框架和应用服务器此外,正如Eclipse基金会所证实的那样,Java编程语言也将在物联网生态系统中发挥基础性作用。与C/C++和Python一起,Java是物联网的顶级编程语言之一,特别是它正在领导边缘网关和云物联网应用程序的开发[7]。在这种情况下,轻松创建CP Java图形界面的可能性非常有吸引力,不仅考虑到传统的桌面和移动平台,而且考虑到受限的设备和边缘网关, 这是本地用户界面的一个显著优势。关于Java应用程序,尽管运行在WORA的精神下,相同的Java代码在任何地方仍然成功地用于桌面和服务器平台,但当考虑到不同的设备(例如智能电话或嵌入式系统)时,即使计算平台具有对Java的本地支持,情况也可能并非如此。不幸的是,由于存在不同的和不兼容的库(例如,与输入/输出外围设备和/或系统特定特征相关),有效的GUI可移植性仍然是一个悬而未决的问题,迫使开发者重写部分或整个代码。特别是,主要问题通常是由于存在不同的特定于平台的GUI小部件工具包,这些工具包必须用于编程UI,这极大地限制了Java代码的可移植性。为了克服这一局限性,在本文中,我们提出了ZWT,一个新的框架,允许开发人员编写图形化的Java应用程序的GUI是真正的平台无关的,因此可以运行在不同的系统,如PC,工作站,Android智能手机,或移动电话和嵌入式系统与Java ME.With这项工作,我们专注于Java编程语言和Android框架作为其自然和原生的扩展到移动计算生态系统。然而,这项工作并不意味着成为另一个移动跨平台框架,在目前阶段,它超出了 我 们 的 开 发 范 围 以 及 其 他 移 动 平 台 , 如 iOS 和 WindowsPhone。我们希望将ZWT潜在地带到能够本地执行Java应用程序的每个平台上,从小型受限设备到高规格桌面计算机。在现有的Java图形化跨平台应用程序的上下文中,JavaFX [8]代表了取代Swing作为Java SE标准GUI库的最相关解决方案。它是一个丰富而先进的平台,用于创建复杂的Java图形应用程序,这些应用程序可以在各种设备和操作系统上运行。ZWT并不意味着是JavaFX的克隆与可应用于受限环境的“微用户界面”的创建相关的用例(例如,物联网智能对象),并且可以潜在地重用和集成到现有的更复杂的框架中(参见第3节中的物联网控制器示例)。此外,ZWT被设计为提供一个简单的API(应用程序编程接口),类似于Swing和AWT提供的API,以支持将现有的遗留应用程序轻松移植到微型和可重用的独立图形组件中。2. 软件描述为了尝试实现第1节中描述的目标,我们提出了新的ZWT(零变化Windows工具包)CP开发框架。ZWT的主要目标是为UI小部件工具包提供一个易于使用的解决方案,以便在基于Java的GUI应用程序中使用,这些应用程序可以在几乎任何支持Java语言的平台上运行,从而消除引入的差距 在依赖于不同平台的不同UI库的代码库中(如AWT和Swing for Java SE,MIDP for Java ME或Android APIfor Android)。下文总结了设计和开发ZWT框架的需求:可移植性--不管底层平台上可用的UI库是什么,使用ZWT开发的应用程序必须能够在任何平台上运行,而无需更改任何代码。我们的目标不是完全复制特定平台上可用的功能齐全的API,而是拥有一个简单而轻便的UI API核心,其中包含足够的功能子集,允许开发人员创建简单且跨平台的应用程序,这些应用程序可以按照“WORA”的真正精神执行简单性-使用ZWT开发人员不必学习具有自己的小部件模型和架构的全新UI框架,而是可以使用与AWT,Swing或Android API等知名库相同的方法。因此,ZWT提供了一个类似于Swing和Android的API。平台无关-应用程序不必知道它运行的特定平台。这意味着代码不应该考虑不同平台之间的差异,也不必处理这些差异(即不引入if-then-else逻辑)。可扩展性-虽然ZWT必须尽可能简单和轻便,但API也应该易于扩展,以便让程序员个性化图形效果和/或添加新功能。2.1. 软件构架图1显示了ZWT的架构。从应用程序的角度来看,ZWT提供了一个简单的API,类似于众所周知的UI API,如Java SE的Swing和Android的UI API。这使得实现跨平台应用程序变得非常简单,而无需将它们绑定到所有平台的实际UI库。ZWT的实现分为两层。上层(即图1中的ZWT下层(即图中的ZWT“原始”对象。1)是ZWT实现具体绑定到特定平台的地方。尽管这一层仍然向上层和用户提供相同的API,但其内部实现与特定平台不同,并且基于这些平台上可用的API。当前,三种具体绑定实现是可用的:(i)Java SE,使用Java Swing API,(ii)Java ME,使用Java ME的移动信息设备简档(MIDP),以及(iii)Android,使用Android的标准UI API这一层实际上使ZWT能够在不同的操作系统和硬件上运行,同时使用相同的高级API。请注意,ZWT的下层仅包含UI的核心组件,然后由所有其他组件使用。这使得开发人员可以轻松地扩展这些组件或创建新组件,而无需了解底层平台。····S. Cirani,M. 皮科内湖 Veltri等人软件X 12(2020)1005993Fig. 1. ZWT架构。2.2. 软件功能从开发人员的角度来看,ZWT由一组基本的标准接口和类组成,这些接口和类包含在it.unipr.netsec.zwt包中其他附加和可选包包含扩展、集成和效果。zwt包包括面板、标签、按钮、菜单、事件回调和绘制方法。这组基本组件的实体之间的关系如图1所示的类图所示。 二、已经包含的一些扩展包包括布局,边框,地板,菜单和键盘。2.3. 示例代码段分析为了展示在不同平台上运行相同应用程序的简单性,下面我们报告一些用于在Java SE,Java ME和Android上运行应用程序的示例代码。由于ZWT库类似于其他知名的GUI库,因此使用CP UI编写应用程序非常简单。下面,我们将展示一个基本Hello应用程序的代码片段,标签1我很抱歉。乌尼省 netsec. ZWT。*的;2我很抱歉。乌尼省 netsec. ZWT。我是你的测试。ZwtBorderLayout;34publicclasHello{56publicHello(ZwtFrameframe){7frame. setLayout(nwZwtBorderLayout());8ZwtLabellabel=newZwtLabel(“Helloworld“);9label. setColor(ZwtColor.)WHITE);10label. setAlignmmt(ZwtLabel. ALIGN_HCENTER);11frame. adComponent(label,ZwtBorderLayout.CENTER);12ZwtButtonListenerlistener=newZwtButtonListener(){13@Override14publicvoidonButtonPushed(ZwtButtonarg0){15SSTEM. inti(0);16}17};18ZwtButtonbutton=newZwtButton(“Ok“, ZwtKeyboard.return_SELECT();19frame. addComponent(但是,ZwtBorderLayout)。SOUTH);20}21}在这个例子中,构造函数接受一个ZwtFrame参数并使用它来绘制UI(在这个例子中只有一个标签和一个按钮)。正如我们所看到的,代码没有直接绑定到任何特定的UI小部件工具包,因此是平台无关的。为了在Java SE上运行示例,我们只需要一个带有main方法的类,该方法基于JavaSwingJFrame创建ZwtFrame,并将其传递给Hello的构造函数,以便注入对Swing下面是主类的一个例子1import 是的。swing。JFrame;23import IT。乌尼省 netsec. ZWT。ZwtFrame;45公共 classHelloMain{67publicstaticvoidmain(String[]args){8JFramejf rame=newJFrame();9ZwtFramemeframe=newZwtFrame(jframe,200,100);10新的Hello(frame);11}12}同样的应用程序可以很容易地为Android平台构建,只需创建一个主活动与ImageView和没有状态栏。下面是Android Activity的代码示例1我是波特和罗伊德。graphics. Point;2我是波特和罗伊德。好的。第七节。一个pp。AppCompatActivity;3我是波特和Roid。是的。Bundle;4我是波特和Roid。view. Display;5我是波特和Roid。 我的天。ImageView;67我很抱歉。乌尼省 netsec. ZWT。ZwtFrame;89publicclasHelloMainActivityextendsAppCompatActivity{1011@Override12protectevoidonCreate(BundlesaveedInstanstatate){13号房间。关于真实性(savedincestat);14setContentView(R. 我是你的测试。(a)在任何情况下,1516itttatusBarHeight=0;17intresourceId=getResources()。getIdentifier(“status_bar_heig ht“,“dimen“,“android“);18如果(资源ID>0),则使用BarHeigt=getReserces()。getDimensionPixelSize(resoureId);19Displaydisplay=getWindow Manager()。inti=inti(i);20Pointsize=nwPoint();21天我来了。getSize(size);22intwidth=size。x;23intheheight=size. y-statusBarHeightt;2425ImageViwimageViw=findViwById(R. Id. 我是你的妈妈);2627ZwtFrameFrame=newZwtFrame(imageView,width,height);28个新的Hello(frame);29}30}请注意,Activity仅基于ImageView并使用它调用Hello的构造函数。最后,在Java ME的情况下,只需编写一个简单的Java MEMidlet即可轻松运行应用程序,该Midlet创建一个ZwtFrame并将其作为参数传递给Hello构造函数,如下所示:1我很抱歉。乌尼省 netsec. ZWT。ZwtFrame;23importjavax.我是一个编辑。 我的天。MIDlet;S. Cirani,M. 皮科内湖 Veltri等人软件X 12(2020)10059944S. Cirani,M. 皮科内湖 Veltri等人软件X 12(2020)1005995图二. ZWT核心对象。5publicclasHelloMIDlextensMIDlet{67publicHelloMIDlett(){8ZwtFramezf=newZwtFrame(this);9newHello(zf);10zf. repaintScren();11}1213publicvoidstartApp(){}1415publicvoidpauseApp(){}1617publicvoidestroyApp(booleanunconditional){}18}这个应用程序非常简单,但即使是具有更丰富GUI的更复杂的应用程序(如第3节中所示的示例),也需要上面所示的相同代码来实际执行针对三个不同平台的依赖注入。3. 说明性实例为了说明ZWT框架的潜力,我们提供了三个示例应用程序。第一个是一个简单的跨平台计算器与逆波兰记法。calculator代码可以在test.calc包中获得,正如预期的那样,它完全独立于底层平台。因此,该应用程序可以在Android手机、支持Java ME的手机或支持Java SE的PC它是响应式的,并且正确地适应不同平台的显示器当电话支持显示旋转时,旋转到隐藏模式。如第2节所述,该框架易于扩展:可以添加新组件或图形效果,而无需了解底层平台和本地API。任何额外的图形组件都可以在核心ZWT对象之上开发。一些简单的图形效果,如透明度和圆形,已经在ZWT中可用(检查包地板和边框),并在此演示应用程序中使用。一个例子的计算器与透明效果运行在移动电话与Java ME显示在图。第3(a)段。该应用程序有以下两个特点。一方面,它提供了自己的键盘,并因此提供了平台软件键盘(例如, 在具有触摸屏的智能手机的情况下)不需要,而本机键盘仍然可以例如在PC和一些移动电话的情况下使用(如图1中所示)。3(a))。另一方面,应用程序的UI总是完全框在显示中,不需要滚动。为了利用未包括在计算器示例中的这最后两个功能,在下文中示出第二示例。开发了一个跨平台的即时通信应用程序和相应的用户代理S. Cirani,M. 皮科内湖 Veltri等人软件X 12(2020)1005996图3.第三章。示 例 :(a)具有透明效果的计算器,(b)A n d r o i d 手 机 上 的 即时消息应用程序,(c)在 P C 上 运 行 的 相同应用程序。由于这是一个示例应用程序,因此只实现了基本的IM功能:(i)它提供了一个登录界面(ii)它将UA(和用户名)注册到用于在用户之间分派传入和传出消息的远程服务器;(iii)它添加新的联系人;(iv)它向用户显示好友列表,显示联系人和最后交换的消息的预览;(v)显示每个所选联系人的完整聊天;以及(vi)它发送和接收消息。IETF标准会话发起协议(SIP)[9]已被选为IM信令协议。对SIP操作(注册/注销/发送/接收)的支持由mjSIP库[10]提供,这是一个开源的跨平台SIP实现,可以在Java SE、Android和JavaME上运行。为了管理用户生成的示例应用程序是开源的。图3在Android手机(b)和PC(c)上运行时显示相同的IM应用程序UI第三个示例是用于控制IoT设备的UI。这种情况特别相关:随着几种物联网产品被推向市场,面向用户的应用程序的统一和一致的代码库可以方便地分发与不同设备上的连接对象一起工作的产品。从主面板开始,如分别在PC和Android手机上运行的图4(a)和(d)所示,可以选择设备。然后显示相应的控制面板。示例如图所示。4(b)和(c)用于PC,(e)用于Android手机,以及(f)用于Java ME电话。用户界面可以完全自定义,并可以显示不同的图形组件。此外,UI完全独立于底层平台,并且在PC,Android或Java嵌入式平台上透明运行。所有三个演示应用程序都可以在ZWT存储库中找到[11]。4. 影响ZWT代表了开发Java图形化跨平台应用程序的创新观点。Java编程语言的广泛采用、经验丰富的开发人员以及Android的巨大市场份额,是使Java成为一个能够克服“写”局限性的生态系统的完美条件一次,重新设计(UI)该框架旨在允许开发人员编写Java应用程序,其GUI真正独立于底层和运行平台。这种方法对代码和图形用户界面的重用有直接的影响,同时它保护应用程序免受特定于平台的约束或硬更改的影响。实际上,ZWT框架允许开发人员创建图形CP应用程序,这些应用程序可以在Java Micro Edition(JME),Standard Edition(JSE)和Android上执行,而无需任何更改或调整这种方法简化了现有应用程序从Java ME和SE到Android以及到设计时不可用(甚至不可想象)的新设备类别的过渡。这种迁移将更容易,成本效益高,而且受技能差距的影响较小。Java开发人员可以立即开始工作,而无需学习新的平台,并将重点放在Java编程语言的核心和用户界面上。有时,特别是对于移动生态系统(如[12]中所示和分析),这种技能差距促使公司开发变通方法来支持某种可移植性,例如基于Web的跨平台解决方案。然而,这种技术债务最终需要完全重写应用程序,以集成更新并克服不兼容问题。5. 结论本文提出的Java跨平台图形界面框架是一种新颖的、可扩展的、灵活的解决方案,它针对不同的Java开发应用场景。它可用于为Java Standard和Micro Edition开发跨平台图形应用程序,并且相同的代码也可以在Android移动应用程序中执行和集成,而无需对代码库进行任何更改或重大重新调整此外,设计和编写应用程序的图形用户界面并在不同平台上重用它而不进行更改的可能性对于动态用户界面生成场景也很有吸引力,无论是面向表单的在本文中,我们描述了这个框架是如何本文介绍了三个示例应用程序(复杂性不断增加S. Cirani,M. 皮科内湖 Veltri等人软件X 12(2020)1005997图四、示例:在PC、Android手机和Java ME手机上运行的物联网控制应用程序:(a)Ja v a SE 上 的主控制面板,(b)Ja v a SE 上 的 设备控制面板,(c) Java SE上的设备监控面板,(d)Android上的主控制面板,(e)Android上的设备监控面板,(f)JME上的垂直显示设备监控面板。并在Java SE、Java ME和Android上进行了测试。有关该软件及其所有可能用途的更详细描述,请访问官方网站和存储库。ZWT并不打算成为一个跨语言的UI工具包,而是仅限于支持Java的应用程序,如第1节所讨论的。目前,与其他框架相比,最相关的缺失特性主要与丰富的UI组件的可用性有关,例如 作为应用内嵌入式Web视图和媒体播放器控制器,以及通过外部配置(例如使用CSS)为应用提供样式的可能性。ZWT的目标是成为一个积极和持续的项目,我们计划改善 支持的功能和工具以及扩展集的列表的示例和演示应用程序,适用于各种解决方案,还包括嵌入式和受限设备。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作引用[1] 移 动 开 发 工 具 和 跨 平 台 解 决 方 案 。 第 13 届 国 际 喀 尔 巴 阡 山 控 制 会 议(ICCC)。2012年,第653-6页。http://dx.doi.org/10.1109/CarpathianCC.2012.6228727网站。[2] Pinto CM,Coutinho C.从原生到跨平台混合开发。2018年国际智能系统会议( IS ) 。2018 年 , 第 669 比 76 http://dx.doi.org/10.1109/IS.2018.8710545 网站。[3]Biørn-Hansen A,Grønli T-M,Ghosts G.跨平台移动开发中核心概念和研究挑战的调查和分类。ACMComputSurv51(5).http://dx.doi.org/10.1145/3241739网站。[4]堆 栈 溢 出 开 发 人 员 调 查 结 果 。 2019 , URL https : //insights.stackoverflow.com/survey/2019网站。[Last 2020年5月8日[5] Java开发生态系统2019年,https://www.jetbrains.com/lp/devecosystem-2019/java/。[最后访问2020年5月8日[6]Baeldung -2019 年 的 Java 状 态 。 2019 年 , URL https://www.baeldung 。com/java-in-2019. [Last 2020年5月8日[7] Eclipse - IoT开发人员调查2019结果。2020年,网址https://iot.eclipse。org/community/resources/iot-surveys/. [Last 2020年5月8日[8] JavaFX。2020年,网址https://openjfx.io/。[Last 2020年5月8日[9]Schoamie , Rosenberg J , Schulzrinne H , Johnston A , Camarillo G ,Peterson J , et al. SIP : Session initiation protocol , RFC 3261. 2002 ,http://dx.doi.org/10。17487/RFC3261,URLhttps://rfc-editor.org/rfc/rfc3261.txt。[10]Veltri L,Fadda C. ip电话服务的开源平台。 2007年第15届软件、电信和计算机网络国际会议。2007年,第1-5页。http://dx.doi.org/10.1109/SOFTCOM的网站。2007.4446107。[11]ZWT存储库。2020年,网址https://github.com/zwt-sdk。[Last 2020年9月18日[12]Daradkeh MK,Sabbahein HAS.影响移动应用程序开发平台采用的因素:开发 人 员 在 线 评 论 的 定 性 内 容 分 析 。 Int J Enterp Inf Syst ( IJEIS ) 2019;15(4):43-59.[13][10]李文,李文JSON- GUI -一个用于动态生成基于表单的Web界面的模块。SoftwareX 2019;9:28-34. http://dx.doi.org/10.1016/j.softx.2018.11.007网站。[14]Belli L,Cirani S,Gorrieri A,Picone M.物联网中移动设备智能对象驱动的用户界面生成新方法。第一届智能对象设计和实现经验国际研讨会论文集。2015年,第1-6页。http://dx.doi的网站。org/10.1145/2797044.2797046。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功