百摩网
当前位置: 首页 生活百科

java实现跨平台的机制是什么(跨平台只是一部分)

时间:2023-06-06 作者: 小编 阅读量: 5 栏目名: 生活百科

Java的跨平台优势的实用性其实已经被大大弱化了,可以说在实际应用中并不明显,在一般情况下几乎感知不出Java还能跨平台这个特性。今天,Java最大的优势在于其庞大而完善的生态系统。Java生态系统的完善性主要体现在以下几个方面:Java拥有世界上数量最多的程序员。Java拥有大量的第三方类库。Java拥有功能强大的IDE。对,这也是一项优点。如果不是对性能十分敏感的系统类应用,Java已经足够快了。以上仅做客观分析,并不想引起语言战争。

以下讨论只针对PC端和移动端。

Java最大的优势真的在于跨平台吗?

以前是,但现在已经不是了。

有跨平台需求的仅仅是客户端应用,而不是服务端。例如桌面应用,你的客户可能是Windows用户,也可能是Linux用户,这时候如果不想多投入成本对各个平台进行适配,那么Java所谓的“Write once, run everywhere”就显得异常光彩。然而今天,整个软件世界都在向B/S应用倾倒(嵌入式除外),即使要做客户端跨平台,QT等第三方框架远远比Swing更强大,Java在桌面应用领域基本被淘汰已经是不争的事实了,而当初Java引以为豪的Applet也早已销声匿迹。如果说客户端Java还有一点优秀的话,那只有Android了。安卓最初确实靠JVM屏蔽了不同硬件设备之间的区别并取得了巨大的成功,但在今天,Android L中ART模式的出现也即将颠覆这一情况,况且Google还可能会想用自家的Go语言取代Java成为Android平台的第一语言。所以在客户端,Java几乎完败。

服务端应用不需要跨平台。做一个Web服务器,我想没有哪家公司今天用Linux,下个月就换Windows吧?如果仅仅是更换Linux发行版,如从Debian到Fedora,本质上讲其Linux内核是不变的,因此像C这样纯编译类型的语言已经没什么问题。如果做游戏服务器,我想几乎都会选择Linux而不是Win平台。Java的跨平台优势的实用性其实已经被大大弱化了,可以说在实际应用中并不明显,在一般情况下几乎感知不出Java还能跨平台这个特性。作为三大商用JVM之一的JRockets是只有编译器的JVM,即应用启动时会将字节码全部编译为本地机器码,这其实就很大程度上摒弃了跨平台,而追求性能。

今天,Java最大的优势在于其庞大而完善的生态系统。一门编程语言是否能流行,主要是由其生态系统决定的。Java生态系统的完善性主要体现在以下几个方面:

Java拥有世界上数量最多的程序员。你说他们是农民也好,但数量放在那里,最明显的效果就是公司招人的时候会比较容易地招到Java程序员。试想如果你想要做一套软件,你有一个很棒的技术方案需要用C,Scala或Ruby等语言实现,但招不到足够的人手,那么计划多半泡汤。这时候你的应用Java也能做到,并且很轻松就能招到足够的人,那么你选择Java的可能性就要大一些。

Java拥有大量的第三方类库。假如你想解析HTML,用C/C这类语言恐怕多半只能自己编写解析算法库了,而如果是Java,你可以非常轻松地在Github上找到JSoup,使用Maven导入依赖后分分钟就搞定HTML。为此还有一句讽刺Java的话是:“我们不生产代码,我们只是Github的搬运工。”这句话从字面上看是很有道理的,但却忽略了对软件生产效率的提升所带来的巨大价值。对于软件的开发,公司的唯一成本其实就是“人头费”,每减少一个月开发时间,就能帮助公司节省几十万几千万的研发成本。

Java拥有功能强大的IDE。Eclipse,通过插件几乎可以满足你开发的任何需求。它虽然有些慢,但你可以通过JVM调优来提高程序的流畅度,千万不要使用默认的JVM参数。不过,IntelliJ Idea已经完全超越Eclipse了,Idea的智能程度几乎可以媲美Win平台下的VS。我是那类离了Vim就活不下去的人,在这两款IDE中都有Vim插件从而让我愉快地存活下去。

Java拥有很多杀手级应用。不必多说,Spring, Struts, Hibernate, Hadoop, Tomcat, JBoss等等。

Java的语法特性很少。对,这也是一项优点。C相比C添加了大量特性,学起来费事不说,用起来还会降低代码可读性,其实是费了工夫不讨好。当今世界对编程语言的要求是语法简单,代码可读,对性能已经是退而求其次了,因此才诞生了Python, Ruby这样的编程语言。有很多人批评Java语法写起来很臃肿,我承认这一点,但事实是,编程语言从来都不是因为语法臃肿而被淘汰的,决定其生死的是生态系统。对于批评者,引用知乎的一句话:“动态类型一时爽,代码重构火葬场”

Java的性能已经足够高了。Sun/Oracle的HotSpot JVM内置的JIT编译器在运行时对字节码已经做出了非常大的优化努力,服务端应用启动后对JVM进行足够的“预热”,并给出合理的启动参数即可。如果不是对性能十分敏感的系统类应用,Java已经足够快了。有一种简单可行的方法可以形象地看出这点,在JVM启动参数中添加 XX:PrintCompilation可以看到JIT编译器的忙碌。当今世界对软件的需求量越来越大,在性能可接受的情况下,开发效率才是第一位的,这也是Python这类动态脚本语言流行的主要原因。

