1.健壮性
主要是因为Java中有一种机制:自动垃圾回收机制(GC机制—garbage collection)。
Java语言是健壮的,相对于C语言来说,C语言没有Java健壮。在C++程序当中的无用数据/垃圾数据需要编程人员手动释放,当忘记释放内存的时候,会导致内存使用率降低,影响程序的执行;在Java 语言当中这种问题得到了解决,因为Java语言引入了自动垃圾回收机制(GC机制),Java程序启动了一个单独的垃圾回收线程,时刻监测内存使用情况,在特定时机会回收/释放垃圾数据,这样会让内存时刻处于最好的状态。
JVM(Java虚拟机,用C++语言实现的虚拟的计算机)负责调度GC机制,程序员不需要干涉。
2.可移植性/跨平台
Java语言只要编写一次,可以做到到处运行。例如:Java程序编写完之后,可以运行在Windows操作系统上,不需要做任何改动可以直接运行在Linux操作系统上,同样也可以运行到mac OS(Operating System,操作系统)上面。那这个是怎么做到的呢?
如上图,有同样的一个Java程序,在这里我们以两个操作系统为例:Windows OS 和 mac OS(类Linux系统)。
首先,Windows OS 和 mac OS这两个操作系统的执行原理是不是一样的?答案是不一样。(这两家系统都是闭源收费的,谁都不会公开;说得再深点,虽然计算机都是执行二进制,但是这两个操作系统的二进制码的序列肯定是不一样的。)这里可以简单理解,像是安卓和iOS。
那同一个Java程序是怎样在两个操作系统都能执行的呢?实际上,Java程序并没有直接和操作系统打交道,而是与JVM(Java虚拟机)打交道,然后JVM再与操作系统打交道。也就是说,JVM屏蔽了操作系统之间的差异。
但不同的操作系统上所安装的JVM是不一样的,Windows OS 安装的是Windows般的JVM,mac OS 安装的是mac版的JVM。那JVM是怎么来的呢?在安装JDK的时候会自带JVM,所以JDK也有不同版本:Windows版的JDK、Linux版的JDK等。
JVM这种机制实现了跨平台,难么这种机制优点和缺点分别是什么?优点:一次编写,到处运行。(平台改变了,程序不需要改。)缺点:麻烦。对于运行Java程序来说必须先有一个JVM。
有些读者可能很难理解以上的解释,其实这个过程就类似于下面的一种情景:
现在有一个中国富商,他同时要跟美国、韩国、俄罗斯、法国、德国等几个国家洽谈生意,可是他不懂这些国家的语言,所以他针对每个国家请了一个翻译,这样他以后的话就只对翻译说,不同的翻译会将他说的话翻译给不同国家的客户,这样富商只需要说一句中文给翻译,那么就可以同各个国家的客户沟通了。
(本文仅代表个人观点,不喜勿喷!!!)