Java 核心技术(基础知识)第11版外文翻译资料

 2022-01-26 09:01

Java核心技术(基础知识)第11版

作者 :Cay S. Horstmann

Chapter 1

An Introduction to Java

In this chapter

1.1 Java as a Programming Platform

1.2 The Java “White Paper” Buzzwords

1.3 Java Applets and the Internet

1.4 A Short History of Java

1.5 Common Misconceptions about Java

The first release of Java in 1996 generated an incredible amount of excitement, not just in the computer press, but in mainstream media such as the New York Times, the Washington Post, and BusinessWeek. Java has the distinction of being the first and only programming language that had a ten-minute story on National Public Radio. A $100,000,000 venture capital fund was set up solely for products using a specific computer language. I hope you will enjoy a brief history of Java that you will find in this chapter.

1.1 Java as a Programming Platform

In the first edition of this book, my coauthor Gary Cornell and I had this to write about Java: “As a computer language, Javarsquo;s hype is overdone: Java is certainly a good programming language. There is no doubt that it is one of the better languages available to serious programmers. We think it could potentially have been a great programming language, but it is probably too late for that. Once a language is out in the field, the ugly reality of compatibility with existing code sets in.”

Our editor got a lot of flack for this paragraph from someone very high up at Sun Microsystems, the company that originally developed Java. The Java language has a lot of nice features that we will examine in detail later in this chapter. It has its share of warts, and some of the newer additions to the language are not as elegant as the original features because of compatibility requirements.

But, as we already said in the first edition, Java was never just a language. There are lots of programming languages out there, but few of them make much of a splash. Java is a whole platform, with a huge library, containing lots of reusable code, and an execution environment that provides services such as security, portability across operating systems, and automatic garbage collection.

As a programmer, you will want a language with a pleasant syntax and comprehensible semantics (i.e., not C ). Java fits the bill, as do dozens of other fine languages. Some languages give you portability, garbage collection, and the like, but they donrsquo;t have much of a library, forcing you to roll your own if you want fancy graphics or networking or database access. Well, Java has everything—a good language, a high-quality execution environment, and a vast library. That combination is what makes Java an irresistible proposition to so many programmers.

1.2 The Java “White Paper” Buzzwords

The authors of Java wrote an influential white paper that explains their design goals and accomplishments. They also published a shorter overview that is organized along the following 11 buzzwords:

1. Simple

2. Object-Oriented

3. Distributed

4. Robust

5. Secure

6. Architecture-Neutral

7. Portable

8. Interpreted

9. High-Performance

10. Multithreaded

11. Dynamic

In the following subsections, you will find a summary, with excerpts from the white paper, of what the Java designers say about each buzzword, together with a commentary based on my experiences with the current version of Java.

Note

The white paper can be found at

www.oracle.com/technetwork/java/langenv-140151.html.

You can retrieve the overview with the 11 buzzwords at

http://horstmann.com/corejava/java-anoverview/7Gosling.pdf.

1.2.1 Simple

We wanted to build a system that could be programmed easily without a lot of esoteric training and which leveraged todayrsquo;s standard practice. So even though we found that C was unsuitable, we designed Java as closely to C as possible in order to make the system more comprehensible. Java omits many rarely used, poorly understood, confusing features of C that, in our experience, bring more grief than benefit.

The syntax for Java is, indeed, a cleaned-up version of C syntax. There is no need for header files, pointer arithmetic (or even a pointer syntax), structures, unions, operator overloading, virtual base classes, and so on. (See the C notes interspersed throughout the text for more on the differences between Java and C .) The designers did not, however, attempt to fix all of the clumsy features of C . For example, the syntax of the switch statement is unchanged in Java. If you know C , you will find the transition to the Java syntax easy.

At the time Java was released, C was actually not the most commonly used programming language. Many developers used Visual Basic and its drag-and-drop programming environment. These developers did not find Java simple. It took several years for Java development environments to catch up. Nowadays, Java development environments are far ahead of those for most other programming languages.

Another aspect of being simple is being small. One of the goals of Java is to enable the construction of software that can run stand-alone on small machines. The size of the basic interpreter and class support is about 40K; the basic standard libraries and thread support (essentially a self-contained microkernel) add another 175K.

This was a great achievement at the time. Of course, the library has since grown to huge proportions. There is now a separate Java Micro Edition with a smaller library, suitable for embedded devices.

