《Java从小白到大牛》之第1章 开篇综述

《Java从小白到大牛》纸质版已经上架了!!!

Java诞生到现在已经有20多年了,但是Java仍然是非常热门的编程语言之一,很多平台中使用Java开发。表1-1所示的是TIOBE社区发布的2016年5月和2017年5月的编程语言排行榜,可见Java语言的热度,或许这也是很多人选择学习Java的主要原因。

表 1-1 TIOBE编程语言排行榜

2017年5月 2016年5月 变化 编程语言 评级 评级变化
1 1 Java 14.639% -6.320%
2 2 C 7.002% -6.220%
3 3 C++ 4.751% -1.950%
4 5
Python 3.548% -0.240%
5 4
C# 3.457% -1.020%
6 10
Visual Basic .NET 3.391% 1.070%
7 7 JavaScript 3.071% 0.730%
8 12
Assembly language 2.859% 0.980%
9 6
PHP 2.693% -0.300%
10 9
Perl 2.602% 0.280%
11 8
Ruby 2.429% 0.090%
12 13
Visual Basic 2.347% 0.520%
13 15
Swift 2.274% 0.680%
14 16
R 2.192% 0.860%
15 14
Objective-C 2.101% 0.500%
16 42
Go 2.080% 1.830%
17 18
MATLAB 2.063% 0.780%
18 11
Delphi/Object Pascal 2.038% 0.030%
19 19 PL/SQL 1.676% 0.470%
20 22
Scratch 1.668% 0.740%

1.1 Java语言历史

在正式学习Java语言之前,读者有必要先来了解一下Java的历史。1990年底美国Sun公司[1]成立了一个叫做Green的项目组,该Green项目主要目标是为消费类电子产品开发一种分布式系统,使之能够操控电冰箱、电视机等家用电器。

消费类电子产品种类很多,包括掌上电脑(个人数字助理,Personal Digital Assistant,简称PDA)、机顶盒、手机等等,这些消费类电子产品所采用的处理芯片和操作系统基本上都是不相同的,存在跨平台等问题。开始Green项目组考虑采用C++语言来编写消费类电子产品的应用程序,但是C++语言过于复杂、庞大,而且安全性差。于是他们设计并开发出一种新的语言——Oak(橡树)。Oak这个名字来源于Green项目组办公室窗外的一棵橡树。由于Oak在进行注册商标时已经被注册,他们需要为这个新语言取一个新的名字,有一天,几位项目的成员正在咖啡馆喝着Java(爪哇)咖啡,其中一个人灵机一动说就叫Java怎么样?马上得到了其他人的同意,于是这个新的语言取名为Java。

Sun在1996年发布了Java 1.0,但是Java 1.0开发的应用速度很慢,并不适合做真正的应用开发,直到Java 1.1后速度有了明显的提升。Java设计之初是为消费类电子产品开发应用,但是真正使Java流行起来是在互联网上的Web应用程序,上个世纪90年代正在互联网发展起步阶段,互联网上设备差别很大,需要应用程序能够跨平台运行,那么Java语言具有“一经编写到处运行”的跨平台能力。

到本书编写时,Oracle公司已经发布了Java 8,Java 9将在2017年秋季发布。Java

在20多年发展过程中,与时俱进,为了适应时代的需要,经历过两次重大的版本升级,一个是Java 5,Java 5提供了泛型等重要的功能;另一个是Java 8,Java 8中提供了Lambda表达式和枚举类等重要的功能。

1.2 Java语言特点

Java语言能够流行起来,并长久不衰,得益于Java语言有很多优秀的关键特点。这些特点包括:简单、面向对象、分布式、结构中立、可移植、解释执行、健壮、安全、高性能、多线程和动态。下面详细解释一下:

1. 简单

Java设计目标之一就是能够方便学习,使用简单。由于当初C++程序员很多,介绍C++语言的书籍也很多,所以Java语言的风格设计成为类似于C++语言风格,但Java摒弃了C++中容易引发程序错误的地方,如指针、内存管理、运算符重载和多继承等。一方面C++程序员可以很快迁移到Java;另一方面没有编程经验的初学者也能很快学会Java。

2. 面向对象

面向对象是Java最重要的特性。Java是彻底的、纯粹的面向对象语言,在Java中“一切都是对象”。Java完全具有面向对象三个基本特性:封装、继承和多态,其中封装性实现了模块化和信息隐藏,继承性实现了代码的复用,用户可以建立自己的类库。而且Java采用的是相对简单的面向对象技术,去掉了多继承等复杂的概念,只支持单继承。

3. 分布式

Java语言就是为分布式系统而设计的。JDK(Java Development Kits,Java开发工具包)中包含了支持HTTP和FTP等基于TCP/IP协议的类库。Java程序可以凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。

4. 结构中立

Java程序需要在很多不同网络设备中运行,这些设备有很多不同类型的计算机和操作系统。为能够使Java程序能在网络的任何地方运行,Java编译器编译生成了与机器结构(CPU和操作系统)无关的字节码(byte-code)文件。任何种类的计算机,只要可以运行Java虚拟机,字节码文件就可以在该计算机上运行。

5. 可移植

体系结构的中立也使得Java程序具有可移植性。针对不同的CPU和操作系统Java虚拟机有不同的版本,这样就可以保证相同的Java字节码文件可以移植到多个不同的平台上运行。

6. 解释执行

