为什么有人说 Java 的跨平台很鸡肋
发布网友
发布时间:2022-05-13 02:18
我来回答
共2个回答
热心网友
时间:2023-11-09 12:21
为什么没有人结合Java出来的环境以及Java的历史., 的确其实这个口号在现在的互联网时代并没有那么有意义了, 但是在它刚出来的时候
1995年的时候,
软件是装载在CD-ROM甚至软盘上的, C/C++的确可以垮平台, 但是要编译成不同的版本发布,
比如这个软件要在Redhat, FreeBSD, Mac OS, Windows上跑, 那用C/C++编写的就得做四种CD,
反观Java, 只用一次编译, 也就是说主程序只需要一份, 1种CD, 然后Sun会帮你做好JVM. 可以省下好多成本.
再来看Java的起源, 发明的初衷, 最开始Java是为了机顶盒开发的, 机顶盒用的CPU不是x86架构的intel CPU而是单片机, 而单片机的发展是很迅速的, 你花了半年为某种单片机开发了程序, 等程序出来了可能这个型号的单片机已经没人用了, Sun当时是为了解决这个问题, 提出了程序只用写一遍编译一遍, 然后让JVM来适应单片机型号的不同.
热心网友
时间:2023-11-09 12:21
个人认为持这种看法的人要么是没把Java用对地方,要么是没有进行过大规模的企业级Java开发。
Java开发的长项是服务器端编程。当然,近年来随着Eclipse的流行,Eclipse的RCP框架让Java在客户端工具方面也有了一些应用,但主要的用途还是脱离不了服务器端编程。
但众所周知,比较好的服务器端操作系统,至今还是Unix-like操作系统的天下。说起Unix-like操作系统,有些了解的人就知道,包含了Linux、Unix、FreeBSD等一大帮兄弟。这哥儿几个虽然长得很像,但差异还是有的。使用C语言之类不具有跨平台特性的语言时就常常因为API的差异导致在更换服务器时总要进行大量的代码修改和测试。而如果一份代码需要在不同操作系统的服务器上运行,就有可能需要维护多份代码。无论开发成本、维护成本还是文档制作都要高出很多。
这还只是说运行方面,如果考虑到开发,问题就更大了。
开发的时候,不可能给每个开发人员都配一台服务器,肯定用的是普通的PC。而PC领域的操作系统,你恨它也好爱它也罢,Windows还是很难不进来插一脚的。于是就出现了这样的局面——在Windows下开发,在Unix-like上运行。
人非圣贤孰能无过。写代码就一定会犯错。所以层层测试必不可少。相信很多人都习惯于一边写一边测,有些问题顺手改掉。如果让你每次要测试的时候都要先编译,然后挪到服务器上,然后再运行,出错了要调试还得换个操作系统去做。哪怕你不嫌麻烦,上面的老板也会嫌效率低下。
而Java恰恰解决了这个问题。开发人员可以在Windows的开发机上搭建轻便简单的服务器环境,可以随时进行测试和调试。而且只要项目制定好合理的开发规约(例如没有特别申请不要写绝对路径,不要使用与操作系统相关性强的API等)并严格要求开发人员遵守,通过测试和调试的模块拿到服务器端基本不会出现问题。只需要做一下集成测试即可。大大减轻了开发者的负担和整体的开发效率。
另一方面,从代码的管理角度上看。因为实现了跨平台,代码只需要维护一份。遇到版本升级、增加分支版本等问题的时候也不会有太大的麻烦。
还有,当服务器端更换操作系统时——例如因为经费问题,从收费的Linux版本更换为免费的Linux版本,因为性能问题从免费Linux更换为商业的AIX系统等,也可以直接将模块打包发布,然后只需要重新进行集合测试即可。
所以,当将Java使用到其擅长的领域时,其跨平台特性应该说是非常有效的。