《Java从小白到大牛精简版》——第1章 开篇综述

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 采用自动内存垃圾回收机制,程序员不再需要管理内存,从而减少内存错误的发生,提高了程序的健壮性。

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虚拟机

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

图1-2 Java程序运行过程

本章小结

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

配套视频

1、Java从小白到大牛第1篇 【Java基础】视频课程

2、Java从小白到大牛第2篇 【面向对象】视频课程

3、Java从小白到大牛第3篇 【Java进阶】视频课程

4、Java从小白到大牛第4篇项目实战视频课程1——【PetStore宠物商店】

5、Java从小白到大牛第4篇项目实战视频课程2——【Java版QQ】

6、Java从小白到大牛项目实战专题

配套源代码

http://www.51work6.com/java1.php

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

1. 进入百度阅读电子书
2. 进入图灵社区电子书
时间: 2024-10-28 20:08:21

《Java从小白到大牛精简版》——第1章 开篇综述的相关文章

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

Python诞生到现在已经有20多年了,但是Python仍然是非常热门的编程语言之一,很多平台中使用Python开发.表1-1所示的是TIOBE社区发布的2017年3月和2018年3月的编程语言排行榜,可见Python语言的热度,或许这也是很多人选择学习Python的主要原因. Python语言历史 Python之父荷兰人吉多 范·罗苏姆(Guido vanRossum)在1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无聊时间,决心开发一门解释程序语言.1991年第一个Python解释器公

《Python从小白到大牛》第5章 Python编码规范

俗话说:"没有规矩不成方圆".编程工作往往都是一个团队协同进行,因而一致的编码规范非常有必要,这样写成的代码便于团队中的其他人员阅读,也便于编写者自己以后阅读. 提示关于本书的Python编码规范借鉴了Python官方的PEP8编码规范^1和谷歌Python编码规范^2. 命名规范 程序代码中到处都是标识符,因此取一个一致并且符合规范的名字非常重要.Python中命名规范采用多种不同.不同的代码元素命名不同,下面分类说明一下. 包名.全部小写字母,中间可以由点分隔开,不推荐使用下划线.

《Python从小白到大牛》第6章 数据类型

在声明变量时会用到数据类型,在前面已经用到一些数据类型,例如整数和字符串等.在Python中所有的数据类型都是类,每一个变量都是类的"实例".没有基本数据类型的概念,所以整数.浮点和字符串也都是类. Python有6种标准数据类型:数字.字符串.列表.元组.集合和字典,列表.元组.集合和字典可以保存多项数据,他们每一个都是一种数据结构,本书中把他们统称为"数据结构"类型. 本章先介绍数字和字符串,列表.元组.集合和字典数据类型后面章节会详细介绍. 数字类型 Pyth

《Python从小白到大牛》第8章 控制语句

程序设计中的控制语句有三种,即顺序.分支和循环语句.Python程序通过控制语句来管理程序流,完成一定的任务.程序流是由若干个语句组成的,语句可以是一条单一的语句,也可以是复合语句.Python中的控制语句有以下几类: 分支语句:if 循环语句:while和for 跳转语句:break.continue和return 分支语句 分支语句提供了一种控制机制,使得程序具有了"判断能力",能够像人类的大脑一样分析问题.分支语句又称条件语句,条件语句使部分程序可根据某些表达式的值被有选择地执行

《Python从小白到大牛》第9章 数据结构

当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机程序中会有很多数据,这些数据也需要一个容器将他们管理起来,这就是数据结构.常见的数据结构:数组(Array).集合(Set).列表(List).队列(Queue).链表(Linkedlist).树(Tree).堆(Heap).栈(Stack)和字典(Dictionary)等结构. Python中数据容器主要有:序列.集合和字典. 注意Python中并没有数组结构,因为

买《Python从小白到大牛》专题视频课程送配套纸质图书

经过一年多时间的呕心沥血,Python立体化图书--<Python从小白到大牛>即将与大家见面了.所谓立体化图书包括:电子图书.视频.课件和服务等内容. <Python从小白到大牛>纸质图书将于9月下旬上市,为了答谢广大学员对智捷课堂以及关老师的支持,现购买51CTO学院<Python从小白到大牛全集专题>视频课程http://edu.51cto.com/topic/1507.html的学员送一本<Python从小白到大牛>纸质版图书.请于购买课程后10个工

《Python从小白到大牛》简介

本书是一部系统论述Python编程语言.OOP编程思想以及函数式编程思想的立体化教程(含纸质图书.电子书.教学课件.源代码与视频教程).为便于读者高效学习,快速掌握Python编程方法.本书作者精心制作了电子书.完整的教学课件.完整的源代码与丰富的配套视频教程以及在线答疑服务等内容. 本篇包括8章内容,系统介绍了Python语言的基础知识.内容包括Python语言历史,Python语言的特点,开发环境的搭建,创建第一个Python程序,Python语法基础,Python编码规范,数据类型,运算符

买《Kotlin从小白到大牛》专题视频课程,送配套纸质图书

经过一年多时间的呕心沥血,Kotlin立体化图书--<Kotlin从小白到大牛>即将与大家见面了.所谓立体化图书包括:电子图书.视频.课件和服务等内容. <Kotlin从小白到大牛>纸质图书将于9月上旬上市,为了答谢广大学员对智捷课堂以及关老师的支持,现购买51CTO学院视频课程<Kotlin从小白到大牛全集专题> 的学员送一本<Kotlin从小白到大牛>纸质版图书.请于购买课程后10个工作日内申请赠书,过期视为放弃. 注意:苹果支付购买,以及打折活动购买不

《Java从小白到大牛》之第7章 控制语句

<Java从小白到大牛>纸质版已经上架了!!! 程序设计中的控制语句有三种,即顺序.分支和循环语句.Java程序通过控制语句来管理程序流,完成一定的任务.程序流是由若干个语句组成的,语句可以是一条单一的语句,也可以是一个用大括号({})括起来的复合语句.Java中的控制语句有以下几类: 分支语句:if和switch. 循环语句:while.do-while和for 跳转语句:break.continue.return和throw 7.1 分支语句 分支语句提供了一种控制机制,使得程序具有了&q