序章 Java语言概述

序章 Java语言概述

本章内容:

  • Java语言的发展简史

  • Java语言的发展前景

  • Java语言的技术体系结构

  • Java语言的特点

  • Java语言的核心机制之JVM(Java Virtual Machine,Java虚拟机)

  • Java语言的开发和运行环境

一、Java语言的发展简史

1、起步阶段:

​ Java语言是由詹姆斯·高斯林(James Gosling)和其Green Team小组成员共同开发的。

​ 1991年,Sun公司的工程师小组想要设计一种语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些设备的处理能力和内存都很有限,并且不同的厂商会选择不同的中央处理器(CPU),因此这种语言的关键是代码短小紧凑与平台无关(即不能与任何特定的体系结构捆绑在一起)。

​ 詹姆斯·高斯林(James Gosling)团队率先创造了这个语言,并命名为“Oak"(起名的原因是因为他非常喜欢自己办公室外的橡树)。后因智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。

​ 随着20世纪90年代互联网的发展,Sun公司发现该语言在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。(Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。)

2、发展阶段:

发行版本发行时间备注
Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包
Java 1.11997.02.19JavaOne会议召开,创当时全球同类会议规模之最。
Java 1.21998.12.08Java拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.32000.05.08
Java1.42004.02.06
Java 5.02004.09.30①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.02006.12.112009.04.20 Oracle宣布收购SUN公司
2009.04.20Oracle公司收购SUN,交易价格74亿美元。
Java 7.02011.07.02
Java 8.02014.03.18此版本是继Java 5.0以来变化最大的版本。是长期支持版本(LTS)
Java 9.02017.09.22①此版本开始,每半年更新一次;②Java 9.0开始不再支持windows 32位系统
Java 10.02018.03.21
Java 11.02018.09.25JDK安装包取消独立JRE安装包,是长期支持版本(LTS)
Java 12.02019.03.19
Java17.02021.09发布Java 17.0,版本号也称为21.9,是长期支持版本
Java19.02022.09发布Java19.0,版本号也称为22.9。

二、Java语言的发展前景

​ 在国内市场,Java语言无论是在企业级应用,还是在面向大众的服务方面都取得了很大进展,在中国的电信、金融等关键性业务中发挥着举足轻重的作用。目前,社会向着更加信息化、更加智能化的方向发展,Java语言的应用范围也在不断扩大。Java语言可以进行面向对象的应用开发、可视化、动态画面设计、系统调试、数据库操作等,在互联网技术行列中占有非常重要的地位。

1、5G时代

​ 麦肯锡曾经预测,到2020年,物联网市场仅仅就基于信息通信技术(ICT)支出这一块的产值就达到5810亿美元,复合年增长率(CAGR)在7%~15%。所以无论是跨国公司、小型企业、政府组织还是私营企业,都希望可以利用物联网创造更多的价值。而高速无线网络,尤其是5G技术,将为整个物联网带来新的可能性。

​ 物联网是将许多日常设备以某种方式计算机化并连接到互联网的形式,它是各种不同技术(如数据科学、传感器、自动化和云计算)的集群。互操作性是物联网应用的关键因素。

​ 由于Java具有很好的互操作性,因此是复杂物联网项目的优秀选择。Java的多功能性和灵活性,以及跨平台性,使得它可以一次编写就处处运行,所以物联网的开发人员一般倾向于使用Java语言进行开发,认为它是物联网开发的理想选择。

2、云计算时代

​ Java在Web、移动设备及云计算方面的前景广阔,随着云计算及移动领域的扩张,更多的企业在考虑将其应用部署在Java上。无论是本地主机还是公共云,Java都是目前最合适的选择。

3、人工智能时代

​ IT界有人认为,在大数据和人工智能时代中Java的影响力在下滑。但事实证明Java依然屹立不倒。实际上Java也可以被认为是AI开发的一个很好的选择,人工智能与搜索算法,以及人工神经网络和遗传编程有很大关系。同时,Java在分布式微服务系统开发下的优势,为人工智能和大数据后端管理提供了强大的支持。

