`
凌紫冥
  • 浏览: 25655 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java编程思想第四版——第三天

    博客分类:
  • Java
 
阅读更多
2012-03-21
47-54/913

1.12 并发编程
在计算机编程中有一个基本概念,就是在同一时刻处理多个任务的思想。

并发:在程序中,彼此独立运行的部分称之为线程,把问题切分成多个可独立运行的部分(任务),提高程序的响应能力。(之前称为多线程)最常见的并发例子:用户界面,通过使用任务,用户可以在按下按钮后快速得到一个响应,而不用被迫等待到程序完成当前任务为止。

并发需要注意的地方:共享资源。
解决:可以共享的资源,必须在使用期间被锁定。
整个过程:某个任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可以使用这项资源。

Java的并发是内置于语言中的。


1.13 Java与Internet

Java为什么如此重要,为什么它促使计算机编程语言向前迈进了革命性的一步:
从传统的程序设计观点看,问题答案视乎不太明显。尽管Java对于解决传统的单机程序设计问题非常有用,但同样重要的是,它解决了在万维网(WWW)上的程序设计问题。

1.13.1 Web是什么
1.客户/服务器计算技术
客户/服务器系统的核心思想:系统具有一个中央信息存储池(central repository of information),用来存储某种数据,它通常存在于数据库中,你可以根据需要将它分发给某些人员或机器集群。
概念的关键在于信息存储池的位置集中于中央,这使得它可以被修改,并且这些修改将被传播给信息消费者。
信息存储池、用于分发信息的软件以及信息于软件所驻留的机器或机群被总称为服务器。
驻留在用户机器上的软件与服务器进行通信,以获取信息、处理信息,然后将他们显示在被称为客户机的用户机器上。
事物处理:系统允许客户在服务器中插入新的信息,必须保证一个客户插入的新数据不会覆盖另一个客户插入的新数据,也不会在将其添加到数据库的过程中丢失。
问题:客户端软件支持多种不同类型的计算机和操作系统,复杂、费力。
性能问题:可能在任何时刻都有成百上千的客户向服务器发出请求,所以任何小的延迟都会产生重大影响。为了将延迟最小化,程序员努力减轻任务的负载,通常是分散给客户端机器处理,有时也会使用中间件将负载分散给在服务器端的其他机器。(中间件也被用来提高可维护性。)

客户/服务器计算技术大概占了所有程序设计行为的一半。

2.Web就是一台巨型服务器
Web实际上就是一个巨型客户/服务器系统,但稍微差一点,因为所有的服务器和客户机都同时共存于同一个网络中。不需要了解这些,因为所要关心的知识在某一时刻怎样连接到一台服务器上,并与之进行交互。

1.13.2 客户端编程
Python对Perl产生了重大的冲击,Perl被设计用来处理文本,并且是解释型语言,无论服务器的处理器和操作系统如何,都适合安装。Python比Perl更强大且更简单。

1. 插件
客户端编程迈出的最重要的一步就是插件(plug-in)的开发。

2. 脚本语言
插件引发了浏览器脚本语言(scripting language)的开发。通过使用某种脚本语言,可以将客户端程序的源代码直接嵌入到HTML页面中,解释这种语言的插件在HTML页面被显示时自动激活。
优点:先天相当易于理解,它们只是作为HTML页面一部分的简单文本,当服务器收到要获取该页面的请求时,它们可以被快速加载。
缺点:代码会暴露给任何人去浏览(或窃取)。
通常不会使用脚本语言去做相当复杂的事情,所以这个缺点并不太严重。

JavaScript:在Web浏览器不需要任何插件的情况下就可以得到支持。
JavaScript的错误处理的调试只能用一团糟来形容。
在Web浏览器内部使用的脚本语言实际上总是被用来解决特定类型的问题,主要是用来创建更丰富、更具有交互性的图形化用户界面(graphic user interface,GUI)。
脚本语言可以解决客户端编程中所遇到的百分之八十的问题,脚本语言提供了更容易、更快捷的开发方式,因此在考虑诸如java这样的更复杂的解决方案之前,先考虑脚本语言。

3. Java
剩下的百分之二十的问题解决方案:Java是处理他们最流行的解决方案。
Java是一种功能强大、安全的、跨平台的、国际化的编程语言,而且还在不断被扩展,以提供更多的语言功能和类库,能够优雅的处理在传统编程语言中很难解决的问题,如:并发、数据库访问、网络编程、分布式计算。
Java是通过applet以及使用java web start来进行客户端编程的。

4. 备选方案
Macromedia的Flex:允许创建基于Flash的与applet相当的应用。因为Flash Player在超过98%的Web浏览器上都可用(包含Windows,Linux和Mac操作系统上的浏览器),因此它被认为是事实上已被接受的标准。安装和更新Flash Player都十分快捷。
ActionScript语言是基于ECMAScript的,Flex使得我们在编程时无需担心浏览器相关性,因此,它远比javascript要吸引人的多。
对于客户端编程而言,这是一种值得考虑的备选方案。

5. .NET和C#
.NET平台大致相当于Java虚拟机(JVM,即执行java程序的软件平台)和java类库,而C#毫无疑问与java有类似指出。
问题:在Mono(在Linux上运行.NET)项目实现完成,及微软不会排斥其中的任何部分之前,.NET作为一种跨平台的解决方案仍旧是一场高风险的du博。

6. Internet与intranet
Web是最常用的解决客户/服务器问题的方案。
Intranet:仅限于特定公司的信息网络,称为intranet(企业内部网)。比Internet提供了更高的安全性,可以物理的控制对公司内部服务器的访问。
安装升级程序时所浪费的时间是迁移到浏览器方式上的最主要的原因,在浏览器方式下,升级是透明的、自动的。

解决客户端编程问题方案选择:进行性价比分析。认真考虑问题的各种限制,然后思考那种解决方案可以成为最短的捷径。为那些在程序开发中不可避免的问题提早做准备是一种积极的态度。


1.13.3 服务器端编程
Java已经取得巨大成功的因素之一。
过去,服务器端编程都是通过使用Perl、Python、C++或其他某种语言编写CGI程序实现的,但却造成了从此之后更加复杂的系统。
Servlet及其衍生物JSP,是许多开发网站的公司迁移到Java上的两个主要的原因,尤其是因为它们消除了处理具有不同能力的浏览器时所遇到的问题。


1.14 总结
过程型语言:数据定义和函数调用。
想了解此类程序的含义:需要通读函数调用和低层概念,以在脑海里建立一个模型。这正是我们在设计过程式程序时,需要中间表示形式的原因。它们使用的表示属于更加面向计算机而不是要解决的问题。

OOP:在过程型语言中找到的概念的基础上,添加了许多新概念。编写良好的java程序通常比过程型程序要简单的多,而且也易于理解的多。包含两部分内容的定义:用来表示问题空间概念的对象(而不是有关计算机表示方式的相关内容),以及发送给这些对象的用来表示在此空间内的行为的消息。
面向对象程序设计带给人们的喜悦之一就是:对于设计良好的程序,通过阅读它就可以很容易的理解其代码,通常,其代码也会少很多,因为许多问题都可以通过重用现有的类库代码而得到解决。

OOP和java也许不适合所有的人,重要的是要正确评估自己的需求,并决定java是否能够最好的满足这些需求,还是使用其他编程系统才是更好的选择。如果知道需求在可预见的未来会变得非常特殊化,并且java可能不能满足具体限制,就应该考察其他的选择。就算最终选择java为编程语言,也要理解还有那些选项可供选择,并且对为什么选择这个方向要有清楚的认识。

作者推荐的其他选择:Python,www.Python.org。

这一章完结,感觉里面很多的细节都是以前不曾注意到的,以前看第三版的时候没仔细的看过这章,现在看来真错过了不少东西。通过这一章,可以看出,处处透着一种思想,而不是简单的告诉what,更重要的是告诉你why、how,让你更清楚的明白事情的来龙去脉,处处提点着你遇到问题时应该如何去思考,如何去选择最优解决方案。Java只不过是一种编程语言,学习本书最重要的应该是这种思想,有了这种思想,这样不管以后学习其他新的语言或者是解决问题,都能最优的应付自如了。
分享到:
评论

相关推荐

    java 编程思想 英文版 第四版(非扫描pdf)

    《Thinking in Java》是Bruce Eckel创作的一部Java编程经典著作,英文版的第四版更是深受全球程序员喜爱的参考资料。这本书全面深入地介绍了Java语言,不仅适合初学者,也对有经验的程序员提供了宝贵的洞见。它以...

    java简明教程(第4版)——皮德常版.zip

    总的来说,这份《Java简明教程(第4版)——皮德常版》压缩包是一个全面的学习资源,适合那些希望快速入门或提高Java编程技能的人。通过源码实践、理论学习和习题训练,你可以逐步掌握Java语言,为未来的职业发展...

    java变成思想第四版中文版 练习题答案

    《Java编程思想》是 Bruce Eckel 的经典著作,第四版更是深受广大Java程序员喜爱。这本书深入浅出地讲解了Java语言的核心概念和技术,包括面向对象编程、类与对象、继承与多态、接口、异常处理、集合框架、泛型、...

    Java编程思想全面的答案

    第四版在原有的基础上进行了更新,加入了更多现代Java特性,如泛型、枚举、集合框架等。 1. **面向对象编程**:Java是一种纯面向对象的语言,理解类、对象、接口以及它们之间的关系至关重要。类是对象的蓝图,通过...

    thinking in java第三版简体中文

    ### Java编程思想第三版核心知识点解析 #### 一、引言 《Java编程思想》作为一本备受推崇的经典著作,自问世以来便深受广大Java开发者喜爱。本书由Bruce Eckel撰写,以其独特的视角和深入浅出的讲解方式,帮助无数...

    Thinking in Java -- 4th Edition

    ### 《用Java思考》第四版 —— Bruce Eckel 著 #### 书籍概述 本书为《用Java思考》的第四版,作者是Bruce Eckel,MindView公司的总裁。这本书自出版以来就受到了广大Java程序员的高度评价。本书并非扫描版本,...

    计算机类书籍——经典必读.docx

    - 《Java编程思想(第二/三版)》:Bruce Eckel的名著,帮助理解Java设计理念。 - 《Java 2核心技术 卷I&II》:Cay Horstmann的著作,覆盖Java核心技术和高级特性。 - 《Effective Java中文版》:Joshua Bloch的...

    Thinking In Java 3rd

    ### Java编程思想:掌握复杂度的艺术 #### 一、引言:从硬件到软件的革命 在《Thinking In Java 3rd》一书中,作者Bruce Eckel深入探讨了Java编程语言如何改变了软件开发领域的面貌。起初,Eckel对计算机革命的...

    数据结构与算法分析_java语言描述课后答案(英文)

    - **第三章:列表、栈和队列** —— 探讨了这些基础数据结构的实现方式和应用场景,例如数组和链表实现列表。 - **第四章:树** —— 深入讨论了树的各种类型(如二叉树、平衡树等)及其操作,如遍历、插入和删除。 ...

    algs4.zip算法(第四版)标准库

    《算法(第四版)标准库——algs4.zip深度解析》 在计算机科学领域,算法是解决问题的关键。《算法(第四版)》是由Robert Sedgewick和Kevin Wayne合著的一本经典教材,它深入浅出地讲解了各种基础及高级算法,并...

    Thinking in java第4版练习题答案

    第四版作为最新的版本,涵盖了从基础语法到高级特性的全面内容,旨在帮助读者理解并掌握Java编程的精髓。这本书的练习题是检验学习成果、提升编程技能的重要途径。以下是对这些练习题答案的一些关键知识点的解析: ...

    \Thinking_in_java_英文版.

    ### 《Thinking in Java》第四版 —— Bruce Eckel #### 书籍概述 《Thinking in Java》是由Bruce Eckel编写的一本经典的Java编程教程。本书不仅涵盖了Java的基础知识,还深入探讨了高级主题,旨在帮助读者理解...

    Java程序员面试宝典.pdf

    - **Java编程语言**:这是Java技术的基础,涉及语法、数据类型、控制结构等内容。 - **Java类文件格式**:深入了解Java编译后的字节码格式,有助于理解程序运行机制。 - **Java虚拟机(JVM)**:掌握JVM的工作原理,...

    thinking in JAVA

    ### 《Thinking in Java》——Java编程思想精粹 #### 一、书籍简介与评价 《Thinking in Java》是Java编程领域中的一本经典之作,由资深程序员Bruce Eckel撰写,自出版以来就受到了广大读者的高度评价。本书被誉为...

    Java学籍管理系统

    - **《Thinking in JAVA(Third Edition)》**:由Bruce Eckel编著,深入讲解Java编程思想,适合进阶学习。 - **《Java2核心技术(第6版)卷I:基础知识》**:由Cay S.Horstmann等人编写,覆盖Java核心概念和实践技巧...

Global site tag (gtag.js) - Google Analytics