java的运行过程与c程序的运行过程非常相似,c程序由编译器将c源代码直接编译成了机器码(当然中间还有预处理 汇编的步骤),可以在操作系统中直接运行,java多了个中间字节码。java编译器将java源代码编译成字节码(xxx.class) 字节码是二进制文件,其格式类似于 c中的elf格式,elf格式是由操作系统识别的,java字节码是给 java的运行环境 jvm 识别的。 jvm 实现了字节码的运行环境,这样不依赖系统运行环境来实现跨平台,其实现形式类似操作系统的实现形式,都有程序运行需要的 指令存储、栈、堆 等内存段,jvm以多线程的模式运行程序(字节码),线程的调度依赖操作系统的调度算法,对硬件的操作还是要依赖操作系统提供的接口实现。
阅读全文在spring框架中其核心功能是IoC的实现,Spring实现IoC靠的是组件 spring-beans
,搞清楚 beans 的原理有利于理解 spring 框架的设计思路。
Beans是对类如何实例化的定义,这些定义是通过配置的形式提现的,spring目前支持的定义格式有 Properties
Groovy
XML
以及后来在组件 spring-context
中通过 注解
的实现形式。容器的本质是一个HashMap 用于存储对象实例化后的地址 或者 存储如何实例化对象的数据(配置)。