Java的发展史
1991 年, 由 Sun 公司带领的开发小组, 想设计一种小型的计算机语言,主要用于有线电视转换盒这类的消费设备。 这类设备的处理能力和内存都非常有限,所以语言就必须设计的非常小且能够生成紧凑的代码。 另外,由于不同的厂商会选择不同的 CPU, 因此很重要的一点就是这种语言不应该与任何特定的体系结构绑定。这个项目被命名为 “Green”。
开发的语言以C++ 为基础,称为 “Oak”, 后来, Sun 公司的人后来发现, Oak 是一种已经有的计算机语言的名字, 于是, 将其改名为 “Java”。
1992 年, Green 项目发了第一个产品,这个产品可以提供非常智能的远程控制,遗憾的是, Sun 公司对这个产品并不感兴趣。
1993 年,Green 项目(新名字 “First Person 公司”)在一这一整年以及 1994 年上半年, 一直苦苦寻求买家购买他们的技术。 然后一个也没有找到。
1994 年,First Person 公司解散了。
1995年,浏览器是由Patrick Naughton和Jonathan Payne开发的,演变为HotJava浏览器。 HotJava 浏览器采用Java 编写,为了炫耀 Java 语言的超强能力。这个浏览器可以在网页中执行内嵌的 Java 代码。 也就是 Java Applet。这一 “技术证明” 在 1995 年 5 月 23 日SunWorld'95 大会上展示,同时引发了人们的追逐,一直延续到现在。诞生几个月后, 就超过了 10 万人下载 Java 语言。
1996 年初,Sun 发布了第一个 Java 1.0 版本。但是这个版本并不能用来进行真正的应用开发。弥补了其中很多的不足和明显的缺陷。大大改进了反射能力, 并未 GUI 编程增加了新的事件处理模型,单是它仍然有很大的局限性, 并没有为 Java 的黄金时期到来做好准备。
1997 年 2 月, 发布了 Java 1.1。 JavaOne 会议召开, 参与者逾一万人, 创下了当时全球同类会员规模记录。
1998 年 JavaOne 会议的头号新闻就是发布 Java 1.2 版本, 将这个早期玩具式的 GUI 和图形工具包括一些工具包。 在这个版本发布的 3 天后, Sun 公司的市场部将它改名为更加吸引人的 “Java 2 标准版软件开发 1.2 版”。
一是, 手机嵌入式设备“微型版”(Micro Edition)J2ME。另一个是用于服务器端的处理“企业版”(Enterprise Edition)J2EE。
1999 年 4 月 27 日, HotSpot 虚拟机发布。
2000年5月8日,J2SE1.3 发布。
2001年 9 月 24 日, J2EE 1.3 发布。
2002 年 2 月 26 日, J2SE 1.4 发布, 标准版 1.3 和 1.4 版本对最初的 Java 2 版本做出了增量式的改进,提供了不断扩展的标准类库。 提高了性能, 并且还修复一些 bug。在这个期间, 原先对 Java Applet 和客户端应用的炒作逐渐消退, 但是 Java 则成为服务器应用端的首选平台。
2004年9月30日,下午 18:00, J2SE 1.5 发布。 这成为了 Java 语言的里程碑,这个版本对 Java 语言做出了重大的改进,为了表示该版本的重要性, 这个版本原来定位 1.5 版, 在 2004 年的 JavaOne 大会之后, 版本直接升为 5.0。 这个版本加入了泛型的支持,另外受到了 C# 的启发, 还增加了几个很有用的语言特性: for each 循环、自动装箱、注解、枚举、可变长参数等。
2005 年 6 月,JavaOne 大会召开,Sun 公司公开 Java SE 6。并且,对 Java 的各种版本进行更名,取消其中的数字“2”:J2EE 改名为 Java EE,J2SE 改名为 Java SE,J2ME 改名为Java ME。单内部版本不变化还沿用之前的写法。一直延续至今。 这个版本没有对语言方面进行修改, 而是做了其他性能改进, 并增强了类库。
2006 年 12 月, Sun 公司发布了 Java EE 6, 并且宣布, 将 Java 语言作为免费软件对外发布。除了极少量的产权代码外(Encumbered Code,这部分代码大多是 Sun 公司本身也无权限进行开源处理的),OpenJDK 几乎包括了 Sun JDK 的全部代码外,OpenJDK 的质量主管曾经表示,在 JDK 1.7 中,Sun JDK 和 OpenJDK 除了代码文件头的版权注释之外,代码基本上完全一样,所以 OpenJDK7 与 Sun JDK 1.7 本质上就是同套代码库开发的产品。
在 2009 年 4 月 20 日,被 Oracle 以 74 亿美元收购 Sun 公司,取得了 Java 的商标版权(Java语言本身并不属于哪个公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun 公司或者说 Oracle 公司所领导的)。也就在这两年 Java 的开发停滞了一段时间。一直到了 2011 年。
2011 年 7 月,JavaSE 7 发布。但是很多规划在这个版本的特性,其中 Lambda 项目 ( Lambda 表达式、函数式编程)、Jigsaw 项目(虚拟机模块化支持)、动态语言支持、GarbageFirst 收集器和 Coin 项目(语言细节进化)等子项目都没有实现在这个版本中, 而是用了 Oracle 公司实行的 “B计划”。
2014 年 3 月,JavaSE 8 发布。 这个版本, 在近 20 年中这个版本变更最大, Java SE 8 包含了 “函数式” 编程方式,可以很容易的表述并发执行的计算。 这个版本也是现在企业中使用范围最广的一个版本。
2017 年 7 月,Oracle 公司将发布 JDK 9。这个版本算是比较大的调整,加入了很早之前就规划的模块化功能。并且对整个 JDK 基于模块进行了重新编写。Java 9 提供了轻量级 JSON API; 使用 G1 作为默认的垃圾收集器,替代了之前默认使用的 Paralel GC; 引入了 jShell 这个交互性工具。并且全面支持 HTTP 2.0。
也就是在这一年,2017 年 8 月,Oracle 决定将 Java EE 移交给开源组织,最后 Eclipse 基金会接手。
Eclipse 选出了 "Jakarta EE" 和 "Enterprise Profile" 两个后续名字,最终前由于甲骨文不允许开源组织用 Java 的名者以 64.4% 的票数获胜。
也就是说,Java EE 已经正式更名为 Jakarta EE(雅加达)。
从 2018 年开始, 每6个月就会发布一个 Java 版本, 以更快地引入新特性。这里又分为 LTS 版和最新版。 生产环境中最好只使用 LTS 版本, 因为这个版本更加稳定, 维护周期更长。
2018年3月21日, Java10发布。
2018年9月25日, Java11 LTS发布。
2019年2月 Java 12发布
2019年9月 Java 13 发布
2020年3月17日,Java 14 发布。
2020年9月15 日,Java 15 发布。
2021年3月16日,Java SE 16 发布。
2021年9月14日,Java SE 17 LTS发布。
这个是继 Java 11之后的有一个长期支持版本, 并且直接支持到了2029年9月。这可能是下一个 Java 8。所以学习的话,可以直接学习这个版本。当然也可以直接学习Java 17这样的话,对于工作来说3年之内不会有大的变化。
Java的三大平台
1998年:1.2发布, Java正式改名为J2SE
Sun公司推出了Java三大平台版本
1. J2SE: Java标准版(Standard Edition)
2. J2EE: 服务器端开发得企业版(Enterprise Edition)
3. J2ME: 手机嵌入式设备微型版(Micro Edition)(2004年后,由于智能手机的发展被抛弃)
2005年:Java SE 6发布
J2EE改名为 Java EE
J2SE改名为 Java SE
J2ME改名为 Java ME
J2SE、J2EE、J2ME中的"2"是英文单词"to"的意思
J2SE: Java To Standard Edition
J2EE: Java To Enterprise Edition
J2ME: Java To Micro Edition
Java语言跨平台的原理
所有的平台上生成的字节码文件都是相同的,在不同的平台上运行字节码文件的Java虚拟机是不同的。Java的开发团队针对不同的平台开发出了对应版本的java虚拟机,这使得同一个java代码文件可以再不同的平台上运行。所以,java能实现跨平台运行是因为有各种平台对应版本的java虚拟机的支持。
Java程序执行的过程
编写代码
源文件由编译器编译成字节码
使用java编译成class格式
输入:javac Hello.java
转变为class字节码文件
Java源代码文件
在文件夹中打开cmd控制台
在cmd中输入java Hello执行命令
Java和Javac的区别
编译器名称是javac,是将源文件编译为字节码文件的程序,而java是java解释器的名称,也就是解释和执行字节码文件的程序。
Java文件和class文件的区别
java文件:人类看的懂,机器看不懂
class文件:人类看不懂,机器看的懂
JDK、JRE、JVM是什么
1.JDK(Java Development Kit)Java 开发工具包:
(1)编译器
(2)解释器
(3)源代码
2.JRE(Java Runtime Environment) Java运行环境
3.JVM(Java Virtual Machine)Java虚拟机
安装JDK后为什么要配置环境变量
这是因为系统在此目录下找不到该文件。配置全局变量后,在任意目录下输入javac.exe
,系统在该目录下找不到文件时,就回去环境变量中找,在配置的路径中就能找到。
Java的基本数据类型
计算机最小的存储单位,最小的空间单位
最小的单位:比特 一个bit只能存储一个0或是1
每8个比特是最小的存储空间称为byte(字节)
byte、short、int、long四种类型的区别
例:100000010使用2个字节
byte:1个字节
short:2个字节
int:4个字节
long:4个字节
bit、B、KB、MB、GB、TB、PB分别是存储单位,换算是什么
bit:计算机最小的存储单位
B:计算机最小的存储空间(8bit=1B)
KB:1KB=1024B
MB:1MB=1024KB
GB:1GB=1024MB
TB:1TB=1024GB
PB:1PB=1024TB
byte a=10;
//128->010000000;
//0000000010000000;
//short b=32768;
//int c=2200000000;
long d=222222222222222l;
//单字符用单引号表示,只能存储一个字符
//字符串用双引号表示,可以存储一串字符
char c='A';//'A'->65->1000001
System.out.println((int)c);
char b='光';
System.out.println((int)b);