第1章 java语言概述及开发环境

既然学习java那总得知道java是怎么来的
java语言的大致起源:
   Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

杂七杂八的知识太多又不能不知道
Java的几个版本:
JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。
现在才知道这些缩写的字母是什么含义了

Java的特点:
1.java的风格类似C++,从某种意义上讲,java是C++的一个变种
2.java摒弃了C、C++中的容易引发错误和难以理解的指针,结构,以及内存管理等
3.java提供了丰富的类库,很方便开发程序
4.java是完全面向对象的语言,支持 继承,重载,多态等面向对象的特性 C++是面向对象和面向过程的混合语言, C是纯面向过程的语言
5.java是一种强类型的语言,比C/C++检查还要严格,java区分大小写字母
6.java提供了自动垃圾回收机制gc,有效避免了C、C++的内存泄漏问题
7.java禁止非法访问内存,因为java没有指针,内存的申请和释放
8.跨平台,java的源代码编译成结构中立的中间格式,这种格式与机器无关,只要在安装有JVM(java虚拟机)的电脑上,都能运行这种与机器无关的中间文件,.class ,java一次编译,到处运行
9.对于不同的操作系统,会有不同的java虚拟机,这也就决定了java的可移植性
10. java支持多线程,简单理解,如果是单核CPU,那么会通过时间片轮转的方式,多线程执行程序,如果是多核CPU,那么就可以
理解为,两个或多个线程同时运行 还不理解的可以去看码农翻身里面的故事很生动

高级语言运行机制:
计算机高级语言按照程序的执行方式可以分为编译型解释型两种
        编译型语言是指使用专门的编译器,针对特定的平台(操作系统)将某种高级语言源代码一次性“翻译”成可被该平台硬件执行的机器码(包括机器指令和操作数)。并包装成该平台所能识别的可执行性程序的格式,这个转换的过程成为编译,编译生成的可执行程序可以脱离开发环境,在特定的平台上独立运行。
有些程序编译结束后,还可能需要对其他编译好的目标代码进行链接,即组装两个以上的额的目标代码模块生成最终的可执行程序,通过,这种方式实现低层次的代码复用。
因为编译型语言是一次性地编译成机器码,所以可以脱离开发环境独立运行,而且通常运行的效率较高,但因为编译型语言的程序被编译成特定平台上的机器码,因此编译生成的可执行性程序通常无法移植到其他平台上,如果需要移植,则必须将源代码复制到特定的平台上,针对特定的平台进行修改,至少也需要采用特定平台上的编译器重新编译
现有的C 、C++/Pascal等高级语言都属于编译型语言。

        解释型语言是指使用专门的解释器对源程序逐行进行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进行整体型的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释的过程混合到一起去完成。
可以认为:每次执行解释性语言的程序都需要进行一次编译,因此解释型语言的程序运行效率通常较低,而且不能脱离解释器独立运行,但解释型语言有一个优势:跨平台比较容易,只需要提供特定的平台的解释器即可,每个特定平台上的解释器负责将源程序解释成特定平台的机器指令即可,解释型语言可以方便地实现源程序级的移植,但这也是以牺牲程序执行效率为代价的,
现有的Ruby、Python等语言都属于解释型语言。

Java语言比较特殊,由于Java语言的编写的程序需要经过编译的步骤,但这个编译的步骤并不会生成特定的平台的机器码,而是生成一种与平台(操作系统)无关的字节码(也就是.class文件)。当然,这种字节码是不可执行性的。必须使用Java解释器来解释执行。因此,可以认为:Java语言既是编译型语言,也是解释型语言。要经过这两步骤。
在这里插入图片描述
Java语言里负责解释执行字节码的文件就是Java虚拟机,即JVM(Java Virtual Machine)
JVM是可运行Java字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行。当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码不面向任何具体平台,只面向JVM。
不同平台的JVM都是不同的,但他们都提供了相同的接口。JVM是Java程序跨平台的关键部分,只要为不同的平台实现了相同的虚拟机,编译后的Java字节码可以在该平台上运行。显然,相同的字节码程序需要在不同的平台上运行,几乎是不可能的,只有通过中间的转换器才可以实现,JVM就是这个转换器
Java虚拟机(Java Virtal Machine)

1、JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
2、对于不同的平台(操作系统),有不同的虚拟机。
3、Java虚拟机机制屏蔽了底层运行平台的差别,实现了"一次编译,到处运行"。
在这里插入图片描述

JDK JRE JVM关系:
在这里插入图片描述

直观图
在这里插入图片描述

还要再解释一下什么是JDK, JRE, SDK, API
JDK(Java Development Kit Java开发工具包)
其中包括了Java编译器、JVM、大量的Java工具以及Java基础API里面是Java类库和Java的语言规范,JAVA的运行环境(JVM+Java系统类库 == JRE)和JAVA工具,其中的JAVA工具:编译工具(javac.exe) 打包工具(jar.exe)等, 安装了JDK就不用再安装JRE了

JRE(JavaRunTimeEnvirment的简称) ,指Java运行环境,运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。–运行应用程序是JRE里的靠JVM,但还需要类加载器等基础类库

SDK ( Software Development Kit 的缩写) 中文意思就是“软件开发工具包”
可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。
SDK内容有好多这里是通俗的说

API ( Application Programming Interface) 其实就是操作系统留给应用程序的一个调用接口(预先定义的函数),应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作),
是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。

参考以下博客
https://www.cnblogs.com/lindroid/p/5438275.html
https://blog.csdn.net/ytm15732625529/article/details/80383343
https://baijiahao.baidu.com/s?id=1589560255789375228&wfr=spider&for=pc

猜你喜欢

转载自blog.csdn.net/sincerit/article/details/83588373