三、Java语言的技术体系平台

​ 1998年,Sun公司根据应用的领域不同,把Java技术划归为三个平台,当时分别称为J2SE、J2EE和J2ME,2006年改名为Java SE、Java EE和Java ME。

1、Java SE

​ Java SE是**Java平台标准版(Java Platform, Standard Edition)**的简称,允许用户在桌面和服务器上开发和部署Java应用程序。Java提供了当今应用程序所需要的丰富的用户界面、性能,具有通用性、可移植性和安全性。同时,Java SE为Java EE提供了基础。

​ 我们主要介绍的就是Java SE的技术。

2、Java EE

​ Java EE是**Java平台企业版(Java Platform, Enterprise Edition)**的简称,用于开发便于组装、健壮、可扩展、安全的服务器端Java应用。

​ Java EE建立在Java SE之上,具有Web服务、组件模型,以及通信API等特性。这些为面向服务的架构(SOA),以及开发Web 2.0应用提供了支持。

​ Java EE是Java主流的平台方向,目前企业中绝大多数电商系统都是使用Java编写的。

3、Java ME

​ Java ME是**Java微版(Java Platform, Micro Edition)**的简称,是一个技术和规范的集合,它为移动设备(消费类产品、嵌入式设备、高级移动设备等)提供了基于Java环境的开发与应用平台。

​ Java ME在早期的诺基亚塞班手机系统中有很多应用,而现在随着使用iOS和Android操作系统的智能手机的兴起,Java ME渐渐退出了手机端应用开发的历史舞台。

四、Java语言的特点

​ Java语言的语法比较简单,对于初学者来说是一门极容易入门的语言。Java语言在设计上有着绝对的优势,开发人员可以尽快从语言本身的复杂性中解脱出来,将更多的精力投入软件自身的业务功能中。

​ Java语言最重要的一点是符合工程学的需求,由于现代软件都是协同开发,因此具有代码可维护性、编译时检查、较为高效的运行效率、跨平台能力、丰富而强大的开发、测试、项目管理工具配合等特性都使Java成了企业应用软件开发的首选,也得到很多互联网公司的青睐。Java语言的成功更取决于它本身的语言特点。下面将会对Java语言的特点进行详细的介绍。

1、平台无关性

​ Java语言的一个显著特点就是平台无关性。

​ 首先了解下什么是平台。例如,个人计算机用的Windows系统、手机用的Android系统、大型网站用的Linux系统,这些系统都可以理解为平台。

​ 平台无关性代表的就是同一个Java程序可以在不同的平台上运行,即一次编写就可以处处运行(Write Once,Run Anywhere)。这是因为Java程序不是直接运行在操作系统上的,而是运行在Java虚拟机中的。

2、面向对象性

​ Java语言是一门面向对象的语言。

​ 面向对象的世界观认为世界是由各种各样具有自己的运动规律和内部状态的对象组成的,不同对象之间的相互作用和通信构成了完整的现实世界。面向对象的编程就是模拟现实世界,把现实世界中的事物类别和实体对象抽象成Java中的类和对象。例如,人有姓名、年龄、性别等属性,也有跑步、骑自行车、吃饭等行为。如果要编写一个关于人的系统,可以把人的属性和行为看作一个整体并封装为一个Java类,而具体的某个人对应Java类的一个实例对象,这就是面向对象开发的概念。

​ 相较于面向过程,面向对象更易维护、复用、扩展,可以设计出低耦合的系统,使系统更加灵活。面向对象的具体讲解见第7章。

3、支持分布式

​ Java语言的创始人团队很敏锐地嗅到了时代的发展趋势之一就是网络化,迅速将Java语言改造成网络编程语言,才让Java语言大放异彩。Java语言支持Internet应用的开发,java.net包提供了相应的类库用于网络应用编程。Java语言的远程方法调用(RMI)机制也是开发分布式应用的重要手段。

4、支持多线程

