第1章 Java程序设计概述

1.1 Java程序设计平台

完美与缺陷

  • 一旦一种语言应用于某个领域,与现存代码的相容性问题就摆在了人们的面前。
  • 由于相容性这个严肃的问题确实存在于现实,所以,或多或少地还是有一些“累赘”被加到语言中,这就导致Java并不如想象中的那么完美无瑕。

定义

  • Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。

功能

  • 有奇特的绘图功能、网络连接功能和数据库存取功能

1.2 Java “白皮书” 的关键术语

白皮书

  1. 简单性
  2. 面向对象
  3. 分布式
  4. 健壮性
  5. 安全性
  6. 体系结构中立
  7. 可移植性
  8. 解释型
  9. 高性能
  10. 多线程
  11. 动态性

1.2.1 简单性

简化

  • 这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等。

保留

  • switch语句的语法在Java中就没有改变。

嵌入式

  • 简单的另一个方面是小。
  • 一个独立的具有较小库的Java微型版(Java micro edition),这个版本适用于嵌入式设备。

1.2.2 面向对象

多重继承和接口

  • Java与C++的主要不同点在于多重继承,在Java中,取而代之的是更简单的接口概念。

1.2.3 分布式

网络

  • Java有一个丰富的历程库,用于处理像HTTP和FTP之类的TCP/IP协议。
  • Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。

1.2.4 健壮性

异常

  • Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。

指针

  • 对于曾经花几个小时来检查由于指针bug而引起内存冲突的人来说,一定很喜欢Java的这一特性

1.2.5 安全性

沙箱

  • 不可信代码在一个沙箱环境中执行,在这里它不会影响主系统。

安全策略

  • Java浏览器插件不再信任远程代码,除非代码具有数字签名而且用户同意执行这个代码。

1.2.6 体系结构中立

字节码

  • 只要有Java运行时系统,这些编译后的代码可以再许多处理器上运行。
  • Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。

虚拟机

  • 为虚拟机生成代码并不是一个新思路。

解决:即时编译

  • 解释虚拟机指令肯定会比全速运行机器指令慢很多。
  • 然而,虚拟机有一个选项,可以将执行最繁琐的字节码翻译成机器码,这一过程被称之为即时编译。

1.2.7 可移植性

数据类型

  • Java规范中没有“依赖具体实现”的地方。
  • 基本数据类型的大小以及运算都做了明确的说明。
  • Java中的int永远为32位的整数。

可移植接口

  • 作为系统组成部分的类库,定义了可移植的接口。

缺陷地方

  • 花费了大量的心血,却构建了一个在各个平台都难以让人接受的库。

优点

  • 可以处理文件、正则表达式、XML、日期和时间、数据库、网络连接、线程等,而不用操心底层操作系统。

1.2.8 解释型

Java解释器

  • Java解释器可以在任何移植了解释器的机器上执行Java字节码。

1.2.9 高性能

更快追求

  • 尽管对解释后的字节码性能已经比较满意,但在有些场合下还需要更加高效的性能。
  • 字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定CPU的机器码。

常用优化

  • 即时编译器可以监控经常执行哪些代码并优化这些代码以提高速度。

使用内联

  • 更为复杂的优化是消除函数调用(即“内联”)。
  • 如果特定的函数不会被覆盖,就可以使用内联。

1.2.10 多线程

追求并发

  • 我们不再追求更快的处理器,而是着眼于获得更多的处理器,而且要让它们一直保存工作。

1.2.11 动态性

增加代码

  • 当需要将某些代码添加到正在运行的程序中,动态性将是一个非常重要的特性。

1.3 Java applet 与 Internet

applet

  • 在网页中运行的Java程序称为applet。

形容

  • 在网页中插入一个applet就如同在网页中嵌入一幅图片。
  • 关键的一点是这个图片是活动的。

结果

  • adobe的flash技术变得更为流行。
  • Java遭到了严重的安全问题,浏览器和Java浏览器插件变得限制越来越多。

1.4 Java发展简史

开局

  • 想要设计一种小型计算机语言,主要用于像有线电视转换盒这类的消费设备。

特性

  • 代码短小、紧凑且与平台无关。
  • 可移植的语言,可以为虚拟机生成中间代码。