为实现跨平台,Java设计成为解释执行的,即Java源代码文件首先被编译成为字节码文件,这些字节码本身包含了许多编译时生成的信息,在运行时候Java解释器负责将字节码文件解释成为特定的机器码进行运行。

7. 健壮

Java语言是强类型语言,它在编译时进行代码检查,使得很多错误能够在编译期被发现,不至于在运行期发生而导致系统崩溃。

Java摒弃了C++中指针操作,指针是一种很多强大的技术,能够直接访问内存单元,但同时也很复杂,如果指针操控不好,会引起导致内存分配错误、内存泄漏等问题。而Java中则不会出现由指针所导致的问题。

内存管理方面C/C++等语言采用手动分配和释放,经常会导致内存泄漏,从而导致系统崩溃。而Java 采用自动内存垃圾回收机制[2],程序员不再需要管理内存,从而减少内存错误的发生,提高了程序的健壮性。

8. 安全

在Java程序执行过程中,类装载器负责将字节码文件加载到Java虚拟机中,这个过程中由字节码校验器检查代码中是否存在着非法操作。如果字节码校验器检验通过,由Java解释器负责把该字节码解释成为机器码进行执行,这种检查可以防止木马病毒。

另外。Java虚拟机采用的是“沙箱”运行模式,即把Java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内存。

9. 高性能

Java编译器在编译时对字节码会进行一些优化,使之生成高质量的代码。Java字节码格式就是针对机器码转换而设计的,实际转换时相当简便。Java在解释运行时采用一种即时编译技术,可使Java程序的执行速度提升很大。多年的发展Java虚拟机也有很多改进这都使得Java程序的执行速度提升很大。

10. 多线程

Java是为网络编程而设计的,这要求Java能够并发处理多个任务。Java支持多线程编程,多线程机制可以实现并发处理多个任务,互不干涉,不会由于某一任务处于等待状态而影响了其它任务的执行,这样就可以容易的实现网络上的实时交互操作。

11. 动态

Java应用程序在运行过程中,可以动态的加载各种类库,即使是更新类库也不必重新编译使用这一类库的应用程序。这一特点使之非常适合于网络环境下运行,同时也非常有利于软件的开发。

1.3 Java平台

Java不仅是编程语言,还是一个开发平台,Sun公司根据Java应用领域的不同将Java分成三个平台:Java SE、Java EE和Java ME。

1.3.1 Java SE

Java SE是Java Standard Edition,主要目的是为台式机和工作站桌面应用(Application)程序的版本。Java SE是其他平台的基础,本书主要介绍的就是Java SE版本中的技术。

Java SE中主要包含了:JRE(Java SE Runtime Environment,Java SE运行环境)、JDK(Java Development Kit,Java开发工具包)和Java核心类库。如果只是运行Java程序,不考虑开发Java程序,那么只安装JRE就可以了。在JRE中包含了Java程序运行所需要的Java虚拟机(JVM,Java Virtual Machine)。JDK中包含了JRE和一些开发工具,这些工具包括:编译器、文档生成器和文件打包等工具。

另外,Java SE中还提供了Java应用程序开发需要的基本的和核心的类库,这些类库:字符串、集合、输入输出、网络通信和图形用户界面等。事实上学习Java就是在学习Java语法和Java类库使用。

1.3.2 Java EE

Java EE是Java Enterprise Edition,主要目的是为简化企业级系统的开发、部署和管理。Java EE是以Java SE为基础的,并提供了一套服务、API接口和协议,能够开发企业级分布式系统、Web应用程序和业务组件等,其中的包括:JSP、Servlet、EJB、JNI和Java Mail等。

1.3.3 Java ME

Java ME是Java Micro Edition,主要是面向消费类电子产品,为消费电子产品提供一个Java的运行平台,使得Java程序能够在手机、机顶盒、PDA等产品上运行。Java ME在早期的诺基亚塞班手机系统有很多应用,而现在的iOS和Android等智能手机中基本上没有它的用武之地。

1.4 Java虚拟机

Java应用程序能够跨平台运行,主要是通过Java虚拟机实现的。如图1-1所示,不同软硬件平台Java虚拟机是不同的,Java虚拟机往下是不同的操作系统和CPU,使用或开发时需要下载不同的JRE或JDK版本。Java虚拟机往上是Java应用程序,Java虚拟机屏蔽了不同软硬件平台,Java应用程序不需要修改,不需要重新编译直接可以在其他平台上运行。

图1-1 Java虚拟机

图1-1 Java虚拟机

Java虚拟机是中包含了Java解释器,Java程序在运行过程如图1-2所示,首先由编译器将加Java源程序文件(.java文件)编译成为字节码文件(.class文件),然后再由Java虚拟机中的解释器将字节码解释成为机器码去执行。

图1-2 Java程序运行过程

图1-2 Java程序运行过程

本章小结

本章首先介绍了解到Java的历史、Java语言的特点,然后介绍了Java三大平台,最后介绍了Java虚拟机。

配套视频

http://www.zhijieketang.com/classroom/6/courses

配套源代码

http://www.zhijieketang.com/group/5

与本书免费版对应的还有一个收费版本:

  1. 进入百度阅读电子书

  2. 进入图灵社区电子书


  1. Sun Microsystems公司创建于1982年,主要产品是工作站及服务器。1986年在美国成功上市,1992年Sun推出了市场上第一台多CPU台式机,1993年进入财富500强,1995年开发了Java语言,2010年被Oracle(甲骨文)公司收购。现在Java技术是由甲骨文公司提供的。

  2. 在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容