第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编程很有帮助。

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

转载于:https://www.cnblogs.com/lsy131479/p/8176583.html

Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述相关推荐

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

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

  2. 基于《java2实用教程》的java知识点复习整理【第一章——java入门】

    第一章--java入门 一.知识结构框架 二.知识点详解 1.java特点:编写一次,随处运行 简单 Java要比C++简单,C++中许多容易混淆的概念,被Java弃之不用了,或者以一种更清楚更容易理 ...

  3. Java EE入门教程系列第一章Java EE的概述(一)——初识Java EE

    题外话:这个系列是为了记录学习Java EE的轨迹,也算是读书笔记,是我先看完了一遍教程对相关概念有了一个大体印象以后准备再重头细看一遍时同步写的博客.感想就是其实以前课堂上老师教的课都是很有作用的, ...

  4. Java反射——反射机制问题——第一章

    Java反射--反射机制问题--第一章 Java反射--Class类--第二章 Java反射--类加载--第三章 Java反射--反射获取类的结构信息--第四章 文章目录 1:一个需求引出反射 2:反 ...

  5. Java 程序性能优化《第一章》Java性能调优概述 1.4小结

    Java 程序性能优化<第一章>1.4小结 通过本章的学习,读者应该了解性能的基本概念及其常用的参考指标.此外,本章还较为详细的介绍了与性能调优相关的两个重要理论--木桶原理以及Amdah ...

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

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

  7. Java极速入门系列:第一章Java概述、Java环境、IDEA开发工具

    Java极速入门-第一章Java概述.Java环境.IDEA开发工具 一.什么是Java 1.好的编程语言的特性 2.Java的特点 3.Java的运行机制 4.Java的三大体系 5.Java环境 ...

  8. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

  9. 第一章 Java环境搭建、IDEA、Java语言

    JavaSE基础大纲: 一. Java环境搭建.IDEA.Java语言 二.Java语法.运算符.随机数 三.分支.循环.控制关键字 四.数组详解.案例训练 五.方法详解.案例训练 六.面试常见编程案 ...

最新文章

  1. WebSocket + Spring消息推送服务的快速实现
  2. html5中meter讲解_Java中的得墨meter耳定律–最少知识原理–实际示例
  3. 实现Linux系统外部和容器内部的文件传输
  4. oracle 字段以逗号结尾的更新 数据库_Oracle数据库某个字段的值为逗号分隔的多个值组成的字符串,以一个多选的下拉框进行查询...
  5. 月薪三万,依然买不起房
  6. 和baby的区别_姜涛状告白衣山猫?小伊伊有剧本?惟Baby整容?阿彩照骗?De劈腿?...
  7. hbase启动后HMaster进程自动关闭
  8. Intel 实习mentor布置问题1
  9. 自然语言处理——基于预训练模型的方法——第1章 绪论
  10. 郑州计算机安全协会安全员考试成绩,安全员C证考试结果查询
  11. 基于MATLAB GUI的指纹识别系统
  12. 活血化瘀药题库【1】
  13. 自学基础1_linux_1_man命令详解
  14. 财报发布后分红1.32亿美元 陌陌为何稳居陌生人社交上位圈?
  15. 计算机辅助设计论文结论,计算机辅助设计在平面设计中存在的问题论文
  16. shtml 是什么?
  17. LDA-线性判别分析(一)预备知识
  18. jmeter模拟mysql长连接_jmeter链接mysql数据库
  19. 对于盈帆报表设计器的介绍(报表工具)
  20. 学习->C++篇五:模板与STL简介

热门文章

  1. Android禁止截屏
  2. WSTMart 1.4.2 发布,让 bug 不再飞
  3. SketchUp + Photoshop:别墅平面图制作教程
  4. Unity3d之-使用BMFont制作美术字体
  5. python实现随机密码生成
  6. 来晚了,秋招五投大厂,成功拿下三家Offer,最终入职美团,分享我的美团1-4面(Java岗)
  7. android 项目编译略过jni目录,在 flutter 上使用 c 代码 - (二) 无源码的项目
  8. 使用 mv 命令移动文件夹
  9. 30人围成一圈的小游戏。c语言
  10. 以考代评职称需要聘任嘛_如何以正确的方式聘用:工程师对技术招聘的看法