命名

  • Sun公司的人厚礼发现Oak是一种已有的计算机语言的名字,于是,将其改名为Java。

变局

  • 我们已经拥有在客户机/服务器主流模型中所需要的体系结构中立、实时、可靠、安全——这些在工作站环境并不太重要,所以,我们决定开发浏览器。

发布

  • 1996年初,Sun公司发布了Java的第1个版本.

分类

  • 除了“标准版”之外,Sun公司还推出了两个其他版本:一个用于手机等嵌入式设备的“微型版”;另一个是用于服务器端处理的“企业版”。

重大改进

  • 5.0版是自1.1版以来第一个对Java语言做出重大改进的版本(这一版本原来被命名为1.5版,在2004年的JavaOne会议之后,版本数字升至5.0).
  • 添加了泛型、“for each”循环、自动装箱和注解。
  • 版本6(没有后缀.0)于2006年年末发布。

又一改变

  • 2014年,Java8终于发布,在近20年中这个版本有了最大的改变。
  • Java8提供了一种“函数式”编程方式,可以很容易地表述并发执行的计算。

Java语言地发展状况

版本 年份 语言新特性 类与接口地数量
1.0 1996 语言本身 211
1.1 1997 内部类 477
1.2 1998 strictp修饰符 1524
1.3 2000 1840
1.4 2002 断言 2723
5.0 2004 泛型类、"for each"循环、可变元参数、自动装箱、元数据、枚举、静态导人 3279
6 2006 3793
7 2011 基于字符串的switch、钻石操作符、二进制字面量、异常处理改进 4024
8 2014 lambda表达式,包含默认方法的接口,流和日期/时间库 4240

1.5 关于Java地常见误解

1. Java是HTML地扩展

  • HTML是一种描述网页结构地方式。

2. 使用XML,所以不需要Java

  • XML是一种描述数据地方式

Java是一种非常容易学习地程序设计语言

  • 像Java这种功能强大的语言大都太容易学习。

4. Java将成为适用于所有平台的通用性编程语言

  • 某些领域其他语言又更出色的表现。

5. Java只不过是另一种程序设计语言

  • 意思是说优点喽?

人们关注

  • 提供了易于实现某些功能的易用、便捷和标准的库。
  • 有开发工具商能建立强大的编程和调试环境。
  • 语言和工具能够与其他计算基础架构整合在一起。

Java成功源于

  • 其库类能够让人们轻松地完成原本有一定难度地事情。
  • Java减少了指针错误,这是另一个好处。

6. Java是专用地,应该避免使用

  • 虚拟机和库类地源代码可以免费获得,不过仅限于查看,而不能修改和再发布。
  • 不过,这些专利在未来十年就会到期,那时候Java就完全免费了。

Java是解释型地,因此对于关键地应用程序速度太慢了

狡辩

  • 一个较慢地Java程序与几年前相当快的C++程序相比还要快一些。

8. 所有的Java程序都是在网页上运行的

  • Java applet都是在网页浏览器中运行的。
  • 大多数Java程序是运行在web浏览器之外的独立应用程序。

9. Java程序是主要的安全风险

  • 对applet安全模型的强度和复杂度发起挑战。
  • 有些系统管理员甚至在公司浏览器中禁用了Java。

JavaScript是Java的简易版

  • JavaScript是一种在网页中使用的脚本语言。

11. 使用Java可以用廉价的Internet设备取代桌面计算机

  • 舍近求远
  • 一些公司已经生产出Java网络计算机的原型,不过用户还不打算放弃功能强大而便利的桌面计算机,而去使用没有本地储存功能而且功能有限的网络设备。