1.2.2 Object-Oriented

Simply stated, object-oriented design is a programming technique that focuses on the data—objects—and on the interfaces to those objects. To make an analogy with carpentry, an “object-oriented” carpenter would be mostly concerned with the chair he is building,

全文共25567字,剩余内容已隐藏,支付完成后下载完整资料


Java 核心技术(基础知识)第11版

作者 :Cay S. Horstmann

第1章 Java简介

在这一章当中包含以下五部分内容

1.1作为编程平台的Java

1.2 Java“白皮书”术语

1.3 Java Applet和Internet

1.4 Java的简史

1.5关于Java的常见误解

1996年Java的第一个版本就产生了令人难以置信的轰动,这不仅仅是在计算机出版界,还包括《纽约时报》、《华盛顿邮政》和《商业周刊》这些主流媒体。 Java具有第一个也是唯一一个在国家公共广播电台平台上用了十分钟进行介绍的编程语言。 一笔1亿美元的风险投资基金将全部用来支持这种特定计算机语言开发的产品。 我希望你能够享受本章中所介绍的Java简史。

1.1作为编程平台的Java

在本书的第一版中,我和我的合著者Gary Cornell是这样描述Java的:“作为一种计算机语言,Java的炒作过度了:Java确实是一种很好的编程语言。毫无疑问,作为一名严谨的程序员,Java是一个更好的选择。我们认为它可能是一种很棒的编程语言,但它可能为时已晚。一旦语言应用于该领域,与现有代码的兼容性问题就是一个很难看的局面。”

我们的编辑从最初开发Java语言的Sun公司里的一位高层那里得到了很多类似于这一段的内容。 Java语言有很多我们将在本章后面详细介绍的一些很好的特性。由于兼容性这个问题确实很严峻,因此还是有一些累赘被添加到语言中,这就使得Java并不如设计上的那么完美无瑕。

但是,正如我们在第一版中已经说过的那样,Java从来就不仅仅是一种语言。此前有很多编程语言出现,但没有一种能够引起如此大的轰动。 Java是一个整体平台,有一个巨大的库,其中包含大量可重用的代码和一个提供诸如安全性,跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。

作为一名程序员,你需要一种令人赏心悦目的语法且易于理解语义的语言(而不是像C 那样)。与其他几种优秀语言一样,Java也符合要求。一些语言为你提供可移植性,垃圾收集等,但它们没有一个庞大的库,如果你想要奇特的图形或网络或数据库,就必须自己动手构建。好吧,Java拥有一切—— 一种优秀的语言,一个高质量的执行环境,和一个庞大的库。这种组合使得Java对很多程序员有着不可抗拒的吸引力。

1.2 Java“白皮书”术语

Java的作者写了一篇有影响力的白皮书,解释了他们的设计目标和成就。他们还发布了一份用以下11个术语进行组织的简短的概述:

1.简单性 2.面向对象

3.分发性 4.健壮性

5.安全性 6.体系结构中立

7.便携式 8.解释型

9.高性能 10.多线程

11.动态性

在以下小节中,你将找到白皮书中每个术语的概述, 包括Java设计师们对每个术语的论述,以及我基于使用当前版本的Java的经验之谈。

注意

白皮书可以在www.oracle.com/technetwork/java/langenv-140151.html 上找到。

你可以使用11个术语在以下网站上检索概述

http://horstmann.com/corejava/java-anoverview/7Gosling.pdf。

1.2.1简单性

我们想要构建一个可以轻松编程的系统而不需要太多的深奥培训并且要符合当今的标准惯例。因此,我们即使发现了C 是不合适的,但是我们设计Java时还是尽可能地接近C ,这样才能使系统更易于理解。 Java省略了许多很少使用,很难理解的,令人困惑的C 特性,根据我们的经验,这些特性带来的麻烦远远多过好处。

实际上,Java的语法是C 语法的的纯净版本。这里没有必要的头文件,指针算术(甚至是指针语法),结构,联合,运算符重载,虚拟基类等等。(参见贯穿整个文章的C 注释,这里面有着Java和C 之间差异的更多信息)。但是,设计师并没有试图修复C 中所有不适合的特性。例如,switch的语法声明在Java中就没有变化。如果你了解C ,你会发现转用Java语法很容易。

