Java语言核心技术
![](/i/l/?n=23&i=blog/1231428/202212/1231428-20221227165303954-138352054.png)
1. Java的发展简史
现在人们谈论Java的时候,它所表示的含义发生了一些变化,Java不只是一门高级计算机语言,更是最流行的开发平台和运行平台。
1.1 Java的发展简史-起源
在20世纪90年代(1990年)出现了一种新型的技术-单片机系统,被很多商业公司发现是一个商机,将单片机系统植入到家电设备(电视机、电冰箱、微波炉、烤箱)中可以提高家电设备的智能化水平->智能家电
Sun公司为了抢占智能家电的市场,开启了Green项目,该项目由James Gosling领导。
一开始James Gosling决定使用C++
语言实现(1983年诞生了C++
语言),但是那会儿的C++
不支持跨平台,因为不同的家电设备的硬件不同,如果更换了家电设备,程序的代码需要更改。
因此James Gosling决定在C++
的基础之上进行扩展和修改,但是最终重新设计了一门计算机语言-Oak(橡树),但是后来在注册商标的时候发现已经有人使用了,所以改成了Java(印度尼西亚爪哇岛)
在2009年的时候Oracle以74亿美金收购了Sun公司,这样也就意味着Sun公司的Java、MySQL、Solaris都是属于Oracle。
1.2 Java的发展简史-流行
在20世纪90年代中后期,Java赶上了互联网的发展潮流,而互联网的特点和家电设备的特点有点类似:不同计算机的硬件设备也不同。
当时业界为了使得死板、单调的静态网页能够灵活起来,急需要一种技术开发动态的网页,这种程序可以通过互联网访问,还能够跨平台。
得益于Java的跨平台,而且可以制作Applet(一种将小程序嵌入到网页中执行的技术)逐渐流行起来
1.3 Java的发展简史-生态
经过20多年(1995年Sun公司正式对外发布了Java)的发展,逐步建立起自己强大的生态体系,尤其是自从JDK1.4以后涌现出来了非常多的为了简化开发的开源框架和中间件,例如MyBatis,Spring Framework,Spring Boot,Spring Cloud,Spring Cloud Alibaba等等。
1.4 Java的发展简史-开发平台
Java在大型分布式系统的后台(淘宝、天猫、支付宝、菜鸟物流、顺丰物流)、移动端的Android应用开发以及大数据开发占据了广阔的市场(一哥)
1.5 Java的发展简史-运行平台
Java的程序是在JVM(Java Virtual Machine)上运行的,这就是Java能够跨平台的本质原因,由于Java是开放的,有越来越多的计算机语言编写的程序也可以运行在JVM之上,例如Scala,Kotlin,Grovvy等等。
2. Java的特点
由于Java语言是开源的,也得到了很多大公司(Alibaba,Tencent,HUAWEI,Oracle,Amazon,Google)的支持,逐渐发展成了具有开源、跨平台、高性能、安全可靠、支持多线程、分布式等等诸多的特点的开发平台和运行平台。
2.1 Java是面向对象的
Java是基于C/C++
的基础之上发展而来的,不同于C/C++
的是Java是纯粹的面向对象的语言
面向对象就是当我们去做一件事情的时候不自己做,而是让别人做,而且我们只关心结果不在乎过程。例如去饭店吃饭,用洗衣机洗衣服等等。
2.2 Java是简单易学的
Java舍弃了C语言中特别容易引起错误的指针,并且引入了垃圾回收机制,这样在大部分场景下不需要手动释放内存,而且Java还舍弃了C++
语言中一些特别复杂的语法,例如运算符重载、多继承等等。Java相比C/C++
而言更加简单易学(入门简单)
2.3 Java是开源的
开源指的就是开放源代码,例如QQ、微信是不开源的,而Linux,Visual Studio Code等等都是开源的。
Java开源的好处就是开发者可以通过阅读Java语言以及相关框架、中间件的源码查看具体的实现过程,从而提高自己的技术水平。
在企业面试的时候面试官也会经常问是否阅读过Java语言以及相关框架、中间件的源码
2.4 Java是跨平台的
平台就是操作系统(OS),目前桌面端主流的操作系统就是Windows,macOS,服务端的操作系统是Linux(CentOS,Ubuntu Server)
我们以后去公司开发Java项目,首先在开发环境开发Java项目,项目开发完成以后,然后部署到测试环境进行相关的测试,测试通过以后部署到生产环境对外提供服务。
不同的环境使用的操作系统也是不同的
-
开发环境使用的是Windows或者是macOS系统开发Java项目
-
测试环境和生产环境都是使用Linux(CentOS,Ubuntu Server)来测试Java项目或者部署Java项目对外提供服务
跨平台的含义就是在Windows上开发的Java项目不需要做任何的修改就可以直接在其他安装了JDK的操作系统(macOS,Linux)上运行。
跨平台的好处就是节省人力成本,因为开发一次项目通过JDK适配多个操作系统。
2.5 Java是体系结构中立的
体系结构中立有两层含义
- JVM的实现只需要遵守Oracle官方提供的JVM规范即可,不过大部分的Java应用都是使用Oracle官方提供的HotSpot虚拟机,除此以外一些互联网大厂(阿里巴巴、腾讯、华为)会根据自己的需求来定制JVM(定制JDK)
- JVM除了可以识别Java编译器(javac)编译生成的字节码文件(.class结尾的文件)以外,还可以识别Scala,Kotlin,Grovvy等等计算机语言生成的字节码文件。
3. Java的技术体系平台
3.1 Java的技术体系平台介绍
自从1998年以后Java被分成了三个版本,这三个版本分别是JavaSE,JavaEE(JakartaEE),JavaME,每个版本都是有自己的应用场景(开发方向)
-
JavaSE(Java Standard Edition):Java标准版,主要是用于桌面应用的开发,不过目前绝大多数的桌面应用都是使用C/
C++
开发的,很少使用Java开发桌面应用(IntelliJ IDEA),JavaSE是其他两个版本(JavaEE,JavaME)的基础,学习JavaSE是为了以后从事JavaEE开发打基础。 -
JavaEE(Java Enterprise Edition):Java企业版,主要是用于开发大型企业应用的后台,JavaEE在这个领域是No.1,所谓的企业应用就是那些商业组织、大型企业创建的应用,例如阿里巴巴的淘宝、天猫、菜鸟物流等等大型企业应用的后台都是基于JavaEE实现的。
-
JavaME(Java Micro Edition):Java微型版,主要用于嵌入式电子设备(电视机、电冰箱、微波炉)或者小型移动设备(手机)的开发,但是随着3G移动智能平台的时代到来,特别是以Java为核心编程语言的Android平台的快速普及,JavaME已经淘汰。
3.2 Java的学习路线
由于Java主要是擅长大型分布式系统的后台开发、大数据系统开发、Android应用开发三个开发方向
而Java语言是这三个开发方向的基石语言,无论选择哪个开发方向,首先必须要学习Java语言,然后根据市场的需求再结合自己的兴趣选择对应的开发方向。
根据现在的市场就业形势,一般大部分人都会选择大型分布式系统的后台开发,然后积累2-3年工作经验以后有兴趣可以转向大数据系统开发。
基本的学习路线:JavaSE->JavaEE->大数据
4. JDK和JRE
4.1 JDK和JRE的介绍
- JDK(Java Development Kit) 称为Java开发工具集,JDK包含了Java开发工具(javac,java,javadoc,jar,javap,jconsole,jvisualvm)以及JRE,如果想要开发Java程序之前首先必须安装和配置JDK
- JRE(Java Runtime Enviroment)称为Java运行时环境,JRE包含了运行Java程序所需要的类库(数学、集合、正则表达式、日志、并发、反射、序列化、网络、IO、JDBC)和JVM(Java Virtual Machine),如果想要运行已经开发好的Java程序之前必须要安装JRE,但是Java11以后不再提供单独的JRE下载。
4.1 Oracle Java SE Support Roadmap
Oracle Java SE Support Roadmap 访问地址 https://www.oracle.com/java/technologies/java-se-support-roadmap.html
![Oracle Java SE Support Roadmap Oracle Java SE Support Roadmap](./images/1671264089818.png)
Oracle Java SE Support Roadmap
LTS表示Oracle官方长期支持的版本,例如Java8,Java11,Java17,Java21,其中Java8官方支持到2030年12月,Java17官方支持到2029年9月,Oracle官方每3年发布一个LTS版本
non-LTS表示非Oracle官方长期支持的版本(测试版),例如Java9,Java10,Java12等等都是non-LTS版本,Oracle官方每半年发布一个non-LTS版本
4.2 如何选择JDK版本
选择JDK版本的时候分两种情况
- 我们在学习Java的时候可以选择高版本的JDK,但是必须是LTS版本,例如Java17
- 我们以后去公司开发项目的时候,公司已有的项目用什么JDK版本,那么你就优先使用什么JDK版本,公司从0开始开发项目,那么优先选择稳定而且是官方长期支持的版本,例如Java8或者Java17,目前大部分的互联网公司的Java项目都是使用Java8