转入Java方向后,一切重头再来,从基础到标准组件,一路走来,重新进入计算机学科的魅力。
在快速阅读rt.jar包后,发现java的底层确实很基础,主要数数据结构/各个方向的通用算法/以及相关协议与标准的实现。为了进一步了解java的原理,接着对jvm8与jls8进行了梳理。整体来看java的整体内容与c#类似,只是jvm的不同版本让jls能在不同的机器上运行。而c#近年来也在打破window专用的局面,.net core 让c#语言进入了跨平台行列....
基于当下的需求,主要方向将暂时在java方向......
作为在08年毕业的我们,一直工作在软件开发的一线,借着对语言的扩张。重新来认识下惜惜相伴的计算机.
软件与计算机之间的关系大体如下:
作为软件开发人员,主要在计算机语言与应用软件层进行工作推进,大分工模型下,确实也只需要把本职工作干好就行....
由于近日我们工作流产品初步成型,在短时间内不会再大改,并且在这过程中对java存在了很多疑问,如:虚拟机配置优化/运行过程中内存分析/JVM内存管理等内容。所以进入到了编译原理的分析。
编译原理是对编译器的原理进行全面的讲解,编译器核心是把计算机语言解析为目标机器语言,是目标机器能运行相应的程序。
整体执行过程大概如下:
经过这些步骤处理后,形成最终目标机器能运行的代码。
编译器本身也是用特定的程序语言编写的.......所以编译器本身就是一个应用程序....
应用程序编译后最终需要加载到内存中,内存的存储模型大概如下:
代码区与静态区在程序编译完成后已经确定,栈区一般存储程序运行过程中的调用栈与上下文信息,堆区用于存储运行过程中的具体对象。
程序运行上下文对象存在在栈中,叫做 活动记录或调用栈帧。大体的结构如下: