大家好,又见面了,我是你们的朋友全栈君。
学习一门语言首先要对它有一定的了解。否则就会失去最基本的东西。
一、什么是Java 通俗将就是计算机语言的最新版本,计算机经历了C语言、C++语言、以及C+±-语言。这里的C++ – -语言就是Java语言。Java语言是C语言的第三个计算机语言革命,C++语言是对C语言不足处的改进,的一门语言。而Java语言是面对C++语言的不做又一步的改进。为最大的革进新颖,决定不叫C+±-而后一些过程,最终叫Java。 Java与C语言以及C++语言相比的优势其又跨平台性、可移植性。
二、sun jdk
众所周知,java运行在jvm虚拟机上,其中虚拟机又分很多种。到目前为止java代表的并不是jvm。
jvm可以理解成一个不透明的沙盒,提供了一些接口允许输入输出,当然也提供了一些基本的监控。java被当成了编写程序运行在jvm上的一门编程语言。
sun jdk主要分为bin、lib、 jre 、jre/lib 、 jre/bin 几大块:
bin是Java工具,可以调起java的一些可运行包,比如java的编译,最主要的是编译器(javac.exe)。
lib是java基础类库。
jre是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库,也就是说运行一个java程序只需要包含jre部分即可,但是jre只能运行,不能编译。
jre/lib是JVM标准实现及Java核心类库。
jre/bin相当于jvm,提供了编译后的二进制文件的运行环境。
可以看出 jdk是最全的包含了所有的java所需包括jre,而jre只有运行环境,其中jre包含jvm。
三、回到核心
回到本质上,jvm接受的是二进制文件,而不是指定java语言编写的二进制文件,所以使用其他语言比如python、c、c++、go等语言,只要能将其编译成jvm可理解的二进制文件,就能在jvm上运行,当然这个过程非常艰难,要知道难在哪,需要搞清楚java编译器编译出来的二进制文件的格式是怎么样的,这个问题我将在后续的java编译、指令重排中介绍。
当下对java程序员的技能水平考验的更多是jvm的了解和掌握程度,而非java语言特性。绝大多数jvm都是由c++或者c(c与c++历来不分家)编写,当然也有用java实现虚拟机的版本。要搞懂jvm不必去搞c,但是搞过c的人都知道写起c来跟写起java来,完全不是一回事,java给我们的是全套封闭式的环境,同时也是束缚程序员的一大壁垒。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156640.html原文链接:https://javaforall.cn