第1章 Java程序设计概述
1.1 Java程序设计平台
 具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求.
 可移植性
 垃圾收集
 提供大型的库
  如果想要有奇特的绘图功能,网络连接功能和数据库存取功能无需自己动手编写代码
 功能齐全的出色语言
 高质量的执行环境,提供庞大的库。集多种优势于一身
 注:
  白皮书:www.oracle.com/technetwork/java/langenv-140151.html
  11个关键术语的论述:http://horstmann/corejava/java-an-overview/7Gosling.pdf

1.2 Java "白皮书" 的关键术语
  1)简单性   2)面向对象  3)分布式  4)健壮性  5)安全性
  6)体系结构中立  7)可移植性  8)解释性  9)高性能  10)多线程 11)多态性
 1.2.1 简单性
  无需深奥的专业培训就可以进行的编程系统,并且符合当今的标准惯例
  尽可能地接近C++,以便系统更易于理解 Java剔除了C++中许多很少用,难以理解,易混淆的特性(这些特性带来的麻烦远远多于其带来的好处)
  支持开发能够在小型机器上独立运行的软件(基本的解释器以及类支持大约仅为40KB)
  再加上基础的标准类库和对线程的支持(基本上是一个自包含的微内核)大约需要增加175KB
  由于不断的扩展,类库已经相当庞大
   现在有一个独立的具有较小类库的Java微型版(Java Micro Edition),这个版本适用于嵌入式设备
 1.2.2 面向对象
  面向对象设计是一种程序设计技术  它将重点放在数据(即对象)和对象的接口上
   面向对象:始终关注的是所制作的椅子,第二位才是所使用的工具;
   非面向对象:首先考虑的是所用的工具
  在本质上,Java的面向对象能力与C++是一样的  旗鼓相当
  Java与C++的主要不同点在于多重继承,在Java中,取而代之的是更简单的接口概念
  Java提供了更丰富的运行时自省空间
 1.2.3 分布式
  Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议
  Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样
 1.2.4 健壮性
  具有多方面的可靠性
  Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性
  Java编译器能够检测许多在其他语言中仅运行时才能够检测出来的问题
 1.2.5 安全性 相对安全,凡事无绝对
  适用于网络/分布式环境
  可以构建防病毒,防篡改的系统
  防范各种攻击:
    运行时堆栈溢出。如蠕虫和病毒常用的攻击手段
    破坏自己的进程空间之外的内存
    未经授权读写文件
  Java代码不论来自哪里,都不能脱离沙箱
   不可信代码在一个沙箱中执行,在这里它不会影响主系统
  安全模型很复杂
   Java浏览器插件不信任远程代码,除非代码有数字签名而且用户同意执行这个代码
 1.2.6 体系结构中立
  很容易地在任何机器上解释执行
  可以动态地翻译成本地机器代码
  Java虚拟机优点:
   可以检测指令序列的行为,从而增强安全性
 1.2.7 可移植性
  Java规范中没有 "以来具体实现" 的地方
  基本数据类型的大小以及有关运算都做了明确的说明
  在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题
  二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰
   int为永远的32位的整数
   字符串是用标准的Unicode格式储存的
  作为系统组成部分的类库,定义了可移植的接口
  Java库很好地支持平台独立性
   处理文件,正则表达式,XML,日期和时间,数据库,网络连接,线程等
  不仅程序是可移植的,Java API往往也比原生API质量更高
 1.2.8 解释型
  java虚拟机可以在任何安装了jre的环境中运行
  Java解释器可以在任何移植了解释器的机器上执行Java字节码
  链接是一个增量式且轻量级的过程(开发过程变得更加快捷,更加具有探索性)
 1.2.9 高性能
  更加高效的性能
  字节码可以(在运行时刻)动态地翻译成对应这个应用的特定CPU的机器码 即时编译器可以监控经常执行代码,并且优化这些代码以提高速度。更为复杂的优化是消除函数调用(即 "内联") 知道哪些类已经加载 基于当前加载的类集,如果特定函数不会被覆盖,就可以使用内联 (必要时,还可以撤销优化)
 1.2.10 多线程
  多线程可以带来更好的交互响应和实时行为
  并发性 摩尔定律 更多的处理器
  第一个支持并发程序设计的主流语言
  java提供接口,操作接口以便操作系统多个处理器
 1.2.11 动态性
  库中可以自由地添加新方法和实例变量(对客户端却没有任何影响)
  可轻易找到运行时类型信息(十分简单)
  非常重要的特性
  引入主流程序设计语言中
  注:
   J++ Java 有几乎相同的编程语言以及虚拟机
   C# Java 有很多相似之处,然而使用的却是完全不同的虚拟机
1.3 Java applet与Internet
 从Internet下载Java字节码,并在自己机器上运行(在网页上运行的Java程序成为applet)
  动态: 利用鼠标进行旋转,调整焦距等操作
 applet:http://jmol.sourceforge.net
 "如今,要在浏览器中使用applet,不仅需要一定的水平,而且要付出努力"
