IOS 其它语言比较-Objc与JAVA的比较
2016-04-08 18:50
225 查看
1. Objc是一门编译型语言,JAVA是解析型语言
编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。 编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。
解析型语言:解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。
Objc是动态语言,就是在运行时可以改变代码结构,Java则是静态语言。Objc中的KVC与KVO充分说明了这个特点。
2. 内存管理与消息传递方面:
Objc是引用计数,发生在编译期。Java是垃圾回收,发生在运行时。后来Objc出现了ARC,不用程序员去写管理内存的东西,但其本质是编译期基于引用计数的内存管理。
最大的区别在于Objc是使用消息传递的,本质是字符串,所以其在运行时可以修改类、对象、方法。Java的方法是与class静态绑定的,虽然在运行时通过反射来获取,但是性能会下降一个数量级。所以说Objc更加动态。
所以android手机为什么体验有点差,因为Java的垃圾回收机制。
3. 代码方面:
1)Java有命名空间package,Ojbc没有。
2)实现多继承的方法不同,java通过不可以继承多个父类,可以通过实现多个interface接口的方式来实现多继承。Objc通过Categories和Protocols实现多继承。
编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。 编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。
解析型语言:解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。
Objc是动态语言,就是在运行时可以改变代码结构,Java则是静态语言。Objc中的KVC与KVO充分说明了这个特点。
2. 内存管理与消息传递方面:
Objc是引用计数,发生在编译期。Java是垃圾回收,发生在运行时。后来Objc出现了ARC,不用程序员去写管理内存的东西,但其本质是编译期基于引用计数的内存管理。
最大的区别在于Objc是使用消息传递的,本质是字符串,所以其在运行时可以修改类、对象、方法。Java的方法是与class静态绑定的,虽然在运行时通过反射来获取,但是性能会下降一个数量级。所以说Objc更加动态。
所以android手机为什么体验有点差,因为Java的垃圾回收机制。
3. 代码方面:
1)Java有命名空间package,Ojbc没有。
2)实现多继承的方法不同,java通过不可以继承多个父类,可以通过实现多个interface接口的方式来实现多继承。Objc通过Categories和Protocols实现多继承。
相关文章推荐
- HashMap 源码解析
- JAVA学习笔记(四)
- JAVA学习笔记(四)
- 文章标题
- java第四次作业
- JAVA中的Random()函数
- 你真的会写单例模式吗——Java实现
- Ubuntu下安装JDK1.6 不用apt-get免得找不到源
- 20160408javaweb之JDBC 大二进制和大文件存取
- Java第四次作业
- 菜鸟学Java(二十)——你知道long和Long有什么差别吗?
- 在eclipse中设计BPMN 2.0工作流定义的根本步骤
- XStream xml与javabean之间的互转
- 第四周JAVA学习笔记(四)
- struts校验框架的一个异常
- 在命令行中运行eclipse中创建的java项目
- Windows Server 2012 安装JDK
- java并发与多线程教程
- java第四次作业
- eclipse初次安装一些设置