在Java发布时,C 实际上并不是最常用的编程语言。许多开发人员使用Visual Basic及其拖放式编程环境,而这些开发人员并没有发现Java的简单性。 Java开发环境花了好几年时间才赶上其他编程语言。如今,Java开发环境已经遥遥领先于大多数其他编程语言。

简单的另一个方面是小。 Java的目标之一是开发构建可以在小型机器上独立运行的软件。基本的解释器以及类支持大约40K,基本标准库和线程支持(基本上是一个独立的微内核)再增加175K。

这在当时是一项伟大成就。当然,类库已经发展得相当庞大了。现在有一个单独的具有较小类库的Java Micro Edition用于嵌入式设备。

1.2.2面向对象

简单地说,面向对象设计是一种的编程技术。它专注于数据对象和这些对象的接口上。类比于木工,一个“面向对象”的木匠将主要关注他制作的椅子,其次是用来制作它的工具;一个“非面向对象的”木匠会主要考虑他的工具。Java的面向对象的能力本质上与C 一样的。

在开发Java时,面向对象已经非常成熟。Java的面向对象特性与C 的相当。Java和C 两者之间的主要区别在于多重继承,Java已经用更简单的接口概念取而代之。Java比C 具有更丰富的运行时内省能力(在第5章中讨论)

1.2.3分布式

Java有一个扩展的例程库,用于处理像HTTP和FTP这类的TCP / IP协议。 Java应用程序可以通过URL打开和访问网络上的对象,就好像与访问本地文件系统时一样容易。

如今,人们认为这是理所当然的——但在1995年,从C 或Visual Basic程序连接到Web服务器是一项重大任务。

1.2.4健壮性

Java旨在编写具有多方面可靠性的程序。 Java非常重视早期可能出现的问题的检查,后期动态的(运行时)检查,并消除容易出错的情况hellip;hellip; Java和C / C 之间最大的区别是Java有一个指针模型消除了重写内存和破坏数据的可能性。

Java编译器检测到许多在其他语言中只会在运行时出现的问题。至于第二点,对于任何花费数小时来检查由于指针bug而引起内存冲突的人来说将非常满意Java这方面。

1.2.5安全性

Java适用于网络/分布式环境。为此,很大的精力都放在了安全上。 使用Java可以构建无病毒、防篡改的系统。

从一开始,Java被设计为能够防范各种袭击,其中包括他们:

  • 运行时堆栈溢出——蠕虫和病毒的常见攻击
  • 在自己的处理空间之外破坏内存
  • 未经许可读取或写入文件

最初,Java对下载代码的态度是“带上它!”。不受信任的代码是在沙盒环境中执行的,它不会影响主机系统。用户可以确保没有任何不好的事情发生,因为无论Java代码来自哪里来自,都永远无法逃离沙盒。

但是,Java的安全模型很复杂。在Java的第一个版本发布之后不久,普林斯顿大学的一组安全专家发现了开发套件微小的bug,这些bug允许不受信任的代码攻击主机系统。

最初,安全漏洞很快得到修复。不幸的是,随着时间的推移,黑客变得非常擅长在实施的安全架构中发现微妙的缺陷。Sun公司,和之后的Oracle公司,很难跟上错误修复工作。

经过多次引人注目的攻击后,浏览器厂商和Oracle越来越谨慎。 Java浏览器插件不再信任远程代码,除非它是经过数字签名的并且用户已同意其执行。

注意

尽管事后看来,Java安全模型并不像最初设想的那样成功,Java也是远远领先那个时代。来自微软的竞争代码交付传输机制仅依靠数字签名来保证安全性。很显然这还不够:因为微软产品的任何一个用户都可以证明,来自知名供应商的程序会崩溃并造成损害。

1.2.6体系架构中立

编译器生成一个体系结构中立的目标文件格式。编译后的代码在存在Java运行时系统的情况下,可在许多处理器上执行。该Java编译器通过生成和特定的计算机架构无关的字节码指令来完成此操作。同时,精心设计的字节码既容易在任何机器上进行解释也易于在运行时轻松转换为本地机器的代码。

为“虚拟机”生成代码在当时并不是一个新想法。像Lisp,Smalltalk和Pascal这些程序设计等语言已经使用了这种技术很多年。

当然,解释虚拟机指令比全速运行机器指令慢。但是,虚拟机可以选择翻译最频繁执行的字节码序列到机器代码中—— 一个称为即时编译的过程。

