当前位置:  技术问答>java相关

想不通,就是想不通!

    来源: 互联网  发布时间:2015-03-22

    本文导语:  刚开始学JAVA,看到书上对JAVA的评价都非常高,其主要的特点就是跨平台。 很多书上介绍JAVA历史时都说起始是用来做为智能电气(比如烤面包的东东)的,但C++之类的语言在跨平台上代价太大——C++是编译型语言,...

刚开始学JAVA,看到书上对JAVA的评价都非常高,其主要的特点就是跨平台。
很多书上介绍JAVA历史时都说起始是用来做为智能电气(比如烤面包的东东)的,但C++之类的语言在跨平台上代价太大——C++是编译型语言,每个平台上都要有相应的编译器云云,而Java则可以一次开发到处运行,因为它是解释型的。
我就想不通了,各个平台上的JVM是怎么开发出来的,难道也是用JAVA?如果每个平台上的JVM是用C++之类的语言开发的,那么该平台上必然有C++的编译器存在,那么该平台上的应用不就可以用C++开发吗?

|
我觉得应该把JVM理解成一个中间层,你的Java字节码由JVM进行解释,JVM在各个平台的实现各不相同,但字节码经过JVM解释的结果确是相同的,JVM有点类似于翻译的意思。
但C++则不同了,C++没有中间层,直接生成本地代码,显然不能跨平台。

|
同意楼上观点。我个人认为原因之一是工程实现/现状问题,即对于“跨平台”的支持程度不同。

如果在各个OS上的C++编译器的“统一性”很好,对C++源码的支持性可以达到目前
各种JVM对Java源代码/字节码的支持水平,那么确实Java的优势就要降低了,但问题
不是这样,从工程实施的现状来看,目前各个OS上的C++编译器的“统一性”不是
非常好。Java是后来出现的,一开始就把这个问题当作最主要的目的之一,宁可
放弃一部分“平台特定优势”也要争取做到“跨平台通用”,所以自然在“统一性”
方面就要比C++好一些。但是依然存在一些问题,比如不同JVM对于多线程/变量可视性
的支持水平不同,造成这一类的代码在不同JVM上运行的性能不同(甚至是结果不同)。
但总的来说,Java的“跨平台通用性”要比C++好。

基于同样的理由,C++的性能(特别是平台特定性能优化)要比Java好。

其实,把Java和C++类比是不太确切的。Java不光是语言/类库,Java还包括JVM。
所以打一个比方简单来说,Java = (C++) + OS;当然目前的JVM的功能/性能
还远远比不上一个真正的OS。但是事物是发展的嘛,嘻嘻  IP一开始也是有很多问题,
但是IP就是牢牢抓住“互联/跨底层网络”这一点,经过长期努力,再加上机遇(如WEB
的广泛应用等),最终IP得以大范围使用。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 网卡激活了,但ping dsn 不通,ping 网关也不通,怎么办?
  • 为什么RH9和WinXP联网连不通,相互ping都是不通啊??
  • Linux网络奇怪问题,能ping通外网,内网ping不通,网关ping不通,DNS能ping通!
  • Solaris ping不通的问题!!!???
  • 虚拟机ping不通主机
  • solaris for intel 网卡连不通,ping 自己正常, why? 50分!!!
  • ping 不通!不知为什么!
  • nslookup能查得到域名,但ping不通域名的问题
  • 今天碰到一个奇怪的网络不通的问题。
  • -------------ping 主机名 不通-------------
  • redhat as4 装好重启网络不通!
  • VM linux ping不通宿主机的IP
  • 为什么PING不通
  • redhat7.2 ping不通自己
  • 端口不通.....高手帮忙...如何解?
  • ssh连接得通虚拟机,连接不通隔壁宿舍?
  • linux虚拟机与armsys2410拼不通
  • windows ping不通 Linux
  • 可以ping通路由器,但是ping不通外部地址可能是什么原因?
  • 同网段可以访问,不通网段ping都在time>5ms以上的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3