为什么很多人说 j**a 不适合编写桌面应用

汪pling呀 2024-06-03 05:18:07
最佳回答
j**a的桌面程序并不少,其中最为知名的莫过于eclipse。在linux和mac下,j**a程序的远高于windows下。不过,“j**a不适合写桌面应用”的说法有一定道理,论调的主要背景是供windows下使用的企业桌面应用的开发。由于一些历史和定位的原因,对于这种gui程序的需求,j**a的优势不明显,劣势比较明显。这事还得从j**a的传统,“跨**一致性”说起。在写后台逻辑的时候,跨**是好东西。很多公司都是在windows下开发,在linux下部署,方便。但涉及到gui的时候,跨**就成了个“看上去很美”的东西。理论上,我写个窗口,在windows和mac下都一样能用,那是多么美好的事啊。但实际上,每个**提供的gui控件多多少少有点差别,一坚持跨**,麻烦就来了,该支持多少控件,怎么支持呢。一开始,j**a的思路是:那简单啊,有原生控件干嘛不用,至于不跨**的,就不支持呗,又坚持了原则,又回避了问题。这一代的gui库,awt,就此诞生。因为j**a一开始是一根筋想推广applet的,只是“顺便”也支持本地应用,设计成这样不能说不合适,毕竟,html也是同样的思路,只支持几种最基本的控件。但对于想开发复杂点界面的人来说,就有麻烦了。想来个目录树吧,对不起,不支持;想来个进度条吧,对不起,不支持。旁边放着delphi和vb这么方便的东西,哥干吗受这气啊。这样一来,j**a自己也觉得说不过去了。但又要跨**,又要提供丰富的控件支持,那就只有另起炉灶,开始用第二种思路:自己动手、丰衣足食,自己重写一套gui控件,代替操作系统的原生控件。这一代的gui库,叫做swing。这也是一个想“彻底”解决问题的思路,但是要付出代价。代价之一就是效率。我们可以参考一下另一个相同思路的产品——flash。为了实现矢量动画,在flash的那个小框里,图是一帧一帧地算出来的。接下来的事情我们都知道了:复杂的flas**极耗cpu;iphone说,您太耗电了,俺就不支持了;adobe说,那好吧,那俺也不费心折腾移动版flash了。自己画出来的控件毕竟不能跟原生控件比效率,尤其是在早期j**a优化还不够完善的时候。而且,自力更生的目的只是为了**兼容,不是为了更好的效果,这事儿其实怎么想怎么亏。代价之二就是效果。自己画的控件毕竟只是模拟,还是会有细节差别。比如著名的毛玻璃效果,这不是简单套样式就能套出来的。而且,各个**控件的风格本来就不一样,虽然swing提供了几种外观,但大部分程序出于偷懒或是跨**一致考虑,还是使用默认外观。默认外观跟**不一致倒也不是问题,主要是别比**效果土。我用着win7,一个程序非让我感觉回到xp时代,心里特别添堵。就这样,一帮人商量着,又琢磨出个新思路:做适配。**有这个控件,就直接用,保证效率;没有,再造轮子,保证可用。就这样,swt问世。eclipse的gui就是基于此。swt是赞,不过这属于改良,两个根本问题仍在:1. 跟操作系统api打交道不是j**a的长项,效率仍然不能与c++等相提并论。2. 到底要不要跨**。如果要跨**,swt接浏览器控件、接activex控件的功能就成了形同虚设;而要是不想跨**,又何必使用j**a呢,.net在一旁已经恭候多时了。(补充:原生控件在各**下还是会有些差异,感谢@冯东指点)@冯东:另一方面,即使每个**都支持的 control 也多多少少有些差异。比如同样是文本框,windows 和 mac (cocoa) 对待 non-engl**h 输入法选词的语义就不同。再比如对 focus-lost 的处理二者也不同。所以 swt 其实目前很难做到 swing 那样的跨**。跨**么,终究还是只能做到最大公约数,比如 x86 支持 4 级,unix 只用两级。可那是大家都同意不用的。在 ui 级别可没有人能同意不用操作系统的某个功能。除了技术本身,还有一个产业的问题,围绕着gui控件也存在一个生态环境,没有丰富的领域、行业控件的支持,技术本身的战斗力也会大打折扣。而j**a这方面的生态较为薄弱。综上,如果一个gui程序使用j**a,通常都是有这些特征:确实是想跨**对界面并没有太多效果的要求,界面效率也不是瓶颈相比于其他gui工具,开发人员对j**a更为熟悉比如,一些工具的管理界面,很符合 20210311
汇率兑换计算器