第1章 Java程序设计概述相关推荐

  1. Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述

    第1章 Java程序设计概述 1.1 Java程序设计平台  具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求.  可移植性  垃圾收集  提供大型的库   如果想 ...

  2. 《Java核心技术:卷I 基础知识》第1章 Java 程序设计概述 阅读与重点标记

    第 1 章 Java 程序设计概述 1996年 Java 第一次发布就引起了人们的极大兴趣.关注 Java 的人士不仅限于计算机出版界,还有诸如<纽约时报><华盛顿邮报>< ...

  3. 【JAVA SE】第一章 Java语言概述、环境变量和HelloWorld

    第一章 Java语言概述.环境变量和HelloWorld 文章目录 第一章 Java语言概述.环境变量和HelloWorld 一.Java语言概述 1.Java简介 2.Java发展历史 3.Java ...

  4. 【Java开发语言 01】第一章 Java语言概述(基础常识+Java语言概述+Java程序运行机制及运行过程+Java语言环境的搭建+开发体验hello world+错误:编码GBK的不可映射字符)

    java入门-第一章Java语言概述 1基础常识 软件开发 人机交互方式 常用的DOS命令(win系统,有一些直接通过命令执行的) 2 Java语言概述 什么是计算机语言 关于面向对象和面向过程 Ja ...

  5. Java程序设计概述

    Java程序设计概述 Java程序设计平台 Java的特性 Java applet与Internet Java发展史 关于Java的常见误解 Java程序设计平台 Java是一个完整的平台,含有一个庞 ...

  6. 第1章 Java语言概述

    第1章 Java语言概述 声明 0. Java语言应用场景 1. 软件开发介绍 2. 计算机编程语言介绍 3. Java语言概述 4. Java程序运行机制及运行过程 5. Java的环境搭建  5. ...

  7. 描述java源程序构成_Java第二章Java程序设计

    <Java第二章Java程序设计>由会员分享,可在线阅读,更多相关<Java第二章Java程序设计(140页珍藏版)>请在人人文库网上搜索. 1.第2章 Java基本语法,2. ...

  8. review_core_basic_java(1)java程序设计概述

    [0]README 1)本文部分文字描述转自 "core java volume 1" 旨在review "review_core_basic_java(1)java程序 ...

  9. 【Java基础系列教程】第二章 Java语言概述、配置环境变量

    一.计算机编程语言概述 1.1 语言 语言(英文:Language)是人类进行沟通交流的表达方式.例如:中国人与中国人用普通话沟通.而中国人要和英国人交流,就要学习英语.              语 ...

最新文章

  1. 3 当某个应用的CPU使用达到100%,该怎么办?
  2. centos7开启tcp6_Centos7下配置IPV6
  3. 新生的 XInclude
  4. 都昌时间轴控件功能说明
  5. 用接纳的心看待新员工
  6. 自动控制原理(第七版)胡寿松 课本
  7. 计算机应用历年高考真题,春季高考历年真题-2013年天津市春季高考计算机试卷...
  8. java实现ssdp协议_SSDP协议最简单的Reactor / Netty实现是什么?
  9. tcp粘包问题以及处理方案
  10. java 黑盒测试_关于黑盒测试的总结
  11. mysql修改表的内容_sql怎么修改表内容
  12. 外包项目开发课程整理一:SDLC传统系统开发生命周期7个阶段
  13. nbu客户端卸载_在LINUX系统下如何卸载NetBackup
  14. Shell脚本-批量生成100个账号
  15. 计算机英语发展,计算机发展史(英语版)
  16. docker安装部署STF
  17. 网易云音乐“王牌冤家”用户评论:评论爬虫及情感分析(SnowNLP)
  18. 本地连接受限制或无连接怎么办
  19. 2021年成都一诊对应高考成绩查询,成都一诊一分一段表2021 成都一诊分数线最新消息...
  20. 用java把通达信导出的交易记录文件高速批量导入mysql数据库

热门文章

  1. 0 为什么学习stm32f103
  2. u盘坏了数据可以恢复吗?用u盘数据恢复软件
  3. BAT批量将CR2文件转化为JPG
  4. python分钟转换小时_Python程序将秒转换为小时,分钟和秒
  5. 互斥事件的概念和公式_专题49 互斥事件和独立事件的概率及条件概率(打包)-2019年高考数学(理)名师揭秘之一轮总复习...
  6. python字符串对象所有基本方法简要
  7. 恢复视力方法(仅供参考)
  8. 从功能设计中看教育机器人的奥秘
  9. SAP ABAP ALV控制显示的网格中的每一个字段属性
  10. 2021中职组网络空间安全国赛CD模块分组混战镜像*