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语言--程序设计导论
面向对象的软件构造导论实验课---IntelliJ IDEA软件实现---Java语言编写---单机版飞机大战。 这个是单机版飞机大战的完整文件包,解压后即可运行。 不过还是,建议大家还是去看我写的文章: ...
计算机算法导论--教师手册 英文原版 计算机专业必读书
自己的学习笔记资料整理,根据自己的考试重点来的。
算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar
云计算导论-习题答案-第六章-云计算与大数据(答案).docx
人工智能导论作业-用 PyTorch 实现的中文文本情感分类网络机器学习期末作业.zip个人98分期末大作业项目,代码完整下载可用。主要针对计算机相关专业的正在做课程设计和期末大作业的学生和需要项目实战练习的学习者。...
算法导论--编程中经典的经典,值得每一位程序员用心品读
“学习笔记”之《算法导论》----第六部分----图算法----第二十六章----最大流-附件资源
Thinking in Java 自学笔记——第二章 一切皆对象 个人原创,不喜勿喷。
华中科技大学--法学导论--期末复习资料
算法导论第三版练习题15.2-2的C++实现方案
这是算法导论第二版后面的8.3-4习题答案,整理过后的
导论--电子信息科学技术概述.pptx
大众媒介研究导论笔记
计算机导论--实验5.zip