欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA基础学习之API与JDK/JRE/JVM区别

程序员文章站 2022-04-09 23:39:08
写在前面在详细地学习JAVA每章节知识点之前,首先我们应梳理一下整个编程语言的结构组成,尤其是对开发人员来说,整个开发的过程基于什么样的环境,我们可以使用一些什么样的工具,可以利用哪些已有的代码(类/接口/框架…)去得到对应的功能,从而可以少做无用功少地开发新功能,提高开发效率;其次,我们应该掌握一些和计算机(包括服务器)、操作系统、网络等有关的知识,将我们用编程语言写的程序与计算机的运行机制联系起来(因为我们写的程序总归是要去运行,才能实现我们开发它的目的),不仅可以加深对开发过程中出现的诸如 “为...

写在前面


在详细地学习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源码 其他

强势参考:JDK 8官方自述文件


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