java是什么?

看到这个标题,一定认为这是一篇水文,其实也没有那么水,算是一篇大众科普文吧。

进入正题

一、介绍java

java是一门编程语言,最早由sun进行研发,研发的初衷是解决c和c++在底层操作并且进行编码的一些问题,当然也包括面向对象编程,所以java被设计成跨平台、可移植。其中有很长一段故事,有兴趣的自己去查阅相关资料。

二、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给我们的是全套封闭式的环境,同时也是束缚程序员的一大壁垒。

欢迎关注我的个人公众号
欢迎关注我的个人公众号
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值