花自飘零水自流。一种相思,两处闲愁。

——李清照《一剪梅》

[TOC]

Java的历史和演变

1. 计算机语言的历史

​ 第一代语言:机器语言

​ 主要编写二进制码,直接编写100101010101这样的二进制,以打孔机为代表。

​ 第二代语言: 低级语言

​ 主要以汇编语言为代表

​ 在低级语言当中已经引入了一些英语单词。

​ 第三代语言:高级语言

​ 列如:c语言 c++ Java、…..

1.1 C语言之前的高级语言

  • FORTRAN -1957 , 第一种被广泛使用的高级语言,高效的汇编语言。
  • BASIC -1964 ,易学习,功能弱。
  • COBOL -1959
  • Pascal -1970 ,第一个结构化程序语言。

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语言的演变历程

  1. CPL(Combined Programming Language) - 1963,CPL是1963年剑桥大学发明的,C语言的祖先。

  2. BCPL(Base Combined Programming Language) - 1967,剑桥的Matin Richards 对CPL做了简化,推出了BCPL

  3. B(B Programming Language) - 1969,贝尔实验室的Ken Thompson(肯·汤普森) 对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并用B语言写了第一个UNIX OS

  4. 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)。
    • 有以下新特性:
      1. 泛型
      2. 注解(annotation)
      3. 自动装箱和自动拆箱
      4. 枚举
      5. 增强的 for-each 风格和 for 循环
      6. 可变参数(varargs)
      7. 静态导入
      8. 格式化的 I/O
      9. 并发使用工具
  • Java SE 6 – 内部的开发版本号是1.6(JDk6)。

Oracle公司

  • Java SE 7 – Oracle收购Sun公司后,第一个重要发布版本。(JDk7)
    • 有以下新特性:
      1. String 现在能控制switch语句。
      2. 二进制整形字面值
      3. 数值字面值的下画线
      4. 扩展的 try 语句称为带资源的 try (try-with-resources)语句,这种 try 支持自动资源管理。(例如:当stream不再需要时,现在能够自动关闭他们。)
      5. 构造泛型
      6. 对异常处理进行增强,单个 catch 字句能够捕获两个或更多个异常,并且对重新抛出的异常提供更好的类型检查。
      7. 对某些方法(参数的长度可变) 类型关联的编译器警告进行了改进,尽管语法并没有改变,并且对警告具有更大的控制权。
      8. 对 NIO 框架进行了增强,并且增加了 Fork/Join 框架。
  • Java SE 8 (JDk8)–新增了lambda表达式。
  • Java Se 9 ( JDK9 )
    • 新增的特性:
      1. 模块
      2. JShell
      3. 支持私有接口方法
      4. 给javadoc工具添加了搜索功能。

总结:

  1. 大概了解了Java的演变历史和其功能的扩展,发现几乎每次版本的更新都对 API 库进行了更新,Java中JVM充满了神秘感,作为一个初学者发现其中有很多专业方面的词都不是很明白,其中查了一部分,但是还有很多要放在今后的学习中慢慢深入。
  2. 这篇博客会在今后的学习不断的修改,当然如果有大佬指点带萌新感激不尽,在此留下qq1585636331,欢迎学习计算机语言的朋友加好友一起讨论学习,一起进步。