1. Java主要特性
- Java语言是安全的:Java通常用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。例如:安全防范机制(类加载器ClassLoader),分配不同名字空间防止替代本地的同名类,字节码检查。
- Java语言是体系结构中立的:Java程序在Java平台上被编译为体系结构中立的字节码文件,然后可以在实现这个Java平台的任何系统上运行。
- Java语言是编译与解释并存的:如前所述,Java程序现在Java平台上被编译为字节码,然后再在实现这个Java平台的任何系统的解释器中运行。
- Java语言是性能略高的:与其他解释型高级脚本语言对比,Java是性能较优的。
- Java语言是原生支持多线程的:在Java语言中,线程是一种特殊的对象。必须由Thread类或者其子类来创建。
2. Java语言的特点
- 面向对象:
- 两个基本概念:类、对象
- 三大特征:封装、继承、多态
- 健壮性:吸收了C、C++语言的优点,去掉了其中影响程序健壮性的部分(如:指针、内存的申请和释放等),提供了一个相对安全的内存管理和访问机制
- 跨平台性:通过Java语言编写的程序可以在不同的系统平台上运行。
- 原理:只需要在运行Java程序的操作系统上,安装一个Java虚拟机JVM即可,由JVM来负责Java程序在该系统的运行。
3. Java的两种核心机制
- Java虚拟机
- JVM是一个虚拟的计算机,具有指令集并使用不同的内存区域,负责执行指令、管理数据、内存、寄存器。不同的平台有不同的虚拟机。只有某平台提供了对应的Java虚拟机,Java程序才可以在此平台上运行,Java虚拟机机制屏蔽了底层运行平台的差别。
- 垃圾回收机制GC
- 在C、C++中,由程序员决定回收哪些无用内存
- Java语言消除了程序员回收无用内存的责任,提供了一种系统级线程跟踪存储空间的分配清空。并在JVM空闲时,检查并释放哪些可被释放的存储空间。
- 垃圾回收在Java程序运行过程中自动运行(有一个专门用于垃圾回收的线程,gc线程),程序员无法准确的控制和干预。
- 需要注意:Java程序仍然会出现内存泄漏和内存溢出的问题,内存泄漏(内存中存在对象,不能被回收)
4. JDK、JRE、JVM之间的关系
- JDK是Java Development Kit的缩写,意思是Java开发工具包,其中包括JRE和一些开发工具,例如javac、jar、javadoc等
- JRE是Java Runtime Environment的缩写,意思是Java运行环境,包括了Java虚拟机JVM和Java核心类库,如果想要运行Java程序,只需要安装JRE即可。