Java 作为一门面向对象的编程语言,基于 C/C 和汇编语言实现,它不仅吸收了 C/C 语言的各种优点,还摒弃了 C 里难以理解的多继承、指针等概念,因此 Java 语言具有两个特征:功能强大和简单易用。 ~ 本篇主要记录内容包括:Java 概述&起源、Java “白皮书” 的关键术语。
- 下一篇内容:Java基础:Java程序设计环境
- 更多知识学习:全网最全的 Java 技术栈内容梳理(持续更新中)
文章目录
代码语言:txt复制- [一、Java 概述&起源](https://cloud.tencent.com/developer)
- [1、Java 语言简介](https://cloud.tencent.com/developer)
- [2、Java 语言的演进](https://cloud.tencent.com/developer)
- [3、Java 发展简史](https://cloud.tencent.com/developer)
- [二、Java “白皮书” 的关键术语](https://cloud.tencent.com/developer)
- [1、简单性](https://cloud.tencent.com/developer)
- [2、面向对象](https://cloud.tencent.com/developer)
- [3、分布式](https://cloud.tencent.com/developer)
- [4、健壮性](https://cloud.tencent.com/developer)
- [5、安全性](https://cloud.tencent.com/developer)
- [6、体系结构中立](https://cloud.tencent.com/developer)
- [7、可移植性](https://cloud.tencent.com/developer)
- [8、解释型](https://cloud.tencent.com/developer)
- [9、高性能](https://cloud.tencent.com/developer)
- [10、多线程](https://cloud.tencent.com/developer)
- [11、动态性](https://cloud.tencent.com/developer)
一、Java 概述&起源
作为一种计算机语言,Java 的广告词确实有点夸大其辞。然而,Java 的确是一种优秀的程序设计语言。作为一个名副其实的程序设计人员,使用 Java 无疑是一个好的选择。有人认为:Java 将有望成为一种最优秀的程序设计语言,但还需要一个相当长的发展时期。一旦一种语言应用于某个领域,与现存代码的相容性问题就摆在了人们的面前。——《JAVA核心技术(卷1)》第一版
1、Java 语言简介
Java 是由 Sun Microsystems 公司于 1995 年推出的一门面向对象程序设计语言。2010 年 Oracle 公司收购 Sun Microsystems,之后由 Oracle 公司负责 Java 的维护和版本升级。
Java 作为一门面向对象的编程语言,基于 C/C 和汇编语言实现,它不仅吸收了 C/C 语言的各种优点,还摒弃了 C 里难以理解的多继承、指针等概念,因此 Java 语言具有两个特征:功能强大和简单易用。
Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
2、Java 语言的演进
版本 | 年份 | 新语言特性 | 类与接口数量 |
---|---|---|---|
1.0 | 1996 | 语言本身 | 211 |
1.1 | 1997 | 内部类 | 477 |
1.2 | 1998 | strictfp 修饰符 | 1524 |
1.3 | 2000 | 无 | 1840 |
1.4 | 2002 | 断言 | 2723 |
5.0 | 2004 | 泛型类、“for each”循环、可变元参数、自动装箱、元数据、枚举、静态导入 | 3279 |
6 | 2006 | 无 | 3793 |
7 | 2011 | 基于字符串的选择语句、菱形运算符、二进制字面量、异常增强处理 | 4024 |
8 | 2014 | lambda 表达式、包含默认方法的接口、流和日期/时间库 | 4240 |
9 | 2017 | 模块、其它语言的类库增强 | 6005 |
3、Java 发展简史
- 1995 年:5月23日,Java语言诞生;
- 1996 年:6月,第一个 JDK——JDK1.0 诞生;4月,十个最主要的操作系统供应商申明将在其产品中嵌入 Java 技术;9月,约 8.3 万个网页应用了 Java 技术来制作;
- 1997 年:2月18日,JDK1.1 发布;4月2日,JavaOne 会议召开,参与者逾一万人,创当时全球同类会议纪录;9月,JavaDeveloperConnection 社区成员超过十万;
- 1998 年:2月,JDK1.1 被下载超过 2,000,000 次;12月8日,Java 2 企业平台 J2EE 发布(J2EE1.2);
- 1999 年:6月,SUN 公司发布 Java 三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME);
- 2000 年:5月8日,JDK1.3 发布;5月29日,JDK1.4 发布;
- 2001 年:6月5日,Nokia 宣布到 2003 年将出售 1 亿部支持 Java 的手机;9月24日,J2EE1.3 发布;
- 2002 年:2月26日,J2SE1.4 发布,此后 Java 的计算能力有了大幅提升;
- 2004 年:9月30日,J2SE1.5 发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5 更名为 Java SE 5.0;
- 2005 年:6月,JavaOne 大会召开,SUN 公司公开 Java SE 6。此时,Java 的各种版本已经更名,以取消其中的数字“2”(J2ME 更名为 Java ME,J2SE 更名为 Java SE, J2EE 更名为Java EE);
- 2006 年:12月,SUN 公司发布 JRE6.0;
- 2009 年:12月,SUN 公司发布 Java EE 6;
- 2010 年:11月,由于甲骨文对 Java 社区的不友善,因此 Apache 扬言将退出 JCP;
- 2011 年:7月,甲骨文发布 Java SE 7;
- 2014 年:3月,甲骨文发表 Java SE 8;
- …
二、Java “白皮书” 的关键术语
Java 的设计者已经编写了颇有影响力的 “白皮书”,用来解释设计的初衷以及完成的情况,并且发布了一个简短的摘要。这个摘要用了 11 个关键术语进行组织:①简单性、②面向对象、③分布式、④健壮性、⑤安全性、⑥体系结构中立、⑦可移植性、⑧解释型、⑨高性能、⑩多线程、⑪动态性。
1、简单性
可以理解 Java 语法是 C 语法的一个“纯净版本”,它继承了 C 的优点,并去掉了 C 里难以理解的头文件、指针运算等概念,使 Java 语言学习起来更简单,使用起来也更方便(不过,如今的 Java 复杂程度,还是远远超过了一部分的编程语言);
简单性的另一方面提现是“小”,Java 的目标之一是支持开发能在小型机器独立运行的软件。基本的解释器以及类支持大约仅为 40KB,再加上基础的标准类库和对线程的支持(基本上是一个自包含的微内核),大约需要增加 175KB,在当时,这是一个了不起的成就(当然,由于不断地扩展,类库已经相当庞大了)。
2、面向对象
面向对象设计是一种程序设计技术。它将重点放在数据(及对象)和对象的接口上。
Java 是一种面向对象的编程语言;开发 Java 时,面向对象技术已经相当成熟。Java 的面向对象特性与 C 旗鼓相当。Java 与 C 的主要不同点在于多重继承,在 Java 中,取而代之的是更简单的接口概念。与 C 相比,Java 提供了更丰富的运行时自省功能。
3、分布式
Java 有一个丰富的例程库,用于处理像 Http 和 Ftp 之类的 TCP/IP 协议。Java 应用程序能通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
如今,这一点被认为是理所当然的,不过在 1995 年,主要还是从 C 或 Visual Basic 程序连接 Web 服务器。
4、健壮性
Java 的设计目标之一在于时的 Java 编写的程序具有多方面的可靠性。Java 非常强调进行早期的问题检测、后期动态的(运行时)检测,以及消除容易出错的情况 …
Java 编译器能够检测许多在其它语言中仅在运行时才能检测出来的问题。至于第二点,对于曾经花费几小时来检测由于指针 Bug 而引起内存冲突的人来说,一定很喜欢 Java 这一特性。目前许多第三方交易系统、银行平台的前台和后台电子交易系统等都会用 Java 语言开发。
5、安全性
Java 要适用于网络/分布式环境。为了实现这个目标,安全性颇受重视。使用 Java 可以构建防病毒、防篡改的系统。从一开始 Java 就设计成能够防范各种攻击 , 其中包括 :①运行时堆栈溢出(蠕虫和病毒常用的攻击手段)、②破坏自己的进程空间之外的内存、③未经授权读写文件 。
6、体系结构中立
编译器生成一个体系结构中立的目标格式,这是一种编译过的代码,只要有 Java 运行时系统,这些编码后的代码可以在许多处理器上运行。Java 编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。
Java 程序(后缀名为 .java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀名为 .class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态的转换为本地机器代码。
7、可移植性
Java 并不依赖平台,用 Java 编写的程序可以运用到任何操作系统上;与 C/C 不同,Java 规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算的行为都有明确的说明。(例如,Java 中的 int 永远为 32 位的整数,而在 C/C 中,int 可能是 16 位整数、32 位整数,也可能是编译器开放商指定的任何其他大小)。
8、解释型
Java 解释器可以在任何移植了解释器的机器上直接执行Java字节码。由于连接是一个增量式且轻量级的过程,所以,开发过程也变得更加便捷,更加具有探索性。
9、高性能
Java 是一种先编译后解释的语言,所以它不如全编译性语言快。但 Java 设计者制作了 “及时” 编译程序,这样就可以实现全编译了;
尽管对解释后的字节码性能已经比较满意 , 但在有些场合下还需要更加高效的性能。 字节码可以 ( 在运行时刻 ) 动态地翻译成对应运行这个应用的特定 CPU的机器码。
10、多线程
多线程可以带来更快的交互响应和实时行为。
Java 在当时很超前。它是第一个支持并发程序设计的主流语言,从白皮书中可以看到,它的出发点稍有些不同。当时,多核处理器还很神秘,而 Web 编程才刚刚起步,处理器要花很长时间等待服务器响应,并需要并发程序设计来保证用户界面不会“冻住”。
11、动态性
从很多方面来看,Java 与 C 或 C 相比更加具有动态性。它能够适应不断发展的环境。库中可以自由地添加新方法和实例白能量,而对客户端却没有任何影响,在 Java 中找出运行时类型信息十分简单。