关于代码编译到最后运行过程
代码编译成了可执行文件,例如.jar, 或者.exe
那最终是如何运行的呀
java -jar xxx.jar 是如何启动的进程呢,怎么接收的客户端输入呢,网络请求是怎么进来被处理的?
这个具体是哪方面知识呀
代码编译成了可执行文件,例如.jar, 或者.exe
那最终是如何运行的呀
java -jar xxx.jar 是如何启动的进程呢,怎么接收的客户端输入呢,网络请求是怎么进来被处理的?
这个具体是哪方面知识呀
怎么接收网络请求:起了一个进程,监听了指定的端口的网络请求。
主要知识:操作系统,计算机网络,Java 。
exe 跑在操作系统下,cpu 里。jar 跑在 java 虚拟机里。要弄明白这个你首先要明白操作系统和虚拟机的区别。
提到进程,又是一个操作系统概念。进程是一个操作系统的可执行单元。java 虚拟机在操作系统里面也是一个进程。而 java -jar xxx.jar 就是启动一个 java 虚拟机,在里面加载了你的 jar 。
网络请求就涉及到 socket,这是一个网络层的概念…
你这个有点千头万绪啊……多看书吧
可以先看一下我这两篇文章做一下初步的了解:
https://www.nosuchfield.com/2018/11/23/Program-compilation-linking-loading-and-running/
https://www.nosuchfield.com/2018/08/01/TCP-Flow-Control-And-Linux-Socket-Buffer/
大概原理不算复杂,但细节特别多,不是专门搞这个的话,建议点到为止。有本书叫《程序员的自我修养》写得很好,就是比较旧了,新的也可以参考《深入理解计算机系统》第三版