java的语言特性
-
简单性:
相对而言,例如java不再支持多继承,c++是支持多继承的,c++中有指针,java中屏蔽了指针的概念。
-
面向对象:
java是纯面向对象的,更符合人的思维模式。
-
可移植性(跨平台):
java程序可以做到一次编译到处运行,java程序在windows操作系统上运行,同样的程序,不做任何修改也可以在linux操作系统上运行。 而windows操作系统内核和linux操作系统的内核不同,它们执行指令的方式也不同。 显然java程序不能直接和操纵系统打交道,因为java程序只有一分,而操作系统执行的原理不同。 SUM公司让java程序运行在一台虚拟的计算机当中,这个虚拟的计算机叫做java虚拟机,简称JVM。JVM再和底层操作系统打交道,JVM屏蔽了操作系统之间的差异。不同操作系统需要的JVM不同(JVM不能直接安装,需要安装相应版本的JDK)。
- 多线程
-
健壮性:
和自动垃圾回收机制有关,java语言运行过程中产生的垃圾可以被自动回收,自动垃圾回收机制简称GC机制。
- 安全性
java的加载与执行(使用DOS命令)
      java程序的执行包括两个阶段:编译阶段和运行阶段。
编译阶段
     编译阶段主要任务是检查Java源程序(xxx.java)是否符合Java语法,符合Java语法则能生成正常的字节码文件(xxx.class),
不符合Java语法规则则无法生成字节码文件。字节码文件中不是纯粹的二进制,该文件无法在操作系统中直接执行。
编译阶段过程:
1. 程序员需要在硬盘的某个位置(位置随意)新建一个.java扩展名的文件(Java源文件),源文件中编写的是Java源代码/源程序,该源程序必须符合Java语法规则。
2. Java程序员需要使用JDK种自带的javac.exe命令进行Java程序的编译(不使用idea等其他编译器的情况下)。
javac是一个java编译器的工具,在DOS命令窗口中使用,javac的使用规则:javac java源文件的路径
     一个java源文件可以编译生成多个.class文件,字节码文件/class文件是最终要执行的文件,当class文件生成后,java源文件删除并不会影响java程序的执行。但是一般java源程序不要删除,因为class文件最终执行效果可能不是我们想要的,那么这个时候需要回头重新修改java源程序,然后将修改后的源程序重新编译生成新的class文件,再运行这个class程序生成新的效果。
     编译结束后可以将class文件拷贝到其他操作系统中运行(跨平台)。
运行阶段
     JDK安装后,除了自带一个javac.exe来编译之外,还有一个java.exe命令来运行class文件。java.exe在DOS窗口使用,使用规则:java 类名,eg:运行A.class文件用命令 :java A。运行阶段过程:
1. 打开DOS命令窗口
2. 输入:java A
3. java.exe命令会启动JVM,JVM启动类加载器ClassLoader
4. ClassLoader会到硬盘上搜索A.class文件,找到该文件则将该字节码文件装载到JVM中
5. JVM将A.class字节码文件解释成二进制文件
6. 操作系统执行二进制和底层硬件平台进行交互。
JDK、JRE、JVM关系
JDK:Java开发工具包JRE:Java的运行环境,java程序开发完成后只需要java运行环境就可以运行java程序
JVM:java虚拟机,java程序最终运行在JVM上的。
JDK包含JRE,JRE包含JVM。 JDK和JRE可以单独安装,JVM不可以单独安装。