面向过程:面向过程的性能比面向对象高。因为类调用时需要实例化,消耗比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、Linux/Unix、嵌入式开发等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
面向对象:面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
这个并不是根本原因,面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为它是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。
而面向过程语言大多数都是直接编译成机械码在电脑上执行,而其他一些面向过程脚本语言性能并不一定比Java好。
C++11之后,C++就引入了多线程库,在windows、Linux、macox中都可以使用std::thread和std::async来创建线程
Java虚拟机(JVM)是运行Java字节码文件的虚拟机,JVM有针对不同系统的特定实现,目的是使用相同的字节码,他们都会给出相同的结果。
什么是字节码?采用字节码的好处是什么?
JVM可以理解的代码叫做字节码(扩展名为.class的文件),它不面向特定的处理机器。只面向JVM。Java通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点,所以Java程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,所以,Java程序无需重新编译就可以在不同的操作系统的虚拟机上运行。