专栏首页个人随笔Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 论 Java 中的内存分配

    ------------------------------------------------------------------------- Java内存...

    房上的猫
  • C# 操作 access 数据库

    private staticstring connStr = @"Provider= Microsoft.Ace.OLEDB.12.0;...

    房上的猫
  • C# 操作 access 数据库

    随笔: (1)   命名空间             using System.Data.OleDb; (2)   连接字符串             priv...

    房上的猫
  • Java基础--JDK的安装和配置弄懂 JRE、JDK、JVM 之间的区别与联系

      Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特...

    mukekeheart
  • Java_ 介绍_01

    Java语言为了实现上述所说的目标,使用了下面三个东西 1.Java 虚拟机(JVM) 2.垃圾回收机制 3.Java 运行环境(JRE) 接下来分别讲...

    酷走天涯
  • 谈一谈|JAVA入门简介

    计算机高级语言的型主要有编译型和解释型两种,而Java语言是两种类型的结合。Java首先利用文本编辑器编写Java源程序,源文件的后缀名为java;再利用编译器...

    算法与编程之美
  • Java这么优秀,我当然要深入啦

    今天开始,跃哥将和去年阅读《Head First 设计模式》差不多的模式来,和大家一起学习《Java 实战》的内容。通过前一本书,那本书跃哥二刷,所以读完之后对...

    程序员小跃
  • Java三大体系 JavaSE JavaEE JavaME

    Java2 Platform Standard Edition 的缩写,即 Java 平台标准版,涵盖 Java 语言的大多数功能,本书将以 JavaSE 平台...

    韩旭051
  • Java 程序员不容错过的开发趋势

    当涉及到代码时,有很多热门话题,并且与时俱进总是潮流所向。如果你想知道如何分离糟粕和精华,那么我们已经准备就绪,只欠各位阅读下文的东风。

    哲洛不闹
  • 【001期】 | JavaSE面试题(一):面向对象

    大家好,我是Java面试题库的提裤姐,今天这篇是JavaSE系列的第一篇,主要总结了面向对象概念中会出现的相关面试题,在后续,会沿着第一篇开篇的知识线路一直总结...

    java进阶架构师

扫码关注云+社区

领取腾讯云代金券