- WHY USING JAVA
- IT'S FEATURES
- about JVM
- about 面向对象、类和对象
- about 封装、继承、多态
- about GC?
- about GC 基本原理 ? HOW 主动通知 JVM 回收 ?
Java 语言是跨平台、面向对象、健壮的高级语言,被广泛应用于 web 应用开发,是目前市场上主流的开发语言,主要应用在企业级应用、Android 平台应用、大数据平台等。
IT’S FEATURES
- 跨平台性: Java 编写的应用程序能够在不同平台上运行,实现 “Write once , Run anywhere”,其核心机制在于 JVM。
- 面向对象性: Java 是纯面向对象语言,包括两个基本概念 —— 类、对象,三大特性 —— 封装、继承、多态。
- 健壮性: 吸收了 C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。
JVM(Java Virtural Machine)是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
在程序运行前,Java源码(.java)需要经过编译器编译成字节码(.class)。在程序运行时,JVM 负责将字节码翻译成特定平台下的机器码进行运行。也就是说,只要在不同平台上安装对于的 JVM,就可运行字节码文件。
注意事项
- 编译结果是生成字节码、不是机器码,字节码不能直接运行,必须通过 JVM 翻译成机器码才能运行;
- 跨平台的是 Java 程序,而不是 JVM,不同平台下需要安装不同的 JVM。
about 面向对象、类和对象
- 面向对象是一种更加符合人类自然思维的编程设计方法。它从现实世界中客观存在的事物出发,抽象出事物本质特点来思考问题和解决问题,使系统直接反映到客观世界。
- 类是对现实世界中某一具有共同特征的客观事物的抽象,是具有相同属性和行为的一组集合。
- 对象即描述客观事物的实体,是用来构成系统的的基本单位,具有一组属性和一组行为。
- 封装即隐藏对象的属性和实现细节,然后通过公有方法或接口来暴露该对象的功能。其目的是为了保证数据被安全访问和操作。
- 继承是面向对象实现代码复用的重要手段,当子类继承父类之后,子类作为一种特殊的父类,将直接获得父类的属性和方法。
- 多态是动态的表现形式,是指子类对象可以直接赋给父类变量,当编译时表现的是父类的行为特征,而运行时表现的是子类的行为特征。这意味着同一个类型的对象在运行时可能表现出多种行为特征。
about GC?
about GC 基本原理 ? HOW 主动通知 JVM 回收 ?GC(Gabage Collection)指的是垃圾收集,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
对于 GC 来说,当程序员创建对象时,GC 就开始监控这个对象的地址、大小以及使用情况。通常,GC 采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC 就会责任回收这些内存空间。
程序员可以手动执行 System.gc(),通知 GC 运行,但是 Java 语言规范并不保证 GC 一定会执行。
程序员可以手动执行 System.gc(),通知 GC 运行,但是 Java 语言规范并不保证 GC 一定会执行。