1.4 Java的发展史
 语言只是实现目标的工具,而不是目标本身  --Gosling
 Oak --> Java
 万维网 关键 把超文本页面转换到屏幕上的浏览器
 一处编写,随处运行

                       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 eath"循环,可变元参数, 自动装箱,元数据,枚举,静态导入  3279
 6  2006   无  3793
 7  2011   基于字符串的switch,钻石操作符,二进制字面量,异常处理改进  4024
 8  2014    lambda表达式,包含,默认方法的接口,流和日期/时间库  4240

1.5 关于Java的常见误解
 1.Java是HTML的扩展?
  Java是一种程序设计语言;HTML是一种描述网页结构的方式。除了用于在网页上放置Java applet的HTML扩展之外,两者没有任何共同之处。
 2.使用XML,所以不需要Java?
  Java是一种程序设计语言;
  XML是一种描述数据的方式。
  可以使用任何一种程序设计语言处理XML数据,而Java API对XML处理提供了很好的支持。
  此外,许多重要的第三方XML工具采用Java编写。
 3.Java是一种非常容易学习的程序设计语言?
  像Java这种功能强大的语言大都不太容易学习。 首先,必须将编写玩具式程序的轻松和开发实际项目的艰难区分开来。 Java类库包含了数千种类和接口以及数万个函数。幸运的是,并不需要知道它们中的每一个,然而,要想Java解决实际问题,还是需要了解不少内容的。
 4.Java将成为适用于所有平台的通用性编程语言?
  从理论上讲,这是完全有可能的。
  但在实际中,某些领域其他语言有更出色的表现,比如,Objective C和后来的Swift在iOS设备上就有着无可取代的地位。 浏览器中的处理几乎完全由JavaScript掌控。
  Windows程序通常都用C++或C#编写。
  Java在服务器端编程和跨平台客户端应用领域则很有优势。
5.Java只不过是另外一种程序设计语言?
  Java是一种很好的程序设计语言,很多程序设计人员喜欢Java胜过C、C++或C#。有
  上百种好的程序设计语言没有广泛地流行,而带有明显缺陷的语言,如:C++和Visual Basic却大行其道。
  程序设计语言的成功更多地取决于其支撑系统的能力,而不是优美的语法。
  人们主要关注:
   是否提供了易于实现某些功能的易用、便捷和标准的库?
   是否有开发工具提供商能建立强大的编程和调试环境?
   语言和工具集是否能够与其他计算基础架构整合在一起?
  Java的成功源于其类库能够让人们轻松地完成原本有一定难度的事情。
   例如: 联网Web应用和并发。Java减少了指针错误,这是一个额外的好处,因此使用Java编程的效率更高。但这些并不是Java成功的全部原因。
 6.Java是专用的,应该避免使用?
  最初创建Java时,Sun为销售者和最终用户提供了免费许可。 尽管Sun对Java拥有最终的控制权,不过在语言版本的不断发展和新库的设计过程中还涉及很多其他公司。 虚拟机和类库的源代码可以免费获得,不过仅限于查看,而不能修改和再发布。
  Java是“闭源的,不过可以很好地使用”。  
  根据GPL,任何人都可以得到专利许可,允许其使用和修改Java,不过仅限于桌面和服务器平台。
  如果你想在嵌入式系统中使用Java,就需要另外一个不同的许可,这很可能需要付费。
  不过,这些专利在未来十年就会到期,那时Java就完全免费了。
 7.Java是解释型的,因此对于关键的应用程序速度太慢了?
  现在Java虚拟机使用了即时编译器,因此采用Java编写的“热点”代码其运行速度与C++相差无几,有些情况下甚至更快。
  今天的计算机速度远比人们发出抱怨的时候快了很多。
  一个较慢的Java程序与几年前相当快的C++程序相比还要快一些。
 8.所有的Java程序都是在网页中运行的?
  所有的Java applet都是在网页浏览器中运行的。
  这也恰恰是applet的定义,即一种在浏览器中运行的Java程序。
  大多数Java程序是运行在Web浏览器之外的独立应用程序。
  实际上,很多Java程序都在Web服务器上运行并生成用于网页的代码。
 9.Java程序是主要的安全风险?
  尽管距离Java诞生已经20年之久,与其他常用的执行平台相比,Java还是安全得多。
 10.JavaScript是Java的简易版?
  JavaScript是一种在网页中使用的脚本语言,它是由Netscape发明的,原来的名字叫做LiveScript
  JavaScript的语法类似Java,除此之外,两者无任何关系。
  JavaScript的一个子集已经标准化为ECMA-262。
  与Java applet相比,JavaScript更紧密地与浏览器集成在一起。
  特别是JavaScript程序可以修改正在显示的文档,而applet只能在有限的区域内控制外观。
 11.使用Java可以用廉价的Internet设备取代桌面计算机
  当Java刚刚发布的时候,一些人打赌:肯定会有这样的好事情发生。一些公司已经生产出Java网络计算机的原型,不过用户还不打算放弃功能强大而便利的桌面计算机,而去使用没有本地存储而且功能有限的网络设备。当然,如今世界已经发生改变,对于大多数最终用户,常用的平台往往是手机或平板电脑。这些设备大多使用安卓平台,这是Java的衍生产物。学习Java编程肯定也对Android编程很有帮助。