Java的虚拟机还有另一个优势。它增加了安全性,因为它可以检查指令序列的行为。

1.2.7便携式

与C和C 不同,Java没有“依赖于实现”的方面。基本数据类型的大小有关算法都做了明确的说明。

例如,Java中的int始终是32位整数。在C / C 中,int可以表示16位整数,32位整数或编译器供应商喜欢的任何其他大小。唯一的限制是int类型必须至少具有与short int一样多的字节,并且不能具有比long int更多的字节。Java具有固定大小的数字类型消除了代码移植时令人头痛的主要问题。二进制数据以固定格式存储和传输,从而消除关于字节排序的混淆。字符串是以标准Unicode格式保存的。

作为系统一部分的库定义了可移植接口。例如,有一个抽象的Window类给出了在UNIX,Windows和Macintosh环境下的实现。

Window类的例子可能选择不是很恰当。任何曾经尝试过的人都知道,实现一种在Windows,Macintosh和十种UNIX版本上看起来很好的用户界面是一种巨大的努力。 Java 1.0做出了巨大的努力,提供一个简单的工具包,在许多工具包上提供了通用的用户界面元素平台。不幸的是,结果是一个经过大量工作的类库,在不同的系统平台上都难以让人接受。那个初始用户界面工具包尽管一直在不断迭代,跨平台的可移植性仍然是一个问题。

但是,对于与用户界面无关的所有内容,Java类库都做得很好,让你以独立于平台的方式工作。您可以处理文件,表达式,XML,日期和时间,数据库,网络连接,线程等等,而无需关心底层操作系统。不仅是你的项目的可移植,而且Java API通常比本机API质量更高。

1.2.8解释型

Java解释器可以直接在引入了解释器的任何机器上执行Java字节码。由于链接是一个增值前简便的过程,因此,开发过程也变得更加迅速和探索。

这是一个真正的延伸。任何使用过Lisp,Smalltalk,Visual Basic,Python,R或者Scala的人都知道什么是“快速和探索性”的开发过程。你尝试了一些东西,而后立即看到结果。 Java的前20年的存在,开发环境并没有关注那种体验。直到Java 9才开始使用jshell工具支持快速和探索性编程。

1.2.9高性能

虽然解释后的字节码的性能通常是足够的,但在有些场合下需要更高效的性能。字节码可以(在运行时)快速地翻译成运行应用程序所在的特定CPU的机器代码。

在Java的早期,许多用户不同意Java的性能基本上是绰绰有余的说法。然而,今天,即时编译器变得如此优秀,以至于它们能够与传统编译器相竞争,在某些情况下甚至优于传统编译器,其原因是它们有更多可用的信息。例如,即时编译器可以监视那些频繁执行的代码并优化该代码以提高速度。更多复杂的优化是消除(或“内联”)函数调用。即时编译器知道已加载哪些类。它可以基于当前加载的类集合,特定的函数永远不会被覆盖的情况下使用内联,并且如有必要,它还可以撤消该优化。

1.2.10多线程

多线程的好处是更好的交互响应性和实时性行为。

如今,我们关心并发性,因为摩尔定律已经结束。我们只需要更多的处理器,而不是更快的处理器,我们必须让它们持续不断地工作。然而,当你看看大多数编程语言,他们对这个问题表现出令人震惊的无视。

Java远远领先于时代。它是第一种支持并行编程的主流语言。正如你从白皮书中看到的,它的动机有点不同。当时,多核处理器是奇特的,但网络编程刚刚开始,处理器花费大量时间等待服务器的响应。需要并发编程来确保用户界面不会冻结。

并发编程绝非易事,但Java已经做得很好,使其易于管理。

1.2.11动态性

在许多方面,Java是比C或C 更为动态的语言。它的设计是为了适应不断变化的环境。类库可以自由地添加新方法和实例变量,而不会对其客户机产生任何影响。在Java中,查找运行时类型信息很简单。

在需要将代码添加到正在运行的程序的情况下,动态性是一个重要的特性。一个主要的例子是从Internet上下载的在浏览器中运行的代码。

在C或C 中,这确实是一个很大的挑战,但是Java设计者充分意识到动态语言使得开发一个运行程序变得很容易。他们的成就是将这

全文共9357字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[501]

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。