java包括jvm和api_JAVA基础学习之API与JDK/JRE/JVM区别

写在前面

在详细地学习JAVA每章节知识点之前,首先我们应梳理一下整个编程语言的结构组成,尤其是对开发人员来说,整个开发的过程基于什么样的环境,我们可以使用一些什么样的工具,可以利用哪些已有的代码(类/接口/框架…)去得到对应的功能,从而可以少做无用功少地开发新功能,提高开发效率;其次,我们应该掌握一些和计算机(包括服务器)、操作系统、网络等有关的知识,将我们用编程语言写的程序与计算机的运行机制联系起来(因为我们写的程序总归是要去运行,才能实现我们开发它的目的),不仅可以加深对开发过程中出现的诸如 “为什么要用这个不用那个?”、“为什么这个方法/算法效率更高?”、“为什么错误会发生在这里?” 等等这样的问题背后的原理的理解,更重要的是,提高我们开发人员Debug的效率!最后,我们要把握好自己学习的方向,系统学习也要深入学习,深度与广度适宜结合起来,常动手,动手查找资料、动手敲代码、敲笔记~~

【基于jdk1.8版本】

【API】

API,Application Programming Interface,应用程序编程接口,是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。用来为应用程序与开发人员提供访问/使用某软件或硬件(嵌入式?)的一组例程渠道,而又无需访问源码,或理解内部工作机制的细节。

在不同场合,这个编程接口的含义不同:如java API、Android API、Windows API、Linux API…

1. java API

指java标准类库,含有一些类/接口/方法;

连接了开发人员与jdk中的”已有零部件”----类库----just阅读API文档(用来解释java API的一个标准文档)而无需阅读源码;

【区分】java中有个“接口”概念>>>接口表示的是,这个对象能做什么,是对动作的抽象;

【接口vs抽象类】

比如,男人,女人,这两个类(如果是类的话….),他们的抽象类是人-----说明他们都是人(抽象出共性,对根源属性的一种描述);人可以吃东西,狗也可以吃东西,可以把吃东西定义成一个接口,然后让这些不同的类去实现它(继承它);

接口不能去实现(去继承别的类);

所以,在高级语言上,一个类只能继承一个类(抽象类),正如人不可能同时是生物和非生物,但是可以实现多个接口,吃饭接口、走路接口… 参考了此文

2. 其他API

Android开发的API是指Android SDK函数库;

网站API一般是指一个网站提供的接口,比如登录验证、信息查询、通知、支付等;

Windows API是指Windows操作系统向外提供的API,一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数;

os向用户提供了如下两类接口:

用户接口:该接口支持用户与os之间进行交互

程序接口API:应用程序通过这个接口可在执行中访问系统中的资源和取得OS的服务

【jdk】

组成:

bin目录开发工具s

lib目录jar包s

jre目录运行环境

src源码

其他

1. bin目录

bin:binary缩写;

帮助我们开发,执行,调试和记录Java程序的一些工具和实用程序。

目录含有的是一些常用开发工具:是一些可执行文件(已编译/已解释),它可以由操作系统加载器(加载程序)直接加载(因为可执行所以直接加载无需翻译)到内存中执行(将CPU控制权由os交给内存中的应用程序指令)

目录下(windows系统中)常用到的文件:java.exe/javac.exe/javadoc.exe…

加载器和应用程序之间有个协议约定,即程序头,程序头结构中主要信息包括程序总长度、用户程序入口点、段重定位表项个数、段重定位表。该程序头结构在编译器编译程序时自动生成;

2. lib目录

library是库,面向对象编程语言组织而成的称为类库;

lib目录中主要是一堆.jar文件的集合(可将类库=jar包s),也含有一点子类库.lib文件、.idl文件、其他文件夹等;

jdk中有很多已经实现的类库供开发者直接使用,这些类库都是以jar包的形式提供的,把它们放在一个共同的lib目录里(?也可以成为java API),它为编程者实现了各种常用操作的类的方法,一般不需要改动;

.jar文件:Java Archive,又称jar包(java环境对应的压缩文件),一般情况下都集成了若干个类和接口(已成.class文件)----具有相同特征,可以用来实现一组功能----便把这些.class文件打包成.jar包;

类库 ---- 很多jar包

Jar包 ---- 很多类(基本上也同时含有很多接口)

类 ---- 很多值很多方法

3. jre目录

bin目录:解释运行.class文件需要的一些工具包;

lib目录:包含在解释执行中会用到的一些核心类库…

其中很重要的一个java核心机制------java虚拟机 jvm:

jvm连接os与编译器,是利用软件方法实现的一种抽象的虚拟计算机(!基于下层的操作系统和硬件平台);

具有指令集并使用不同的存储空间;负责执行指令,管理数据、内存、寄存器(如:系统级线程跟踪----在JVM空闲时,检查并释放那些可被释放的存储空间);

java源文件(.java文件) >>> 经编译(javac 源程序文件名.java),成字节码程序(一个或多个名为 类名.class 的文件) >>> 通过jvm将每一条指令翻译(java 类名)成不同平台下的机器码(实现跨平台),通过特定平台运行;

.class文件并不直接与机器的操作系统相对应,而是经过jvm虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统以执行;

本文地址:https://blog.csdn.net/qq_40944503/article/details/107384080

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值