​ 现在的程序都要求能实现多线程,一方面是为了能更好地利用CPU资源,另一方面是程序应该体现“多角色”,如“生产者消费者模型”。JVM被设计成采用轻量级进程(Light Weight Process, LWP)实现与操作系统的内核线程形成相互对应的映射关系。使用JVM就可以实现Java内部的多线程,并提供了相应的语法来进行编码。其实调用Java的多线程就是调用内核线程来执行的,所以说Java天生是支持多线程的语言。

​ java.lang包提供了Thread线程类来支持多线程编程,Java的线程支持包括一组同步原语。这组同步原语是基于监督程序和条件变量风范,由C.A.R.Hoare开发并广泛使用的同步化方案,如synchronized、volatile等关键字的使用。从JDK 1.5开始又增加了java.util.concurrent包,该包提供了大量高级工具,可以帮助开发人员编写高效、易维护、结构清晰的Java多线程程序。

​ Java开发团队正在设计新型轻量级用户线程——fibers,其轻量化程度高于内核提供的线程,从而可以更高效地使用CPU等系统资源。

5、健壮性

​ Java语言原来是用于编写消费类家用电子产品软件的语言,所以它被设计成可以编写高可靠和稳健的程序。Java会检查程序在编译、运行时的错误,并消除错误。Java被设计为强类型语言,类型检查能帮助用户检查出许多在开发早期出现的错误。Java要求以显式的方法声明,它不支持C语言风格的隐式声明。这些严格的要求可以保证编译程序能捕捉调用错误。

​ 异常处理是Java可以使得程序更稳健的一个重要途径。异常是某种类似于错误的异常条件出现的信号。使用try/catch语句,程序员可以处理代码中错误的逻辑,这就减少了错误处理和代码恢复的工作量。

6、安全性

​ Java通常被用在网络环境中,为此Java提供了一个安全机制以防恶意代码的攻击,类加载器的双亲委托工作模式、加载过程中对字节码的校验、分配不同的命名空间以防替代本地的同名类等设计都保证了Java程序的安全性。

​ Java的存储分配模型也是它防御恶意代码的主要方法之一。学过C语言的开发人员对内存的管理都很头痛。Java语言删除了类似C语言中的指针和内存释放等语法,由JVM自动分配内存,并且提供了强大的垃圾回收机制,人们在使用Java语言时不需要过多考虑内存情况,可以把精力更多专注在业务开发上。

五、Java语言的核心机制:JVM

JVMJava Virtual Machine ,Java虚拟机):是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。

请添加图片描述

功能1:实现Java程序的跨平台性

​ 编写的Java代码,都运行在JVM 之上。正是因为有了JVM,才使得Java程序具备了跨平台性。

请添加图片描述

​ 使用JVM前后对比:
请添加图片描述

功能2:自动内存管理(内存分配、内存回收)
  • Java程序在运行过程中,涉及到运算的数据的分配存储等都由JVM来完成
  • Java消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间。
  • GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏

面试题:

Java程序还会出现内存溢出和内存泄漏问题吗? Yes!

六、Java语言的开发环境和运行环境

​ 在了解了Java跨平台的原理之后,那我们该怎么搭建Java的开发环境和运行环境呢?为了能够快速开发Java程序,Java除了提供JVM,还提供了JDK和JRE。JDK包含JRE,JRE包含JVM。

请添加图片描述

请添加图片描述

1、JDK(Java Development Kits):Java开发工具包

​ JDK是Sun公司提供的一套用于开发Java应用程序的开发工具包,JDK提供给Java开发人员使用,其中包括Java的开发工具,也包括JRE。所以,安装了JDK,就不用再单独安装JRE了。JDK的开发工具包括编译工具(javac.exe)、打包工具(jar.exe)等。

2、JRE(Java Runtime Environment):Java运行环境

​ JRE包括JVM和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,那么计算机中只需要安装JRE即可。

3、JVM(Java Virtual Machine):Java虚拟机

​ JVM即Java虚拟机,负责解释执行字节码指令集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值