Java自1995年推出至今已有二十多年的历史,这充分显现了Java丰富的历史及其强劲的生命力,让我们先从她的发明者说起吧。
1)詹姆斯·高斯林
Java的发明人:詹姆斯·高斯林(James Gosling)
詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为“Java之父”。
詹姆斯·高斯林毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun公司。1990年,与Patrick Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。1994年底,James Gosling在硅谷召开的“技术、教育和设计大会”上展示Java程式。2000年,Java成为世界上最流行的电脑语言。
2)Java应用领域
Java有着广泛的应用领域:
1)大型网站,如:天猫、京东等电子商务网站的后台多半是用Java开发。
2)企业级应用:如:企业ERP系统,OA办公自动化系统、医院MIS系统、金融系统,物流系统等。
3)嵌入式设备及消费类电子产品:如:无线手持设备、智能家居设备、汽车电子设备等嵌入Java程序。
4)大数据领域:如:基于Java所编写的列式数据库HBase,Hive数据库,Hadoop等软件。
3)Java图标的由来
下图是Java语言的图标:
Java是印尼爪哇岛的名字,盛产咖啡。
据传是Java创始团队成员在喝爪哇咖啡时给新的编程语言起名字,一位成员由咖啡想到了Java这个名字。
4)Java发展史
1995年5月23日,Java语言诞生
1996年1月,JDK1.0诞生
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
1996年9月,约8.3万个网页应用了JAVA技术来制作
1997年2月18日,JDK1.1发布
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
1997年9月,JavaDeveloperConnection社区成员超过十万
1998年2月,JDK1.1被下载超过2,000,000次
1998年12月4日,JDK 1.2发布【第一个里程碑】
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发布,J2EE用于企业开发。
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升
2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的【第二个里程碑】。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0(因为新特新增加特别多,所以起了个高大上的名字!)
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME
2006年12月,SUN公司发布JRE6.0
2009年12月,SUN公司发布Java EE 6,同年4月20日oracle收购SUN公司
2011年7月28日,Oracle公司发布Java SE 7
2014年3月,Oracle公司发表Java SE 8【第三里程碑】
2017年9月 ,Oracle公司发表Java SE 9
2018年03月,Oracle公司发表Java SE 10
2018年09月,Oracle公司发表Java SE 11
2019年3月,Oracle公司发表Java SE 12
2019年9月,Oracle公司发表Java SE 13
2020年3月,Oracle公司发表Java SE 14
2020年9月,Oracle公司发表Java SE 15
从Java SE9开始遵循半年一个版本的更新速度,Oracle将每三年指定一个版本作为长期支持(LTS)版本。到2020年为止,已经发布了Java SE15。
虽然Java版本已经发展到Java SE 15但是在企业中Java SE 8是市场的主流版本,为什么企业不升级到高级版本呢?
首先JavaSE 8是Oracle公司长期支持的版本,其它版本虽然有特性上的升级但对企业的吸引力不够,企业还是稳定为主,另外JavaSE 8的性能相比新版本也是毫不逊色的,所以市场上约有80%的企业仍然在使用Java8。
SUN公司对java的描述是 “Java是一门简单的,面向对象,分布式,解释性,健壮的,安全的,结构中立的, 便捷的, 高性能的, 多线程的, 动态的语言”。
Java语言特性列表如下:
简单(Simple)
面向对象(Object-Oriented)
方便,可移植(Portable)
平台独立(Platform independent)
安全(Secured)
强大,健壮(Robust)
体系结构中立(Architecture neutral)
动态(Dynamic)
解释执行(Interpreted)
高性能(High Performance)
多线程(Multithreaded)
分布式(Distributed)
1) 简单(Simple)
Java语言很简单,Java的语法是基于C++而设计(程序员在学习C++之后更容易学习它)。
移除C++许多令人困惑或很少使用的特征,例如,显式指针,操作符重载等。
不需要删除未引用的对象,因为在Java中有自动垃圾收集器。
2)面向对象(Object-Oriented)
一切皆对象,一个对象中包括了数据和行为。面向对象编程(OOP)是一种通过提供一些规则来简化软件开发和维护的方法,通常实践证明面向对象编程比面向过程编程(如c语言)更适合大型的软件工程。
3)可移植(Portable)
此特性也叫跨平台特性,通过Java语言编写的应用程序在不同的系统平台上都可以运行。
平台是程序运行的硬件或软件环境,系统平台主要是指操作系统,常见的操作系统有Windows、Unix/Linux、Android、macOS、HarmonyOS等。
Java程序通过Java 虚拟机(JVM Java Virtual Machine)运行,只要在需要运行java应用程序的操作系统上先安装一个Java虚拟机即可,由JVM来负责Java程序在该系统中的运行,这就是跨平台的原理。
如下图是Java跨平台运行的示意图:
因为有了JVM所以同一个Java程序可以在三个不同的操作系统中都可以执行,这样就实现了Java程序的跨平台性,也称为Java具有良好的可移植性。
4)平台独立(Platform independent)
Java代码可以在多个平台上运行,Java代码由编译器编译并转换为字节码,它是一个独立于平台的代码,即字节码可以在多个平台上运行,达到一次编写到处运行。
5)安全(Secured)
Java的安全体现在它的沙箱安全机制:
1.Java类装载器结构
2.Java字节码校验器
3.Java安全管理器
Java的安全还体现在它的其它功能特性:
1.类型安全的引用转换
2.结构化的内存訪问(无指针算法)
3.自己主动垃圾收集
4.数组边界检查
5.空引用检查
6)健壮(Robust)
程序的健壮性主要靠程序员的编码质量,Java从语言本身出发提供很多有利于程序健壮的特性,如:强大的内存管理,避免有安全问题的指针;自动垃圾收集,无需程序员手动释放内存; 异常处理和类型检查机制提高代码质量。
7)体系结构中立(Architecture neutral)
这里的体系结构中立主要是指不同CPU的体系架构,Java编译器生成的是一个体系架构中立的对象文件格式(an architecture-neutral object file format)即Java字节码文件,在不同的电脑上安装Java虚拟机即可实现一个Java程序在许多不同的CPU下运行。
8)动态(Dynamic)
Java程序能够携带大量的运行时信息,这些运行时信息能够验证和访问程序运行时的各种对象。
9)解释执行(Interpreted)
Java的字节码是动态翻译成机器指令的,即边解释边执行,Java与其它解释型语言不同,Java是将.class文件先编译成字节码,然后由JVM对字节码进行解释执行。
10)高性能(High Performance)
Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++,JIT中文意思是即时编译器。
11)多线程(Multithreaded)
Java的多线程特性使得Java程序能够同时执行多项任务,这对于交互响应要求非常高的程序设计是至关重要的。
12)分布式(Distributed)
分布式是一种架构模式,是将模块进行抽取、单独构建、并部署在不同服务器上运行,比如天猫、京东等大型电商平台都是采用分布式架构,使用java可以创建分布式应用程序。
为什么说Java是跨平台的?
使用Java语言编写的程序叫源程序,源程序编译为字节码文件(.class),字节码文件在JVM虚拟机中运行。
JVM虚拟机在不同的系统平台上都提供相应的版本,所以Java程序是可以跨平台运行。