1.13 Java与Internet
如果Java仅仅只是中重多的程序设计语言中的一种,你可能就会问:为什么它如此重要?尽管Java对于解决传统的单机程序设计问题非常有用,但同样重要的是,它解决了在万维网(WWWW)上的程序设计问题。
1.13.1.1客户/服务器计算技术
客户/服务器系统的核心思想是:系统具有一个中央信息存储池(central repository of information),用来存储某种数据,它通常存在于数据库中,你可以根据需要将它分发给某些人员或机器集群。
客户/服务器计算技术的基本概念并不复杂。问题在于你只有单一的服务器,却要同时为多个客户服务。如果客户端软件发生变化,那么它必须被重新编译,调试并安装到客户端机器上,事实证明这比想象的要更加复杂与费力。算起来客户/服务器计算技术大概占了所有程序设计行为的一半。
1.13.1.1 Web就是一台巨型服务器
Web实际上就是一个巨型客户/服务器系统,苏有的服务器和客户机都同时共存于同一个网络中。你索要关心的只是在某一时刻怎样连接到一台服务器上,并与之进行交互。
最初只有一种很简单的单向过程:你对某个服务器产生一个请求,然后它返回给你一个文件,你的机器上的浏览器软件根据本地机器的格式来解读这个文件。
Web浏览器向前跨进了一大步,它包含了这样的概念:一段信息不经过修改就可以在任意幸好的计算机上现实,然而,最初的浏览器仍然相当原始,很快就因为加诸于其上的种种需要而陷入困境。
为了解决这个问题,人们采用了一种方法:通过引入在客户端浏览器中运行程序的能力来解决,这被称为“客户端编程”。
1.13.2 客户端编程
Web最初的“服务器-浏览器”设计是为了能头提供交互性的内容,但是其交互性完全由服务器提供。服务器产生Html(HyperText Markup Language)静态页面交给客户端解释。而服务器端通过CGI(common gateway interface)接收客户端传来的简单表单数据利用Perl,python等语言进行处理。所有的运算处理工作全部都会由服务器端完成,这个过程不仅很慢,而且不太优雅。
问题的解决方法就是客户端编程。客户端编程意味着Web浏览器能用来执行任何它可以完成的工作,使得返回给用户的结果更加迅捷,而且使得你的网站更加具有交互性。客户端编程的问题和方法总结如下:
- 插件:客户端编程所玩出的最重要的一步就是插件( plug-in)的开发。
- 脚本语言:插件引发了浏览器脚本语言(scripting language)的开发。通过使用某种脚本语言,你可以将客户端程序的源代码直接嵌入到HTML页面中,解释这种语言的插件在HTML页面被现实时自动激活。如果你期望有一种脚本语言在Web浏览器不需要任何插件的情况下就可以得到支持,那么非JavaScript莫属。脚本语言主要是用来创建更丰富,更具有交互性的图形化用户界面(graphic user interface GUI)。
- Java:Java是通过applet以及使用Java Web Start来进行客户端编程的。
- 备选方案:但是实际上Java applet始终没有得到大规模应用。作为备选方案,Macromedia的Flex,它允许你创建基于Flash的与applet相当的应用。它远比JavaScript要吸引人得多。
- .NET和C#:.NET平台大致于相当于Java虚拟机和Java类库,而C#毫无疑问与Java有类似指出。目前,.NET主要受攻击的地方和人们所关心的最重要的问题是,微软是否允许将它完全地移植到其他平台上。
- Internet与Intranet:略
1.13.3服务器端编程
前面的讨论忽略了服务器端编程的话题,它是Java已经取得巨大成功的因素之一。当提出对服务器的请求后,会发生什么呢?大部分时间,请求只是要求“给我发送一个文件”。更为复杂的对服务器的请求通常涉及数据库事物。过去,服务器端编程都是通过使用Perl,Python,等语言编写CGI程序而实现的,但却造成了从此之后更复杂的系统。其中就包括基于Java的Web服务器,它让你用Java编写被称为servlet的程序来实现服务器端编程。
1.14 总结
因为OOP在你能够在过程型语言中找到的概念的基础上,又添加了许多新概念,所以你可能会自然地假设:由此而产生的Java程序比等价的过程型程序要复杂得多。但是你会感到很惊喜:编写良好的Java程序通常比过程型程序要简单的多,而且也易于理解得多。你看到的只是有关下面两部分内容的定义:用来表示问题空间概念的对象,以及发送给这些对象的用来表示在此空间内的行为的消息。面向对象程序涉及带给人们的喜悦之一就是:对于设计良好的程序,通过阅读它就可以很容易地理解其代码。通常,其代码也会少很多,因为许多问题都可以通过重用现有的类库代码而得到解决。
本文首发自:对象导论笔记-第六天-蜘蛛网间
分享到:
相关推荐
C语言学习导论-笔记-C语言学习
电子信息专业 - 考研复试笔记分享(软件工程导论-第六版 + 管理信息系统-马慧) 包括: 软件工程导论-第六版 知识点 管理信息系统-马慧 知识点 编译原理 主要知识点 计算机网络 主要知识点 数据库 知识点及常规操作
Thinking in Java 自学笔记——第一章 对象导论 本章节总结了面向对象程序设计(Object-oriented Programming, OOP)的基本概念和原则,以帮助读者更好地理解 Java 编程语言。以下是对标题、描述、标签和部分内容的...
面向对象的软件构造导论实验课---IntelliJ IDEA软件实现---Java语言编写---单机版飞机大战。 这个是单机版飞机大战的完整文件包,解压后即可运行。 不过还是,建议大家还是去看我写的文章: ...
### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...
算法导论第三版练习题15.2-2的C++实现方案
《算法导论-Java》是计算机科学领域的重要教材,它深入浅出地介绍了算法的设计、分析和实现。这本书对于任何想要提升编程技能,尤其是Java程序员来说,都是不可或缺的资源。算法是解决复杂问题的关键,它们是程序的...
人工智能导论作业-用 PyTorch 实现的中文文本情感分类网络机器学习期末作业.zip个人98分期末大作业项目,代码完整下载可用。主要针对计算机相关专业的正在做课程设计和期末大作业的学生和需要项目实战练习的学习者。...
《算法导论--教师手册》是一本针对计算机科学专业学生及教师的重要参考书籍,由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest和Clifford Stein四位作者共同编撰,第二版由Thomas H. Cormen、Clara Lee...
算法导论--编程中经典的经典,值得每一位程序员用心品读
“学习笔记”之《算法导论》----第六部分----图算法----第二十六章----最大流-附件资源
- **第六章:堆排序** - **6.1 堆的定义**:阐述了堆的性质及其在堆排序中的作用。 - **6.2 维护堆属性**:描述了如何保持堆的数据结构满足其基本性质。 通过上述总结可以看出,《算法导论》(第三版)是一本全面...
《人工智能导论》是深入理解和掌握人工智能核心概念与技术的重要教材。这门学科的起源可以追溯到1956年,由斯坦福大学教授约翰·麦卡锡在一次学术会议上首次提出“人工智能”这一概念,标志着AI作为一个独立学科的...
计算机科学导论是一门基础且重要的课程,旨在引导学生深入理解计算机系统的工作原理以及如何用计算机解决问题的思想与方法。董荣胜教授的这门课程涵盖了广泛的计算机科学基础知识,包括算法设计、数据结构、编程语言...
机器学习导论作业-基于matlab实现三层卷积神经网络实现手写数字识别源码.zip 【优质项目推荐】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答...
《地理信息系统导论--陈建飞》是一本深入探讨GIS技术的专业著作,旨在为读者提供全面的GIS理论知识和实践应用。GIS,全称为Geographic Information System,它整合了多种科学领域,包括计算机科学、信息科学、测绘...
计算机导论--实验5.zip
工程导论--项目开发方案.pdf