1. 什么是编程语言

计算机编程语言能够实现人与机器之间的交流和沟通,而计算机编程语言主要包括汇编语言、机器语言以及高级语言。

机器语言 这种语言主要是利用二进制编码进行指令的发送,能够被计算机快速地识别,其灵活性相对较高,且执行速度较为可观,机器语言与汇编语言之间的相似性较高,但由于具有局限性,所以在使用上存在一定的约束性。

汇编语言

该语言主要是以缩写英文作为标符进行编写的,运用汇编语言进行编写的一般都是较为简练的小程序,其在执行方面较为便利,但汇编语言在程序方面较为冗长,所以具有较高的出错率。

高级语言 所谓的高级语言,其实是由多种编程语言结合之后的总称,其可以对多条指令进行整合,将其变为单条指令完成输送,其在操作细节指令以及中间过程等方面都得到了适当的简化,所以,整个程序更为简便,具有较强的操作性,而这种编码方式的简化,使得计算机编程对于相关工作人员的专业水平要求不断放宽。

2. JAVA是什么

Java是一门面向对象的编程语言,不仅吸收了C 语言的各种优点,还摒弃了C 里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java具有简单性、面向对象、分布式、健壮性、安全性、平立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等

3. java发展历程

java语言的体系(java语言简介)(1)

Java之父——James Gosling

詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为“Java之父”。

1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位。

java语言的体系(java语言简介)(2)

Java 的历史要追溯到 1991 年, 由 Sun 公司带领的开发小组, 想设计一种小型的计算机语言,主要用于有线电视转换盒这类的消费设备。 由于这类设备的处理能力和内存都非常有限,所以语言就必须设计的非常小且能够生成紧凑的代码。 另外,由于不同的厂商会选择不同的 CPU, 因此很重要的一点就是这种语言不应该与任何特定的体系结构绑定。这个项目被命名为 “Green”。

Sun 公司的人都有 Unix 的应用背景, 所以开发的语言用了 C 为基础。并把这种语言称为 “Oak”, 后来, Sun 公司的人后来发现, Oak 是一种已经有的计算机语言的名字, 于是, 将其改名为 “Java”。

1995年5月23日,Java语言诞生

1996年1月,第一个jdk-JDK1.0诞生1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术1996年9月,约8.3万个网页应用了JAVA技术来制作

JDK 1.0 开发代号为 Oak ( 橡树 )。

1997年2月18日,JDK1.1发布

JDK 1.1 引入的新特性包括:

引入JDBC(Java Database Connectivity);

支持内部类;

引入Java Bean;

引入RMI(Remote Method Invocation);

引入反射(仅用于内省)。

1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录1997年9月,JavaDeveloperConnection社区成员超过十万1998年2月,JDK1.1被下载超过2,000,000次

1998年12月8日,JAVA2企业平台J2EE发布

1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)

2000年5月8日,JDK1.3发布

2000年5月29日,JDK1.4发布

2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机

2001年9月24日,J2EE1.3发布

JDK 1.3 开发代号为Kestrel(红隼)

引入的新特性包括:

引入Java Sound API;

jar文件索引;

对Java的各个方面都做了大量优化和增强。

2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升

JDK 1.4 开发代号为Merlin(隼)

引入的新特性包括:

XML处理;

Java打印服务;

引入Logging API;

引入Java Web Start;

引入JDBC 3.0 API;

引入断言;

引入Preferences API;

引入链式异常处理;

支持IPv6;

支持正则表达式;

引入Image I/O slot machine API。

2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0

JDK 1.5 开发代号为Tiger(老虎)

引入的新特性包括:

引入泛型;

增强循环,可以使用迭代方式;

自动装箱与自动拆箱;

类型安全的枚举;

可变参数;

静态引入;

元数据(注解);

引入Instrumentation。

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME

2006年12月,SUN公司发布jre6.0

JDK 1.6 开发代号为Mustang(野马)

引入的新特性包括:

支持脚本语言;

引入JDBC 4.0 API;

引入Java Compiler API;

可插拔注解;

增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;

继承Web Services;

做了很多优化。

2009年12月,SUN公司发布Java EE 6

2010年11月,由于Oracle公司对于Java社区的不友善,因此Apache扬言将退出JCP

2011年7月28日,Oracle公司发布Java SE 7

JDK 1.7 开发代号是Dolphin(海豚)

引入的新特性包括:

switch语句块中允许以字符串作为分支条件;

在创建泛型对象时应用类型推断;

在一个语句块中捕获多种异常;

支持动态语言;

支持try-with-resources;

引入Java NIO.2开发包;

数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线;

钻石型语法;

null值的自动处理。

2014年3月18日,Oracle公司发表Java SE 8

JDK 1.8 开发代号是Spider(蜘蛛)

支持 lambda支持;

增强日期与时间API的功能;

对垃圾回收的性能也进行了改进;

并且移除了permgen区。

Lambdas表达式与Functional接口

接口的默认与静态方法

方法引用

重复注解

更好的类型推测机制

扩展注解的支持