以上仅做客观分析,并不想引起语言战争。毕竟,没有最好的语言,只有最适合某种项目的语言。引用黑格尔的一句话:“存在即合理。”

    推荐阅读
  • IAQ产品生产持续强化 强化产品创新

    8月11日,松下电器中国东北亚公司与广东松下环境系统有限公司在广东省佛山市顺德区建设的新工厂——顺德*分厂盛大开业。顺德*分厂新风系统2021年度计划生产12万台,目标2023年生产能力达20万台。面对旺盛的市场需求,松下在2020年7月开始建设新工厂,顺德*分厂将在IAQ产品的生产制造上持续发力,产品将面向全球范围销售,为用户的健康、清洁生活提供优质的产品和服务。松下集团在中国东北亚地区拥有72家法人公司,约5万名员工。

  • 林允周星驰综艺(周星驰为何对林允这么好)

    林允周星驰综艺周星驰在很多观众的心目中都是比较低调的明星,所以当网友们看到星爷突然出现在热搜的时候会感到比较好奇。近日,周星驰和林允一同登上了热搜榜,并且同时有几百人搜索,热度居高不下。并且在节目中,林允的父亲还透露,星爷专门从香港飞到日本请林允一家人吃饭,可见关系确实不一般。力捧其出演《美人鱼》和《美人鱼2》的女主角。两个人性格也是比较互补的,星爷内向,林允外向。

  • 夜读内心强大的人(夜读人与人之间最舒服的关系)

    夜读人与人之间最舒服的关系名家画廊|爱德华·西奥多·康普顿,出生于英国的德裔艺术家、登山爱好者,善于油画、水彩、素描,一生创作了2000多幅作品双向奔赴的情谊最值得珍惜有话题问:“人和人之间,最舒服的关系,是怎样的?”点赞最高。

  • 白醋泡真丝后用不用再水洗(真丝面料可以用白醋洗吗)

    丝绸制品经过很长一段时间后往往会变硬,用蚕丝柔顺剂或白醋稀释剂浸泡可以恢复柔软度,但用白醋浸泡后,需要用清水将白醋残留物清洗干净。洗涤真丝服装时,使用中性洗涤剂和洗涤真丝和羊毛织物的洗涤液。洗涤真丝连衣裙时,请务必将指甲压平,以免被尖锐物体划伤,用30摄氏度左右的温水清洗,最高温度不要超过30摄氏度。

  • 房屋租赁中介费纠纷怎么处理 房屋租赁中介费纠纷怎么处理的

    《中华人民共和国民事诉讼法》第一百二十五条当事人起诉到人民法院的民事纠纷,适宜调解的,先行调解,但当事人拒绝调解的除外。《中华人民共和国民法典》第五百七十七条当事人一方不履行合同义务或者履行合同义务不符合约定的,应当承担继续履行、采取补救措施或者赔偿损失等违约责任。

  • 微信聊天什么内容或行为很烦人(微信聊天最讨厌的3个词)

    微信聊天是在所难免的事情,除了面对面的交流,有时候还是比较享受这种虚拟网络中的随意,找一个三观合风趣幽默的聊天,确实是一件非常轻松自在的事情,身边的朋友不需要很多,但是一定要有几个聊天可以非常愉快的,不管是简单的扯扯家常,还是遇到问题时候可以给你一些建议的人,一次愉快的聊天会让人有志趣相投相见恨晚的感觉。

  • 出家是什么意思(怎么理解出家的意思)

    出家,是指离开亲人、家庭、事业这样的世俗世界,到寺院里做和尚、尼姑,或到道观里做道士一般出家人每天得吃斋诵经、勤修戒定慧,以解脱为目标进行修行,下面我们就来说一说关于出家是什么意思?我们一起去了解并探讨一下这个问题吧!一般出家人每天得吃斋诵经、勤修戒定慧,以解脱为目标进行修行。出家人求个内心豁达,任世间风云变幻,我自岿然不动。超脱生死,跳出三界外,不在五行中,神仙也。

  • 九型人格九种性格特征全面解析(深度学九型人格)

    深度学九型人格快乐型的七号人格在九种人格当中,应该是最纯粹、最单一的快乐之星了,他们在玩乐、朋友们畅谈中,只是为了快乐,没有丝毫其他的目的他们认为人在这个世界,只有快乐才是最重要的,其他没有事情比自己快乐开心还要重。

  • 翡翠蜥蜴寓意(翡翠蜥蜴寓意是什么)

    翡翠蜥蜴就是沉着应变的智慧象征。翡翠蜥蜴生生不息的寓意来源于蜥蜴的繁殖能力非常强大,且生命力特别顽强,不论是在湿地还是沙漠地带都能完好生存。翡翠蜥蜴寓意今非昔比,今天的变化是不能和往昔比较的。

  • 番薯是什么种的(番薯的种植方法)

    我们一起去了解并探讨一下这个问题吧!番薯栽要选择不老不幼的,这样容易活。一般种什么都需要松土,这样有利于成活率。在松好的土上挖坑,间隙不要太大。然后吧番薯栽放入坑中,要把茎放下一点,避免太阳晒死。将土用锄头弄到坑中,直填满为止,在用脚在坑上踩,让土与栽的茎部紧密相接。一般种的种完都需要浇水,番薯需要浇完后次日早晨再浇。番薯不用怎么管理,只需要偶尔浇肥就好,他就可以长出很多番薯。