类似问答
  • 什么网站适合新人写小说?
    • 2024-06-03 04:11:50
    • 提问者: 未知
    在正式谈全网主流的小说**之前,我觉得很有必要先跟大家聊一聊 三大网络文学上市公司,即 阅文集团、中文在线、掌...集阅读、创作、互动社区、版权运营于一体的全开放式网络...
  • 如何使用j**a swing编写一个简单的窗口
    • 2024-06-03 21:20:08
    • 提问者: 未知
    1打开eclipse新建一个j**a项目,填好项目名称,点击fin**h完成2新建完项目以后右键点击项目名称,选择新建类(new->class),填写类名,完成以后点击fin**h完成3首先导入swing的包:import j**ax.swing.jfram.或者在类名后面继承jfram以后用快捷键shift+o进行快捷导入,都可以4然后再程序中新建我们创建类的构造方法用来初始化窗口,当然你...
  • 用j**a编写一个银行帐户管理的程序
    • 2024-06-03 09:44:54
    • 提问者: 未知
    string password){/覆盖了父类的 withdrawal方法 if(th**.passowrd=password){ if(th**.money=-5000|th**.money>-5000){ system.out.print("**严重透支,不可以再取!...
  • 为什么很多人说煤炭股不能买?
    • 2024-06-03 13:19:59
    • 提问者: 未知
    1:未来经济可能放缓,导致对煤炭的需求减少 2:未来**可能出政策限制煤炭价格上涨 3:机构前期在煤炭中获得大量利润,目前正在出逃 4:煤炭公司因煤炭可能到达顶峰后...
  • c++为什么适合桌面软件开发?
    • 2024-06-03 04:50:06
    • 提问者: 未知
    大的软件都是几种语言混合开发,
  • 很多人说自己不适合化妆,但我又想改变自己,怎么办
    • 2024-06-03 01:28:51
    • 提问者: 未知
    看你想要怎么改变了,是表面的改变就学化妆,学时尚,花心思打扮。如果想要是内心的改变就多读书,增加兴趣爱好,把生活变得多姿多彩些吧!
  • 小米note如何把tsf桌面设为默认桌面?按home键不会回到小米桌面
    • 2024-06-03 07:09:47
    • 提问者: 未知
    你打开设置-应用程序-小米桌面,然后设置成默认桌面就可以了,或者是第一次安装小米桌面时然后你按房子就会提示你设置一个默认桌面,这样也是可以的。
  • 为什么网上很多人说不适合去东北投资?
    • 2024-06-03 04:10:27
    • 提问者: 未知
    不敢来东北投资的都是些没啥大本事的,怕折本。...农夫山泉是吉林的水,奥迪,宝马是沈阳长春的,大米是五常盘锦的,航母,航天,蛟龙号,港珠澳大桥连钢铁都是鞍钢的,战斗机...
  • 有人天生就不适合学习吗?为什么很多人很努力了还是学不好?
    • 2024-06-03 06:57:10
    • 提问者: 未知
    也就不难理解红宝书的含义,和观音菩萨的作用一样,有...高中学习注重的是思考的过程,是从公式一步步的推导到算式最后得出结论的过程,而不是像工厂里的流水线般一味做些机械...
  • 为什么很多安徽人不喜欢合肥?
    • 2024-06-03 15:20:35
    • 提问者: 未知
    如今合肥巢湖马鞍山的高铁已开始建设,而马鞍山南京城市地铁也提上日程,不知小马最后如何抉择。马鞍山日常黑,最喜欢说“合肥**特别多” ps:在合肥什么地方**最多?...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。