2017年7月,Oracle 公司将发布 JDK 9。这个版本算是比较大的调整,加入了很早之前就规划的模块化功能。并且对整个 JDK 基于模块进行了重新编写。Java 9 提供了轻量级 JSON API; 使用 G1 作为默认的垃圾收集器,替代了之前默认使用的 Paralel GC; 引入了 jShell 这个交互性工具。并且全面支持 HTTP 2.0。

也就是在这一年,2017 年 8 月,Oracle 决定将 Java EE 移交给开源组织,最后 Eclipse 基金会接手。

由于甲骨文不允许开源组织用 Java 的名号,于是 Eclipse 选出了 "Jakarta EE" 和 "Enterprise Profile" 两个后续名字,最终前者以 64.4% 的票数获胜。

也就是说,Java EE 已经正式更名为 Jakarta EE(雅加达)。

Oracle公司发表Java SE 9

2018年,从 2018 年开始, 每6个月就会发布一个 Java 版本, 以更快地引入新特性。这里又分为 LTS 版和最新版。 生产环境中最好只使用 LTS 版本, 因为这个版本更加稳定, 维护周期更长。2018 年 3 月 21 日, Java 10 发布。2018 年 9 月 25 日, Java 11 LTS 发布。

2019 年,2019 年 2 月 Java 12 发布2019 年 9 月 Java 13 发布。

2020 年,2020 年 3 月 17 日,Java 14 发布。2020 年 9 月 15 日,Java 15 发布。

2021 年,2021 年 3 月 16 日,Java SE 16 发布。2021 年 9 月 14 日,Java SE 17 LTS 发布。

这个是继 Java 11 之后的有一个长期支持版本, 并且直接支持到了 2029 年 9 月。这可能是下一个 Java 8。所以学习的话, 可以直接学习这个版本。当然也可以直接学习 Java 17 这样的话, 对于工作来说 3 年之内不会有大的变化。

4. java的三个方向
  • Java SE:Standard Edition
  • Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为Java EE和Java ME提供基础。
  • Java EE:Enterprise Edition Java EE 以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。2018年2月,Eclipse 宣布正式将 JavaEE 更名为 JakartaEE
  • Java ME:Micro Edition
  • Java ME 以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
5.java语言应用领域
  • 桌面应用系统开发
  • 嵌入式系统开发
  • 电子商务应用
  • 企业级应用开发
  • 交互式系统开发
  • ...
6.JAVA语言特性
  • 简单 Java语言的语法与C语言和C 语言很接近,从某种意义上讲,它是由C和C 演变而来,使得大多数程序员很容易学习和使用。 对C 来说进行了简化和一定的提高,如:使用接口代替了复杂的多重继承以及取消了指针,还通过实现垃圾自动回收机制,大大简化了程序员的资源释放管理工作。
  • 提供了丰富的类库和API文档,以及第三方开发包工具包,还有大量的基于Java的开源项目,帮助程序设计人员参考学习,JDK就是开放的源代码之一,读者可以通过分析项目的源代码,来提高自己的编程水平。
  • 面向对象
  • 面向对象就是Java语言的基础,也是Java语言的重要特性。面向对象是指以对象为基本单元,包含属性和方法。对象的状态用属性表达,对象的行为用方法表达。面向对象技术使得应用程序的开发变得简单易用,节省代码。总之,Java语言是一个纯面向对象的程序设计语言。
  • 分布式
  • 分布性主要包括两大方面,分别是操作分布和数据分布,其中操作分布指的是在多个不同的主机上布置相关操作,数据分布是将数据分别存放在多个网络中不同的主机上,借助的是URL(统一资源定位符)访问网络对象,访问方式和访问本地系统相似。 Java语言具有一个强大的,易于使用的网络能力,这是非常适合于分布式计算程序的。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
  • 多线程 多线程机制使应用程序在同一时间并行执行多项任务,Java语言提供多线程之间的同步机制,这些相应的同步机制可以很好的保证不同线程,能够正确的共享数据。多线程机制使程序具有更好的交互性和实时性。
  • 高性能 Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。 与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C 。
  • 跨平台 所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。
  • 在Java语言中,Java自带的虚拟机很好地实现了跨平台性。Java源代码经过编译后生成二进制的字节码是与平台无关的,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够Write once, run anywhere(一次编译,到处运行)的原因。Java虚拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使得Java语言具备跨平台性。
  • 可移植 可移植性来源于跨平台性性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
  • 安全 在Java语言中删除了类似于C语言中的指针和内容释放等语法,有效的避免了非法操作内存,代码要经过校验之后才能够运行,所以未经允许的Java程序不可能出现损害系统平台的行为,最大的好处就是,Java可以编写防病毒和可修复的系统,Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击,从而可以提高系统的安全性。
  • 健壮的 Java语言的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
  • 动态的 Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类,这也有利于软件的升级。 Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
7.Java技术体系

java语言的体系(java语言简介)(3)

8.JDK & JRE & JVM
  • jdk(Java Development Kit)

Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等,如果我们需要开发java程序,则需要安装JDK.

  • jre(Java Runtime Environment)

Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包

如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

  • JVM(Java Virtual Machine)

Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。

JVM&JRE&JDK关系图

java语言的体系(java语言简介)(4)

,