java简史
▪ SUN公司是一家什么样的公司?
– 美国SUN(Stanford University Network)公司
– 在中国大陆的正式中文名为“太阳计算机系统(中国)有限公司”
– 在台湾中文名为“升 阳电脑公司” 。
▪ Java为什么被发明? – Green项目。
– 应用环境:像电视盒这样的消费类电子产品
– 要求:
▪ 语言本身是中立的,也就是跨平台
▪ Java的发明人?
– James Gosling
java发展历史
1991年,Sun公司的Green项目,Oak
1995年,推出Java测试版
1995年,推出Java测试版 1996年,JDK1.0
1995年,推出Java测试版 1996年,JDK1.0 1997年,JDK1.1
1998年,JDK1.2,大大改进了早期版本的缺陷,是一个革命性的版本,更名为Java2
1995年,推出Java测试版 1996年,JDK1.0
1997年,JDK1.1
1998年,JDK1.2,大大改进了早期版本的缺陷,是一个革命性的版本,更名为Java2
1999 Java被分成J2SE、J2EE 和J2ME,JSP/Servlet技术诞生
2004年,J2SE 5.0 (1.5.0) Tiger老虎.为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0。
2006年,J2SE 6.0 (1.6.0) Mustang野马.此时,Java的各种版本被更名,取消其中的数字"2":J2EE更名为Java EE, J2SE更名为 Java SE,J2ME更名为Java ME
2009年4月20日甲骨文收购Sun公司,交易价格达74亿美元 2011年,JavaSE7.0
2014年 ,JavaSE8.0
2017年,JavaSE9.0
2018年3月,JavaSE10.0
2018年9月,JavaSE11.0
Java语言为什么流行起来
▪ 外部环境 – 互联网的爆发式发展
– 互联网上的电脑硬件不同,软件环境差异较大。需要一个跨平 台的语言。
▪ Java核心优势:
– 跨平台
Java各版本和体系架构
▪ J2EE (JavaEE)
– Java 2 Enterprise Edition:
– 定位在服务器端的应用
▪ J2SE (JavaSE)
– Java 2 Standard Edition
– 定位在个人计算机上的应用
▪ J2ME (JavaME)
– Java 2 Micro Edition
– 定位在消费性电子产品的应用上
JVM(Java VIRTUAL MACHINE)
▪ JVM是一种规范。就是一个虚拟的用 于执行bytecodes字节码的计算机。
▪ Java虚拟机是Java最核心技术,也是跨 平台的基础。
▪ 可以使用软件来实现 – IBM, SUN, BEA等。你也可以自己 写一个JVM
▪ 可以使用硬件来实现 – 比如sun/intel公司正在研发的Java 芯片
JVM和Java跨平台特性
▪ 通过“编译器”将Java源程序编译成Java 字节码文件(.class) (字节码文件采用结构中立的中间文件格式)
▪ 通过“解释器”将Java字节码文件解释为对应机器语言并运行
▪ Java和C跨平台原理的比较 – Java:一次编译,到处运行 – C:多次编译,到处运行
Java的特点
▪ Java是跨平台的
▪ Java是简单的
▪ Java是安全的
▪ Java是完全面向对象的
▪ Java是健壮的
▪ Java是跨平台的
– Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设 备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运 行。
▪ Java是简单的
– 不再有#include 和#define 等预处理功能
– 不再有struct,union及typedef
– 不再有函数、
– 不再有指针、不再有多重继承
– 不再有goto
– 不再有操作符重载(Operatior Overloading)
– 不再有全局变量 取消自动类型转换,要求强制转换
– 不再有手动内存管理
▪Java是安全的
–Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向 一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内 存地址可能存储着重要数据或者是其他程序运行所占用的, 并且使用指针也容 易数组越界。
–Java提供了自动内存管理机制,由垃圾回收器在后台自动回收,
–Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。
–而在运行环境提供了四级安全性保障机制:
▪字节码校验器
-类装载器
-运行时内存布局
-文件访问限制
▪ Java是完全面向对象的
– Java和C++都是面向对象语言。也就是说,它们都能够实现面向对 象思想(封装,继承,多态)。
– 由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为 了带类的C语言,多少影响了其面向对象的彻底性!
– Java则是完全的面向对象语言,它句法更清晰,规模更小,更易学。 它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其 他语言的不足之处,从根本上解决了c++的固有缺陷。
▪ Java是健壮的
– Java的强制类型机制、异常处理、垃圾的自动收集等是Java程 序健壮性的重要保证。
– 对指针的丢弃是Java的明智选择。
– Java的安全检查机制使得Java更具健壮性。