~~~~~~~~~~★房上的猫★~~~~~~~~~~

Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述的更多相关文章

  1. 第一章 Java的I/O演进之路

    I/O基础入门 Java的I/O演进 第一章 Java的I/O演进之路 1.1 I/O基础入门 1.1.1 Linux网络I/O模型简介 根据UNIX网络编程对I/O模型的分类,UNIX提供了5中I/ ...

  2. Java基础知识二次学习-- 第一章 java基础

    基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...

  3. javaSE习题 第一章 JAVA语言概述

    转眼就开学了,正式在学校学习SE部分,由于暑假放视频过了一遍,略感觉轻松,今天开始,博客将会记录我的课本习题,主要以文字和代码的形式展现,一是把SE基础加强一下,二是课本中有很多知识是视频中没有的,做 ...

  4. 第一章 –– Java基础语法

    第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...

  5. 第一章 java基本多线程技能

    第一章 java多线程技能 1 线程:进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理顺序时发生的活动:是程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位. ...

  6. 《驾驭Core Data》 第一章 Core Data概述

    <驾驭Core Data>系列教程综合了<Core Data for iOS>,<Learning Core Data for iOS>,<Core Data ...

  7. C语言——第一章,程序设计和C语言

    第一章,程序设计和C语言 一,程序和程序语言 程序:完成某项事物所预设的活动方式和活动过程 程序设计:人们描述(指程序)计算机要做的工作 程序设计语言及发展 1,机器语言    2,汇编语言    3 ...

  8. 第一章、Django概述

    目录 第一章.Django概述 一.了解软件开发架构 二.HTTP协议 三.响应状态码 四.请求方式 五.基于wsgiref模块 六..动静态网页 七.python三大主流web框架 八.安装Djan ...

  9. 第一章 Windows内核概述

    第一章 Windows内核概述 这一章节描述了Windows内核知识中最重要的几个概念,这些话题在这本书之后会有更详细的描述,那些会与当前的主题密切相关.要确保你理解这个章节的概念,因为这些概念构成了 ...

随机推荐

  1. C++课程设计2

    PS:大一下学期C++课程设计 1.成绩管理系统 #include<stdio.h> #include<string> #include<iostream> #in ...

  2. 《图解Spark:核心技术与案例实战》作者经验谈

    1,看您有维护博客,还利用业余时间著书,在技术输出.自我提升以及本职工作的时间利用上您有没有什么心得和大家分享?(也可以包含一些您写书的小故事.)回答:在工作之余能够写博客.著书主要对技术的坚持和热爱 ...

  3. zuul超时的解决方案

    参考http://www.coolxuewang.com/view/10 在zuul的配置文件里增加如下配置: ribbon:    ConnectTimeout: 6000    ReadTimeo ...

  4. 简陋的斗地主,js实现

    最近闲了两天没事做,用js写了个斗地主,练习练习.代码和功能都很简陋,还有bug,咋只是聊聊自己的思路. 这里说说斗地主主要包含的功能:洗牌,发牌,玩家出牌.电脑出牌,出牌规则的验证,输赢啥的没有判断 ...

  5. Python爬虫(九)_非结构化数据与结构化数据

    爬虫的一个重要步骤就是页面解析与数据提取.更多内容请参考:Python学习指南 页面解析与数据提取 实际上爬虫一共就四个主要步骤: 定(要知道你准备在哪个范围或者网站去搜索) 爬(将所有的网站的内容全 ...

  6. 【quickhybrid】架构一个Hybrid框架

    前言 虽然说本系列中架构篇是第一章,但实际过程中是在慢慢演化的第二版中才有这个概念, 经过不断的迭代,演化才逐步稳定 明确目标 首先明确需要做成一个什么样的框架? 大致就是: 一套API规范(统一An ...

  7. 自学Zabbix1.3-zabbix进程

    默认情况下zabbix包含5个程序:zabbix_agentd.zabbix_get.zabbix_proxy.zabbix_sender.zabbix_server,另外一个zabbix_java_ ...

  8. Subscription wildcards(MQTT)

    想查看英文原文的请点击原文网址.本文是paho中讲述订阅通配符的.还是那句话,水平有限,如有翻译不当之处,欢迎指正. 订阅通配符   MQTT信息包含一个主题来进行区分.MQTT服务器使用主题来确定哪 ...

  9. presto

    presto中文站:http://prestodb-china.com/ 进入hadoop机器,进入presto所在bin目录:presto --server localhost:9090 --cat ...

  10. 迷宫问题 Maze 4X4 (sloved by backtrack)

    Description 给定一个N*N的迷宫中,(0,0)为起始点,(N-1,N-1)为目的地,求可通往目的地的多个解 思路 这道题其实就是简单的DFS,一路探索到底,没路就回溯到交叉口. #incl ...