关于JAVA和C++的一些总结

10 篇文章 0 订阅



1.解释型语言和编译型语言:

解释型语言:将源程序翻译一句,执行一句。解释型语言运行速度慢,依赖于解释器,优点是跨平台性好。

  解释型语言具有跨平台的特性是因为不同平台上的解释器不同,比如JAVA(虽然不是纯解释型语言),在android平台上的解释器是dalvik虚拟机,在windows平台上有专门的jvm for windows(目前还没有IOS版的JVM,不然java程序也可以跑在iphone上了)。

编译型语言:将源程序一次性编译成二进制码(机器码),可直接运行。编译型语言依赖编译器,运行速度快,效率高,缺点是移植性不好。

  关于编译型语言的可移植性,这里以C++为例,事实上纯C++可以在任意平台运行,因为被编译成了机器可执行的machine code。那为什么说编译型语言的移植性不好呢?编译型语言想要跨操作系统或者跨机器,与编译器、操作系统、硬件体系等很多方面有很大关系,一般移植性高的程序都用GCC,G++编译器。与编程人的个人水平也有关系,前面说了,纯C++可以在任意平台运行,所以用C++写的代码想要跨平台,就要尽可能的少用专有的特性,比如windows平台上使用微软的MFC(封装了大部分的windows API函数)进行界面程序开发,这样肯定无法移植到Linux上。


2.JAVA

java是一门特殊的语言,它也需要编译,不过不是编译成机器码,而是编译成字节码,然后解释成机器码。

JVM的作用是将编译好的字节码在运行时翻译成对应平台的机器码。



3.Dalvik 和JVM

Dalvik是google为android系统开发的java虚拟机,它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

                                         java compiler                                        android DX编译器                                        优化

  java source code (.java)------------------->java byte code(.class)---------------------------->java byte code(.dex)--------------

                               解释

--------->(.odex)---------------------------->machine code


dalvik虚拟机所做的工作就是从java byte code(.class)到machine code之间的过程。


Dalvik vm 和 JVM的差异:

1.DALVIK是基于寄存器的,而JVM基于栈

2.Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。

3.Dalvik虚拟机运行的是其专有的文件格式Dex,Dex文件格式可以减少整体文件尺寸,提高I/o操作的类查找速度。


4.JNI 和 NDK





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值