1.Java的历史和演变
花自飘零水自流。一种相思,两处闲愁。
——李清照《一剪梅》
[TOC]Java的历史和演变
1. 计算机语言的历史
第一代语言:机器语言
主要编写二进制码,直接编写100101010101这样的二进制,以打孔机为代表。
第二代语言: 低级语言
主要以汇编语言为代表
在低级语言当中已经引入了一些英语单词。
第三代语言:高级语言
列如:c语言 c++ Java、…..
1.1 C语言之前的高级语言
C语言之前的这些版本,程序员通常需要在品质不同的各种计算机语言之间进行选择。BASIC,COBOL,FORTRAN,没有遵循结构化设计原则,依赖与GOTO作为程序控制的主要手段,很容易出现大量混乱的跳转语句和条件分支语句,使程序很难理解。Pascal的语言虽然是结构化的,但是不是针对高效率而设计的。
1.2 C语言诞生
20世纪60年代,贝尔实验室的研究员Ken Thompson(肯·汤普森)发明了B语言,并使用B编了个游戏 Space Travel,他想玩自己这个游戏,所以他背着老板找到了台空闲的机器 PDP-7,但是这台机器没有操作系统,于是Thompson着手为PDP-7开发操作系统,后来这个OS(Operating System)被命名为 UNIX,Thompson(肯·汤普森)发明了UNIX。
1971年,Ken Thompson的同事D.M.Ritchie(DM里奇),也很想玩Space Travel,所以加入了Ken Thompson,合作开发UNIX,他的主要工作是改进Thompson的B语言。
最终,在1972年这个新语言被称为C,取BCPL的第二个字母,也是B的下一个字母
C语言的演变历程
CPL(Combined Programming Language) - 1963,CPL是1963年剑桥大学发明的,C语言的祖先。
BCPL(Base Combined Programming Language) - 1967,剑桥的Matin Richards 对CPL做了简化,推出了BCPL
B(B Programming Language) - 1969,贝尔实验室的Ken Thompson(肯·汤普森) 对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并用B语言写了第一个UNIX OS
C(C Programming Language) - 1972,贝尔实验室的另外一个人Dennis MacAlistair Ritchie(D.M.Ritchie - DM里奇)在B的基础上设计出了C语言。C 保持了B的优点(精炼、接近硬件),又克服了他的缺点(过于简单,数据无类型)。
1.3 C++ (带类的C语言)
C++(C plus plus Programming Language) - 1983,还是贝尔实验室的人,Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 在C语言的基础上推出了C++,这个时候你可能会想C这么强大的语言已经出现了为什么还会出现C++呢?这是因为C语言处理复杂性的能力也是有一定的限度的,C++ 它扩充和完善了C语言,特别是在面向对象编程方面,一定程度上克服了C语言编写大型程序时的不足。
1.4 Java的诞生
Java是由James Gosling、Patrick Naughton 、 Chris Warth 、Ed Frank 、和 Mike Sheridan 于1991年在sun公司构想出来的,开发第一个版本花费了18个月,这种语言最初称为Oak,在1995年被命名为Java。
1.4.1 推动Java发展的两大动力
一、嵌入到各种消费类电子设备的软件
二、万维网
小结:Java的设计、测试和不断改进是由真正从事编程工作的人员完成的。它是扎根于设计人员的需求和经验的一种语言,因此Java是程序员的语言。
1.4.2 Java 和其他计算机语言
Java和C
- Java 对Internet 编程
- C 对系统的编程
Java 和 C#
相同点:他们都是面向对象的语言,也就是说,它们都能实现面向对象的思想(封装,继承,多态),两者共享相同的语法,都支持分布式编程,并且都利用相同的对象模型。
不同点:点这里…
Java 和 C++
- 都是面向对象的语言,都支持封装、继承和多态。
- Java不提供指针来直接访问内存,程序内存更加安全。
- Java的类是单继承的,C++支持多继承;虽然Java 的类不可以多继承,但是接口可以多继承。
- Java有自动内存管理机制,不需要程序员手动释放无用内存。
2. Java改变 Internet 的方式
- Java applet(目前已被标记废弃)
- 安全性
- 可移植性
- Java的魔力–字节码(bytecode)
- JVM(Java virtual Machine)虚拟机–设计初为字节码解释器(HotSpot技术,JIT编译器)
- Java Web Start处理多种类型的Java程序的部署机制
- Servlet–服务器端上执行的小程序(与Servlet相似的CGI)
3. Java的关键特性
- 简单性–最初是面向程序员的。
- 安全性
- 可移植性
- 面向对象
- 健壮性–编好的程序在不同的运行条件下以可预见的方式运行是Java的关键特性。
- 多线程
- 体系结构中立–得益于JVM。
- 解释执行
- 高性能
- 分布式
- 动态性
4. Java的演变历史
Sun公司
- Java 1.0
- Java 1.1
- Java 2 – Java新时代
- 增加了Swing
- 集合框架
- J2SE 1.3
- J2SE 1.4 – 与之前版本几乎达到100%的源代码兼容。
- J2SE 5 – 从根本上扩展了java语言的应用领域,功能和范围(JDk5)。
- 有以下新特性:
- 泛型
- 注解(annotation)
- 自动装箱和自动拆箱
- 枚举
- 增强的 for-each 风格和 for 循环
- 可变参数(varargs)
- 静态导入
- 格式化的 I/O
- 并发使用工具
- 有以下新特性:
- Java SE 6 – 内部的开发版本号是1.6(JDk6)。
Oracle公司
- Java SE 7 – Oracle收购Sun公司后,第一个重要发布版本。(JDk7)
- 有以下新特性:
- String 现在能控制switch语句。
- 二进制整形字面值
- 数值字面值的下画线
- 扩展的 try 语句称为带资源的 try (try-with-resources)语句,这种 try 支持自动资源管理。(例如:当stream不再需要时,现在能够自动关闭他们。)
- 构造泛型
- 对异常处理进行增强,单个 catch 字句能够捕获两个或更多个异常,并且对重新抛出的异常提供更好的类型检查。
- 对某些方法(参数的长度可变) 类型关联的编译器警告进行了改进,尽管语法并没有改变,并且对警告具有更大的控制权。
- 对 NIO 框架进行了增强,并且增加了 Fork/Join 框架。
- 有以下新特性:
- Java SE 8 (JDk8)–新增了lambda表达式。
- Java Se 9 ( JDK9 )
- 新增的特性:
- 模块
- JShell
- 支持私有接口方法
- 给javadoc工具添加了搜索功能。
- 新增的特性:
总结:
- 大概了解了Java的演变历史和其功能的扩展,发现几乎每次版本的更新都对 API 库进行了更新,Java中JVM充满了神秘感,作为一个初学者发现其中有很多专业方面的词都不是很明白,其中查了一部分,但是还有很多要放在今后的学习中慢慢深入。
- 这篇博客会在今后的学习不断的修改,当然如果有大佬指点带萌新感激不尽,在此留下qq1585636331,欢迎学习计算机语言的朋友加好友一起讨论学习,一起进步。