→ 与平台无关性(一次变异到处运行)java
如何实现?网络
→ GC(垃圾回收机制。会自动释放堆内存)并发
→ 语言特性(泛型,反射,lambda表达式)操作系统
→ 面向对象(封装,继承,多态)对象
→ 类库(java自己自带的一些集合和并发库,网络库,IO等)blog
→ 异常处理继承
→ class loader :根据特定格式,加载class文件到内存内存
→ execution engine :对命令进行解析(完成后即提交到操做系统中执行)开发
→ native interface :融合不一样开发语言的原生库为java所用编译器
→ runtime data area :JVM内存空间结构模型
Java反射机制是在运行状态中,对任意一个类,都可以知道这个累的全部属性和方法;对于任意一个对象,都可以调用他的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
→ 编译器将Robot.java源文件编译为Robot.class字节码文件
→ClassLoader将字节码转换为JVM中的Class<Robot>对象
→ JVM利用Class<Robot>对象实例化为Robot对象
ClassLoader在java中有这很是重要的做用,它主要工做在Class装载的加载阶段,其主要做用是从系统外部得到Class二进制数据流,它是Java的核心组件,全部的Class都是由ClassLoader进行加载的,ClassLoader负责经过将Class文件里的二进制数据流装载进系统,而后交给Java虚拟机进行链接、初始化等操做。
一、BootStrapClassLoader :C++编写,加载核心库java.*,(java.lang.*)
二、ExtClassLoader :Java编写,加载扩展库javax.*
三、AppClassLoader :Java编写,加载程序所在目录
四、自定义ClassLoader :Java编写,定制化加载