第1章 Java程序设计概述
1.1 Java程序设计平台
具备使人赏心悦目的语法和易于理解的语言,与其余许多优秀语言同样,Java知足这些要求.
可移植性
垃圾收集
提供大型的库
若是想要有奇特的绘图功能,网络链接功能和数据库存取功能无需本身动手编写代码
功能齐全的出色语言
高质量的执行环境,提供庞大的库。集多种优点于一身
注:
白皮书:www.oracle.com/technetwork/java/langenv-140151.html
11个关键术语的论述:http://horstmann/corejava/java-an-overview/7Gosling.pdfhtml
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
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编程颇有帮助。正则表达式
~~~~~~~~~~★房上的猫★~~~~~~~~~~数据库