编程平台

2024-07-11

编程平台(共7篇)

编程平台 篇1

摘要:计算机语言是计算机平台的主要组成部分, 计算机语言在一定程度上可以实现软件的开发以及一些重要功能的实现。计算机技术发展至今, 除了基本的硬件技术之外, 更多的都是属于计算机的软件技术。而软件技术中, 计算机的语言是其核心组成部分。其中, 应用最为广泛, 平台跨越性最好的计算机语言是java。Java的最大优势在于其可以实现跨平台编程, 并具有非常良好的平台特性。本文重点分析java语言的语言特点, 以及在计算机编程过程中, java语言以及java编程平台的优势。

关键词:java,编程,平台,优势

1 引言

计算机语言, 是计算机编程技术中最为核心的组成部分。不同的编程语言对应着不同的编程环境, 例如C语言就是有着C语言自己的编程环境。对于计算机语言的发展历程而言, 其最早的为汇编语言, 也是最为简单和基础的计算机语言。随着计算机语言的不断发展, 出现了功能与兼容性更强的C语言。C语言虽然功能强大, 但是却存在一定的缺陷。其语言的可读性和概括性不强。实现一个功能, 则需要非常繁杂的C语言代码。因此, 后来又出现了面向对象的程序设计语言, 就是C++。面向对象程序设计语言虽然能够解决C语言存在的弊端, 但是却无法实现跨平台的使用。因此, 在此基础上, 技术人员开发了java语言, java最大的优势就在于其能实现跨平台编程, 并能够囊括多个计算机语言的特点。本文将重点分析java语言的特点, 并分析其平台的优势。

2 Java语言简析

了解一个计算机语言平台的优势, 首先要对计算机语言进行彻底地了解。那么首先需要了解的就是java语言的概念及其发展的历史。

从其语言的类别上人事java, java是可以实现跨越平台的一种面向对象的程序设计语言, 开发之初, 存在java程序设计与java语言编译平台。其优势在于能够实现可跨越性以及很强的囊括性, 对于软件以及大型的游戏等的开发, 都有着非常良好的语言支持环境。其未来的发展前景广阔, 受到业内人士的普遍认可。

2.1 java编程语言的开发

为什么要开发java程序设计语言呢?纵观计算机语言的发展历史, 可以比较容易了解java程序设计语言出现的原因。计算机最初的应用是数学计算, 大规模的数学计算需要强大的数据计算机系统。具有强大计算能力的中央处理器, 也就是人们常说的CPU。而随着计算机的生活化普及化, 用户对于计算机的使用有着各种各样的需求。因此, 软件开始出现。最早的汇编语言, 就是计算机最为基础的语言。随后, 出现了最为经典的计算机语言——C语言。C语言可读性强, 并且覆盖面广泛, 具有强大的编译功能, 从而实现了计算机的软件革命。软件的发展越来越快, 开始逐渐超越了硬件的发展。随着人们要求的不断提高, C语言由于过于单一化, 无法适应于大规模的模块化编程。因此, 面向对象程序设计语言就应运而生。最早出现的就是C++面向对象程序设计语言, 其可以实现构造类, 并通过继承等方式, 进行大规模的编程。C++基本成为计算机的顶级高级语言, 承载着计算机的主要软件开发。但是, 在人们的生产和生活中, 操作系统开始不断推出。目前, 比较常用的有微软的windows操作系统, 苹果公司的ios操作系统, 还有就是用于软件开发的Linux操作系统。以往的计算机语言最大的弊端就在于, 计算机语言需要编译环境。也就是计算机语言要有编译平台, 才能实现软件的开发功能。但是, 计算机操作系统的多样化, 导致了C++这样的高级语言, 在不同操作系统下会出现bug, 从而影响软件开发。因此, 亟需一种能够可以跨越平台的一种计算机语言。所以, 在不断的开发过程中, java语言得以应用。Java不仅仅可以实现跨越平台, 更能够在一定程度上实现移植, 囊括了C语言以及C++等高级语言的特点。并且, java也具有面向对象的性质, 因此java可以用于大型的编程。以上就是java语言开发的历程, 因为有需求, 所以才应运而生。

2.2 java语言的以及java编译平台的主要优势分析

Java的语言的优势比较突出, 并且能够实现多种软件的开发和设计。从我们日常生活中, 就可以得以体现。例如, 大规模的游戏平台, 满足了人们对于游戏的渴望。其中多数游戏平台就是通过java编程实现的, 网页设计中也都需要使用java语言编译平台。其中使用java的主要原因在于, 第一是java的可移植性好。游戏一般都需要具有可移植性, 因此通过java进行编译, 对于游戏的效果体现更好一些。第二, 人们不断的追求方便快捷。游戏的平台也从计算机开始向手机发展, 从而让人们在使用手机的时候也能畅游游戏的乐趣。因此, java游戏是最先被人们熟知的。Java语言的可移植性, 从计算机到手机的转变, 就是对于java语言优势的最好诠释。

对于java的编译平台, 其优势的体现主要是在多元化方面。例如, 在进行软件开发的时候, 人们习惯了使用linu操作系统, Linux操作系统被称为是软件开发的基础平台。但是, 由于大多数人们比较习惯使用windows操作系统, 因此就会造成人们更习惯使用windows平台进行软件的开发与测试, 从而查找bug。如果采用C++等面向对象的程序语言, 虽然可以实现大规模编程以及软件开发等。但是, 从平台的移植上分析, C++的局限性太大。只能够活跃在windows操作系统中, 而脱离了操作系统, 其编辑环境就无法存在。对于java而言, 通过使用任何的操作系统进行编译, 都可以实现。并且, 在一定程度上java实现了编译的简易化。同样的软件效果, java需要进行编译的内容就非常简单, 而且容易理解。因此, 从其平台的优势角度分析, 可移植性占据了最大的优势, 并能够实现多平台的编译与测试。

java语言的以及java编译平台的主要优势, 集中体现在其能够囊括高级语言的优点, 并且能够克服其缺点, 从而达到高效编译的目的。

3 结语

Java作为计算机语言的一种, 能够建立在C语言以及C++的基础上发展起来, 足以证明java有着其语言的优势以及编译平台的优势。对于C语言以及C++而来, 两者虽然都是高级语言, 但是却都无法实现跨越平台。因为微软的windows系统应用过于广泛, 因此C语言以及C++的编译环境都是建立在windows操作系统下的。而大多数的软件开发平台都是Linux, 因此就造成了编译上的缺陷。此外, C语言和C++虽然都是高级语言, 但是其编译方法并不是最佳的。也就是其资源的利用上, 并不十分有效。而java语言能实现可移植的条件下, 囊括高级语言中面向对象的特点, 从而最大限度实现计算机语言的利用最大化。因此, java语言以及其编译平台最大的优势在于不仅仅能够实现高级语言的特性, 并且具有面向对象的特性, 从而可以实现大规模编程。最为重要的是, java可以跨越平台, 实现多平台编程。

参考文献

[1]张健康, 杨宜康, 李雪, 刘磊, 基于Java 3D的地球空间环境可视化研究[J], 计算机应用研究, 2013 (01) :211-214

[2]蓝雯飞, 李子茂, “Java程序设计”课程教学思考[J], 计算机时代, 2013 (01) :37-39

[3]田夏利, 李雄飞, Java框架对初级开发者的束缚及化解策略[J], 软件导刊, 2013 (01) :57-59

[4]洪世勇, 高Java中基于Socket的网络编程[J], 软件工程师, 2013 (01) :61-62

编程平台 篇2

Java语言的一个非常重要特点就是平台无关性, 而使用Java Virtual Machine (JVM, Java虚拟机) 是实现这一特点的关键。JVM是一个虚构的计算机, 它是通过在实际的计算机上仿真模拟各种计算机功能来实现的, 因此JVM屏蔽了与具体平台相关的信息, 使得Java语言编译程序只需生成在JVM上运行的目标代码 (字节码) , 就可以在多种平台上不加修改地运行。JVM在执行字节码时, 把字节码解释成具体平台上的机器指令执行, 这就是Java能够“一次编译, 到处运行”的原因。

虽然JVM是为支持Java语言的语义而设计的, 但是这种将编程语言与运行时环境分开的技术使得它也可以用作其他语言的目标。在过去几年间, 使用JVM来运行非Java程序的情况成增长趋势, 据统计有超过200种语言能够运行在JVM平台上。有的基于JVM的语言Jython (1997年) 和JRuby (2000年) 都是从其他已存在的语言移植到JVM中来的, Jython (之前被称为Jpython) 是一个基于JVM的Python语言实现, Sun公司资助的JRuby是一个基于JVM的Ruby版本, 而全新的基于JVM的语言是Groovy、Scala。Clojure还算不上是JVM的一种新的编程语言, 它是一种Lisp方言。

随着运行在JVM上的程序设计语言大量增多, 大大激发了多语言编程理念, 因为这样你可以混合使用编程语言并可以选择最佳匹配, 同时还维护着相同的底层字节码和类库。在实际应用中, 没有一种语言可以做到完美解决一切问题, 每种语言都有自己擅长的方面, 而且日趋复杂的软件需求也使得混合编程的应用场景更加频繁。对于Java程序员来说, 技术单一正面临着危机, 混合编程时代已经到来, 这是Java程序员必须迎接的挑战。

本文接下来首先回顾静态类型语言和动态类型语言、命令式语言和声明式语言的基本概念和各自的优缺点, 然后介绍Java语言的发展趋势和基于JVM的代表性语言Jython、JRuby、Groovy、Scala和Clojure, 最后指出软件项目的未来在于混合语言编程, Java仍将是JVM生态系统中的重要组成部分。

2 静态类型语言和动态类型语言 (Statically typedlanguage vs. dynamically typed language)

根据变量的类型是在编译时确定还是在运行时确定, 编程语言可分为静态类型语言和动态类型语言。静态类型语言是指在编译时变量的数据类型即可确定的语言, 如:Java, C++等等, 多数静态类型语言要求在使用变量之前必须声明数据类型 (某些具有类型推导能力的现代语言可能会部分减轻这个要求) 。与此相反, 动态类型语言是指在运行时确定数据类型的语言, 变量使用之前不需要类型声明, 通常变量的类型是被赋值的那个值的类型, 如:Python和Ruby就是典型动态类型语言, 很多脚本语言vbscript, javascript也是这类语言。

要区分静态和动态类型语言仅从语法格式上就足够了, 如代码清单1和代码清单2所示:

public int add (int x, int y) {

return x+y;

}

代码清单1:静态类型语言 (Java)

function add (x, y) {

return x+y;

}

代码清单2:动态类型语言 (JavaScript)

静态类型语言的主要优点在于其结构规范, 便于调试, 方便类型安全, 缺点是为此需要写更多的类型相关代码。静态类型语言为了达到多态会采取一些类型鉴别手段, 如继承、接口, 而动态类型语言则不需要。动态类型语言的优点在于不需要写非常多的类型相关的代码, 缺点自然就是不方便调试, 命名不规范, 会造成不利于理解等。

3命令式编程语言和声明式编程语言 (Imperative programming language vs. declarative programming language)

根据编程范式的不同, 高级编程语言可分为命令式语言和声明式语言, 两者的编程方式有很大的差异。

命令式语言是基于动作的语言, 以冯诺依曼计算机体系结构为背景。机器语言及汇编语言是最早的命令式语言, 在这种语言中, 计算机被看作是动作的序列, 程序就是用语言提供的操作命令书写的一个操作序列。用命令式语言编写程序, 就是描述解题过程中每一步, 程序的运行过程就是问题的求解过程。命令式语言分为面向过程和面向对象, 传统的命令式语言比如Fortran、C和Pascal都是面向过程的, 它们主要的程序设计单元是过程。现代的命令式语言比如C++、Java和C#则是面向对象的, 它们将对象作为程序的基本单元, 将程序和数据封装其中, 通过对象之间的协作来解决问题。

声明式编程与命令式相对立, 不同于命令式编程需要用算法明确指出每一步该怎么做, 声明式编程描述目标的性质, 让计算机明白目标, 而非流程, 即告诉计算机需要计算“什么 (What) ”而不是“如何 (How) ”去计算。声明式编程是一个大的概念, 其下包含一些有名的子编程范式:约束式编程、领域专属语言、函数式编程、逻辑式编程等。例如:数据库查询语言 (SQL, XQuery) , 正则表达式属于领域专属语言, LISP属于函数式编程语言, Prolog属于逻辑式编程语言。声明式编程语言通常用作解决人工智能问题和约束满足问题。

命令式编程通常会让代码变得十分冗长, 更重要的是由于它提供了过于具体的指令, 使得执行代码的基础设施 (如JVM) 没有太多的发挥空间, 只能老老实实地根据指令一步步地向目标前进。因为像“执行目的”这样更高层次的信息已经丢失了, 并行执行程序会变得十分困难, 因此, 编程语言的趋势之一, 便是能让代码包含更多的“What”, 而不是“How”, 这样执行环境便可以更加聪明地去适应当前的执行要求, 所以声明式编程自2009年起备受人们的关注。

4 Java语言的发展趋势 (The trend of the Javalanguage)

Java语言集许多语言的优点于一身, 它的面向对象特性让大型软件工程变得更加容易管理, 它的自动垃圾回收机制能有效地管理内存和防止内存泄露, 它的平台无关性让Java在服务器端软件领域获得巨大成功。Sun公司在推出Java时就将其作为开放的技术, 得到了广大软件开发商的支持, Java拥有世界上最大的开发人群和开源生态系统, 这是其他语言无法比拟的。

Java语言已经证明了它的强大与成功, 但是Java并不是尽善尽美的。对Java语言的批评主要集中在三个方面:语言问题、模块化问题、性能问题。首先是语言问题, Java是静态类型语言, 属于命令式编程范式, 它的语法与固有范式存在着已知的局限性。Java语言的一个发展趋势是在可能的范围内降低语言本身的语法复杂度, 从J2SE 5.0中增强的for循环, 到Java SE 7中的try-with-resources语句和<>操作符, 再到Java SE 8中引入的lambda表达式, Java正在不断地简化自身的语法并引入一些重要的现代语法特征, 例如函数式编程中的某些特性。第二是模块化问题, Java平台所包含的各种功能不同的类库是一个统一的整体, 在一个程序的运行过程中很多类库其实是不需要的。模块化的含义是把Java平台提供的类库划分成不同的相互依赖的模块, 程序根据需要选择运行时所依赖的模块, 只有被选择的模块才会在运行时被加载。模块化的实现不仅可以应用到Java平台本身, 也可以应用到Java应用程序的开发中, OpenJDK中的Jigsaw项目提供了这种模块化的支持[1]。第三是性能问题, 这主要是因为JVM这个中间层次的存在。随着硬件技术的发展, 越来越多的硬件平台采用了多核CPU和多CPU的架构, Java平台需要帮助开发人员更好地充分利用这些资源来提高程序的运行性能。Java SE 7中的fork/join框架是一个高效的任务执行框架。Java SE 8对集合类框架和相关API做了增强, 以支持对批量数据进行自动的并行处理。

Java仍然是最受欢迎的编程语言, 而且至少在接下来的这几年里不会改变, 原因有很多:首先, 许多计算机科学的程序和其他领域的程序是用Java编写的。第二, Java有一个巨大的稳定的代码库。第三, 有大量的厂商投资、工具、培训和其他产品, 使得无论是供应商还是他们的客户都依赖Java。第四, Java拥有最大的开发社区和开源生态系统, 当涉及到选择何种工具、供应商和开发者作为未来的开发方向时, Java仍然是首选。

5 基于JVM的语言 (JVM-hosted languages)

Java面临的最大的威胁是快速发展的JVM-hosted语言, 如Jython、JRuby、Groovy、Scala和Clojure, 这些语言都基于JVM, 它们可以与Java语言方便简单地集成, 相比Java都有更加简明的语法和丰富的表达能力。以Groovy、Scala和Clojure为代表的JVM语言被业界称为“JVM三巨头”, 调查显示Groovy和Scala两者都显示出强劲的商业应用热度, Clojure的支持绝大部分来自业余爱好者和lisp黑客, 而不是商业组织[2]。没有任何一种语言可以彻底地取代另外一种或是所有的语言, 它们根据各自的擅长很好地解决问题。

Java是静态类型语言, 遵循命令式编程范式, 是面向对象语言。而其他JVM语言较好地结合了各种语言优势。表1显示, 五种JVM语言中除了Scala其余四种都是动态类型语言;除了Groovy, 其余四种都支持函数式编程;除了Clojure, 其余四种都是面向对象语言。

5.1 Jython

Jython即是Python语言的Java实现。要了解Jython, 首先要了解Python。Python支持命令式程序设计、面向对象程序设计、函数式编程、面向方面的程序设计、泛型编程多种编程范式。Python开发者的哲学是“用一种方法, 最好只有一种方法来做一件事”, 因此Python源代码具备很好的可读性, 并且能够支撑大规模的软件开发。Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表, 甚至开发科学计算应用程序。一些知名大学采用Python教授程序设计课程, 例如卡耐基梅隆大学的编程基础和麻省理工学院的计算机科学及编程导论就使用Python语言讲授。

Jython是用Java编写, 它继承了Java和Python二者的特性而显得很独特, 如Jython代码的可读性和清晰性, 与Java的无缝集成, 动态类型, Java程序员在数日内就能熟悉Jython。

5.2 JRuby

JRuby是Ruby语言的纯Java实现 (Ruby是用C写的) , 它结合了Ruby简洁的语法以及Java丰富的类库, 通过JRuby可以在JVM上直接运行Ruby程序, 调用Java的类库。JRuby无缝地“组合”了Java和Ruby的优势, 使我们的开发效率事半功倍[3]。

Ruby发明的理念是“你既能进行高效开发又能享受编程的快乐”, 其次是良好的界面设计, 他强调系统设计必须注重人性化, 而不是一味从机器的角度设想, 遵循上述的理念, Ruby语言通常非常直观, 按照编程人认为它应该的方式运行。Ruby是一种有趣的语言, 它支持使用多重范式, 其中之一是“函数式范式”, JRuby是完全面向对象的。

5.3 Groovy

Groovy是Java平台上设计的面向对象编程语言。这门动态类型语言拥有类似Python、Ruby和Smalltalk的一些特性, 可以作为Java平台的脚本语言使用。Groovy的语法很像Java以至于多数的Java代码也是正确的Groovy代码, 这样了解Java的开发者可以更快地学习Groovy。Groovy代码动态的被编译器转换成Java字节码。由于其运行在JVM上的特性, Groovy可以使用其他Java语言编写的库。Groovy的优势在于易用性以及与Java无缝衔接, 一些开发者由于Groovy和Java的无缝集成而使用Groovy[4]。

5.4 Scala

Scala是一种纯粹的面向对象编程语言, Scala中的每个值包括基本数据类型都是对象, 连函数也是对象。Scala包含若干函数式语言的关键概念, 把函数式和面向对象的编程思想很好地统一到了一种语言里。Scala可以与Java互操作, 可以访问现存的数之不尽的Java类库, 这使得Scala成为Java程序员解决某些问题的另一种选择。Scala把Erlang风格的基于actor的并发带进了JVM, 开发者现在可以利用Scala的actor模型在JVM上设计具伸缩性的并发应用程序, 它会自动获得多核处理器带来的优势, 而不必依照复杂的Java线程模型来编写程序。因此与Groovy相比, Scala的优势在于性能和一些高级特性[5]。

5.5 Clojure

Clojure给JVM带来了Lisp。Lisp是基于λ演算的函数式编程语言, 以表达性和功能强大著称, 但人们通常认为它不太适合应用于一般情况, Clojure的出现彻底改变了这一现状, 它是一种运行在Java平台上的Lisp方言, 在任何具备JVM的地方都可以利用Lisp的强大功能。Clojure不是面向对象的, 但提供了很多你想从OO中得到的东西, 如封装 (通过名字空间、私有定义和闭包) 、强大的多态 (multimethods) 、函数重用比继承更胜一筹。同时, Clojure可以无缝地与Java进行交互操作, 因此, Java开发团队学习Clojure具有优势。Clojure还把函数式编程语言引入JVM, 使Clojure成为一种进行并行、并发编程的完美语言, 支持现在的多核、多CPU以及分布式计算。

6 结论 (Conclusion)

我们究竟需要什么样的编程语言?企业级项目和Web项目需要怎样的语言?一般而言有以下要求:可伸缩性、可移植性、并行编程、高性能、DSL (领域专属语言) 的实现, 还有对于低风险的要求, 如与旧项目的兼容性, 旧项目迁移的成本, 开发工具的支持, 开发团队对语言的熟悉情况, 以及语言开发团队的稳定性等等。而具体到每一位开发者头上情况变得更加复杂。他们可能想要:动态的、静态的、强类型的、函数式的、富有表达力的、面向对象的、容易学习的 (在有Java或其他语言开发经验的基础上) 、快捷的、模块化的、有强大的类库、有好用的框架、有合适的IDE、有活跃的社区等等。某些语言可能满足上述条件中的若干条, 但是没有任何一种语言能够满足所有条件。同时, 一个项目的不同层面的需求也是不同的, 比如, 广受欢迎的社交网络及微博网站Twitter, 表层是Ruby on Rails, 底层是Scala;著名的在线学习网站Coursera把Scala作为服务器语言使用。

综上所述, 软件项目的未来在于混合语言编程, 而Java仍将是JVM生态系统中的重要组成部分。

参考文献

[1]OpenJdk Project Jigsaw[EB/OL].http://openjdk.java.net/projects/jigsaw/

[2]The Big Three-Scala, Clojure and Groovy[EB/OL].http://thecodegeneral.wordpress.com/2012/03/04/the-big-threejvm-languages/.

[3]JRuby Homepage[EB/OL].http://www.jruby.org/.

[4]Groovy Homepage[EB/OL].http://groovy.codehaus.org/.

编程平台 篇3

1 java的诞生改革了传统的计算机模式

Java的推出严重冲击到了传统计算机的模式, 这样在另一个层面刺激了计算机软件开发和软件产业的发展和进步。主要包括了这几个方面的内容, 一是java作为一种高级的程序设计语言, 它虽然十分的复杂, 具有较高的难度, 但是却十分的简洁, 相对于其他复杂的编程语言, 它没有一些枯燥乏味又很难理解的理论知识, 这样计算机软件人员在学习和应用java的时候就可以更加的便捷, 并且可以更加的熟练。二是因为广泛地应用了构建开发方法, 国际标准软件体系结构和多层应用体系框架也开始逐渐的应用。并且, 目前可以将计算机软件开发和软件产业分为两个派系, 一种是java2平台, 一种是.NET平台, 这样就在很大程度上促进了IT行业的发展和进步。三是java在很大程度上影响到了软件产业和工业企业, java应用的模式是全新的, 它将以服务为中心替代传统的以开发为中心, 这样就可以让企业赢得更多用户的青睐和支持, 从而让企业得到新价值, 获得新的经济增长点, 促进其长远发展。四是java还具有十分优秀的可移植性, java优秀的可移植性让其可以应用在各个领域当中, 比如网络应用领域、商业应用领域等等, 不管是企业级开发, 还是一些各种各样的嵌入式系统, 都可以广泛地应用到java, 并且具有十分好的效果, 在此基础上, 越来越多的程序开发人员和维护人员也喜欢上了java。

总之, java以其独特的优势和特点, 冲击到了传统计算机的模式, 实现了网络就是计算机的理念, 取得了不错的效果。

2 Java符合时代发展的潮流和趋势

java有着十分清晰的框架结构, 企业平台可以广泛地应用, 因此符合时代发展的潮流和趋势;最近, SUN公司对java平台的最新架构进行了拱架, 这个java是重新定义的, 它的核心是java2, 可以将其分为三个组成部分, 一种是J2EE, 一种是J2SE, 另一种是J2ME;第一种是企业版, 面向的是企业和服务器市场;第二种是标准版, 面向的主要是一些传统的PC客户机市场;第三种是MICRO版, 面向的主要是信息电器等后PC终端设备市场。

java的框架结构十分的清晰, 因此相对于其他的程序语言, 就具有一些独特的优势。在企业中如果合理地应用java技术就可以对企业的竞争力起到有效的提升作用, 因此越来越多的企业开始欣赏并且广泛地应用这项技术, 在同类技术的市场中, java所占据的部分也是最大的。同时, java有着众多供应商的原因还包括它有着开放的标准。市场上有许多可供选择的应用服务器、工具和构件等等, 比如高端的BEA、IBM等, 再如一些免费的工具, 象jboss、tomcat等等。即使是刚刚对java技术进行学习, 也不需要有任何的花费, 只需要自我培训java企业应用即可。如果想要参与到java未来的商业项目开发中, 只需要在高端的商业平台上移植软件即可实现。

3 Java安全性的优势

Jav a的特点还有一些比如异常处理、自动收集废料、强类型机制等等, 这样在安全性方面, java相对于其他的同类技术来说, 就具有很大的优势。特别是java还具有安全检查机制, 这样就可以有效地提高安全度。因为通常是在网络环境中应用java, 因此就需要对恶意代码的攻击进行必要的防御, 采用的方法就是建立一个安全机制。Java对通过网络下载的类都有一个安全防范的机制, 比如, 为了避免替代本地的同名类、字节代码检查, 就可以分配不同的名字空间来实现;并且java还具有应用设置的安全哨兵, 那就是安全管理机制。

4 结语

Java具有一系列的优势, 因此, 在未来必将会更加广泛地应用到各行各业中去。

参考文献

[1]薛梦龙.JAVA在现代编程中的优势分析[J].新校园, 2010, 2 (9) :123-125.[1]薛梦龙.JAVA在现代编程中的优势分析[J].新校园, 2010, 2 (9) :123-125.

编程平台 篇4

SQLite是一款用于Android平台的轻型数据库,它是Android的一个类,该类封装了一些操作数据库的API,它的使用可以完成对数据进行添加、查询、更新和删除等操作。

它的设计目标是嵌入式的程序编程,使用非常广泛,而且SQLite数据库的运行占用的网络资源非常低,一般情况下,在嵌入式设备中不需占用太大内存。SQLite能够很好的支持现在市面上流行的操作系统,比如Windows系统;它还能够结合很多程序语言,支持多种系统运行。

SQLite数据库的特点分析

SQLite数据库是一种新型的、发展速度较快的数据库编程,SQLite引擎是连接到程序中的主要部分。所以它对整个程序系统中的消耗总量、延迟时间等方面有积极的作用。SQLite数据库有很多特点是其他数据库所不能比拟的。

1.ACID事务

它具有ACID事务性,也就是说在一个支持事务的数据库系统中,SQLite既满足了数据库的原子性和一致性,又满足了它的隔离性和持久性,有效的保证数据的正确性,使双方交易顺利完成。

2.零配置

SQLite数据库利用先进的技术和尖端的科技,在系统中无需安装和管理配置就可以无阻碍使用,操作非常简单、方便,可谓是Android平台编程的首选。

3.完整、统一性

所谓的统一性,是指SQLite数据库中所有的信息资源,比如图表、视图、触发器等资源都在同一个文件里面。这个文件还可以复制到其它机器、目录和系统上,仍然有很好的使用效果。

4.自由共享性

SQLite数据库的功能非常强大,不仅能很好支持主流操作系统,还支持市面上很多小的操作系统。可以进行跨平台式自由共享,可移植性比较高。

5.简单、轻松

SQLite和其他模式的数据库有所不同,它不需要客户端和服务器,可以说它是进程内的一个数据库引擎,因此SQLite使用起来也比较方便,只需要带上它的一个动态库,就可以享受SQLite数据库的全部功能。

6.内存大

SQLite数据库足够小,大致13万行C代码,4.43M,但是他的内存相对较大。他的数据库内存方式可以随意切换,如果你觉得磁盘可能出现瓶颈,你可以把内存方式改变一下,而且改变起来非常简单,只要在开始操作时把相关文件Load到内存,结束操作时把内存Dump回文件就可以了。

SQLite的数据库类型

SQLite数据库是无类型的数据库,因为没有类型的限制,所以它可以保存任何类型的数据到你想要保存的任何列表中。不管这些数据库类型是什么,对于SQLite来说对字符的指定类型均是有效的。比如:Create Table ex1(a,b,c)。

虽然SQLite可以忽略数据类型,但是,一般情况下在Create Table语句中,还是建议要指定数据类型,因为数据类型对于程序员之间的交流,或者在数据库引擎转换时能起到提示或帮助的作用。SQLite支持的数据类型有:NVARCHAR(15)、INTEGER、CLOB、TIMESTAMP、VARYING CHARACTER(24)等等。

数据可操作

1.创建数据库

在创建SQLite数据库时,首先建立一个新的数据库,并且返回一个SQLite-Databasa对象,如果这个数据库不能被创建,需要进行异常处理,通常情况下会采用抛出File Not Found Exception异常。

具体操作是先创建一个数据库、再选一个可选工厂类、当查询时用实例化一个光标@Override等。如果出现相关代码,可以进行数据库的创建。在创建数据库的过程中,系统会检测到创建的数据库是否存在,如果不存在此数据库,需要创建一个;如果存在,只需打开该数据库就可以了。

2.删除数据库

如果在操作完成后想要删除数据库,使用Contexe.delete Datahase键,删除你想删除的数据库名称,如果成功删除该指定数据库,表明操作成功,此时返回主界面即可;如果删除操作失败,会有false或者会有数据库不存在的字样弹出,表明删除数据库失败,需要重新操作。

3.打开数据库

在创建数据库时,数据库的打开是创建一个新的数据库的基础,执行Context.open Dalabase操作,打开一个存在的数据库,并且返回一个SQLite Database对象操作,如果出现数据库不存在的现象,应该抛出File Not Found Exception异常:

创建一个名为:my Database的数据库,其后缀为.db

4.关闭数据库

数据库使用完毕以后,需要执行关闭操作,养成关闭数据库的习惯。关闭流程为:先执行my Data Base.Close()操作,在进行数据库关闭操作。这是一个正规的流程,有利于保护数据库安全。

使用SQLite需要注意的问题

SQLite数据库虽然比其他类型的数据库更加完善、先进,但是他本身也有一些不可避免的缺陷,或多或少制约着SQLite的发展。所以我们在使用过程中要特别注意这些问题,能避则避,尽量择其优点而用,摒弃其缺点。具体有几点需要注意的问题:

1.缺乏专用的网络服务器

由于技术的限制,目前市场上还没有出现一款可用于SQLite的网络服务器。目前SQLite所运用的网络服务器都是通过其他计算机的网络共享来完成的。这样可能会导致网络共享相关的访问量及性能下降等问题的出现。

2.进程访问的锁机制

SQLite数据库在进程读写方面的性能有待提高,有时数据库运行时,可能被一些读写操作独占,这样容易导致其它读写操作出现错误。

3.网络文件系统易损坏

SQLite数据库在访问其他机器上的文件时,一般会把文件放置到网络共享目录里,这个时候需要注意的是SQLite可能在进程缩写的情况下,出现一些有损数据库的问题。所以使用起时要特别留意此操作。

结语

最近几年,SQLite数据库的普及率越来越高,它的健壮性和稳定性也很好,一些大公司开始把它整合到产品中,以优化产品功能。总之,SQLite数据库使用非常方便,不仅可以支持各种电脑系统,而且也可以在adb等移动终端灵活使用。但是,由于SQLite不需要客户端的支撑,致使用户对数据库变化后的信息难以掌控。为了解决此类问题,在实际运用中,人们经常使用adb命令行查看数据库改变后的信息。

注释

1张恒喜,史争军。基于SQLite的Android数据库编程电脑编程技巧与维护2011(21):30-31.

2罗莎.基于VC的数据库编程设计与实现研究[J].数据库技术2012(33):162-163.

3陈斌.基于Android平台的SQLite数据库技术在图书馆中的应用[J].探索与观察2013(3):156-158.

4戴智明基于Android的学生宿舍维修管理系统的设计与实现[J]微型电脑应用2013(1):225-227.

5倪红军,钱昌俊.基于Android平台的自发短信系统设计与实现[J].电子技术用2012(38):156-157.

编程平台 篇5

关键词:Android系统,Linux系统,APP技术,Java语言,C++语言

1 引言

Android是当前比较流行的、基于Linux的移动开发平台之一,其核心开发语言为Java语言,主要应用于移动应用APP开发。Android平台内核采用C/C++语言编写,APP主要采用Java语言编写。Java语言的执行速度和效率没有C/C++语言高,但Java语言设计编写UI界面比较方便;如果用Java语言设计编写UI界面,用C/C++语言设计编写诸如算法、图像处理之类运算量大的部分模块,就可以将二者完美结合。在Eclipse为开发环境下,以Android-sdk-4.2.2和Androidndk-r10为基础,实现了Java语言和C/C++语言的混合编程,这也为只有C/C++语言基础的开发者提供了开发Android移动APP的新思路。

2 开发环境搭建

安装Java语言虚拟机JVM运行环境JDK,以jdk-8u25-windows-i586.exe为例安装,配置系统环境变量,变量名JA-VA_HOME对应变量值“C:Program FilesJavajdk1.8.0_25”变量名CLASSPATH对应变量值“.;%JAVA_HOME%libtools jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%bin;”,修改变量名Path的值,在后面追加字符串值“;%JAVA_HOME%bin;”。

运行eclipse.exe开发环境,安装配置Android插件。选择help->Install New Software->Install->Add,然后Name处输入“Android”,Location处输入“http://dl-ssl.google.com/android/e clipse/”,后面选择“Next”和“I accept…”即可,下载安装完成后eclipse会重新启动。选择window->preferences->Android->Browse浏览选择已经下载解压的Android-sdk-4.2.2文件夹,然后选择Apply和OK。选择window->preferences->Android->NDK->Browse浏览选择已经下载解压的Androidndk-r10文件夹,然后选择Apply和OK。增加系统环境变量NDK_ROOT,变量值为Android-ndk-r10的路径(例如“Dandroidndkandroid-ndk-r10”)。

3 Java和C/C++混合编程原理

Android系统采用分层架构框架,包括:应用程序层(Ap plication)、应用程序框架层(Application Framework)、系统运行库层(Libraries)、Linux内核层(Linux Kernal)。其中:上层包括应用程序层、应用程序框架层,都采用Java语言编写;底层包括系统运行库层、Linux内核层,都是采用C/C++语言编写。所以,上层Java语言应用程序要调用底层的C/C++语言库必须通过Java的JNI(Java Native Interface)来实现。

4 Java和C/C++混合编程

运行Eclipse创建一个的Android Project,工程名为JavaC PlusPlus,应用程序名为JavaCPlusPlus,包名为com.javacplus plus,其他选择项默认,一直选择下一步,直到完成(Finish位置。在左上角Packege Explorer中,选择JavaCPlusPlus按右键,选择Android Tools->Add Native Support确定,在出现的对话框中选择Finish,就会发现JavaCPlusPlus下面多出一个jni文件夹,C++语言代码的实现部分就在jni下面的JavaC PlusPlus.cpp文件中添加编写。C++函数命名规范:extern C"JNIEXPORT返回类型Java_包名(小圆点用下划线取代_类名_Java语言调用的方法名(JNIEnv*env,jobject obj,自定义形参列表)。

例如在com.javacplusplus中MainActivity类里面要实现1+2+3+…+n的和sum,加载动态库libJavaCPlusPlus.so文件和方法sum声明如下:

上面方法sum在C++文件JavaCPlusPlus.cpp中的实现如下:

为了演示调用和输出效果,在activity_main.xml文件的TextView项中添加android:id="@+id/hello_world_text",用于输出计算结果。在UI输出界面添加一个Button按钮,并在activity_main.xml文件的Button项中添加android:onClick="bt nOnClick",用于调用C++中sum函数,Java中btnOnClick方法实现如下:

由于用到了TextView,所以要在MainActivity.Java文件中添加导入声明import android.widget.TextView。然后编译工程JavaCPlusPlus,将生成的JavaCPlusPlus.apk文件在模拟器或下载到手机中,运行效果如图1所示。

5 结语

编程平台 篇6

系统中的非功能需求往往横切整个系统,传统的结构化方法以及现代流行的面向对象方法无法很好地模块化这些非功能需求,导致了实现非功能需求代码的分散和与功能代码纠缠在一起,造成代码量急剧增加,开发效率低,可读性差,极易引起不一致等问题,所以需要分离这些非功能关注点。面向方面技术正是为此而出现[1]。

1.1 AOP的核心思想

计算机软件设计的一个重要原则,就是要清晰分离各种关注点(separation of concerns),然后分而治之,各个击破,最后形成统一的解决方案。

所谓关注点是指一个特定的目标、概念或者兴趣域。从技术的角度,软件系统分别包括核心级和系统级的关注点。核心级关注点是系统要完成的业务功能;系统级关注点是完成核心级关注点所必须的配套设施,这些配套设施通常被认为是整个系统的系统特性,或者是业务功能的功能约束[2]。

AOP的目标,是要将这些横切关注点与业务逻辑代码相分离,从而得到更好的软件结构、性能以及稳定性等方面的好处。AOP被认为是后面向对象时代的一种新的重要的程序设计技术[3]。

AOP的本质是:将横切关注点(如日志、权限验证、并发控制等非功能需求)单独用aspect实现,而业务功能用现有的软件技术实现。由AOP机制提供将这些分离的关注点编织为一个可执行程序。

2 AOP的实现方法

AOP项目的起点在于开发人员确认所有对象都会需要的功能。随着对象的进一步开发,开发人员将能够找出每个对象都需要的一个普遍的功能,即“横切点(Cross Cutting Point)”。这时,不同于在OOP中的开发方法,开发人员将编写一个“切点(point cut)”,这一“切点”将“织入(weaves)”到对象的“方面”中。实现AOP的关键是拦截正常的方法调用,将需要额外附加的功能透明的“织入”到这些方法中[4]。以完成一些额外的要求。从总体方法上来说,织入的方法有两大类:静态织入和动态织入。静态织入方法一般都需要扩展编译器的功能,将需要织入的代码通过修改字节码(Java)或者IL代码(.Net)的方法,直接添加到相应的被织入点;或者,我们需要为原来的语言添加新的语法结构,从语法上支持AOP。

动态织入方法的具体实现方式有很多选择。在Java平台上,可以使用Proxy模式,或者定制Class Loader来实现AOP功能。在.Net平台上,要实现AOP的动态织入,归纳起来可以采用以下几种方法:

(1)使用C0ntext Attribute和C0ntext B0und0bject来对对象的方法进行拦截;

(2)使用Emit在运行时刻动态构建被织入代码后的类,当程序调用被织入类时,实际上调用的是被修改后的类;

(3)使用代理(Proxy)模式。

3 AOP在.Net平台下的实现机制

AOP在Java平台下的技术已经很成熟,如Aspect J。而AOP在.Net平台下的应用,相较于Java平台而言还不够成熟,功能也相对较弱。2005年1月,微软发布的Enterprise Library提供了7种不同的“应用程序块(application blocks)”。这些组件可以被认为就是方面,使用Visual Studio,.Net,Loom中的属性进行访问则是另一回事。下面就.Net平台下实现A0P经常采用的代理方式进行讨论。

在.Net中,要实现动态代理需要用到.Net Remoting中的消息机制,以及.Net Framework内部提供的Context Attribute类来自定义自己的Attribute。另外,.Net还要求调用“方面”的核心业务类必须继承C0ntext B0und Object类。只有这样,才能截取其内部传递的方法消息。

在.Net Remoting中,采用了远程代理模式代理在.Net中被分为透明代理(Transparent Proxy)和真实代理(Real Proxy)。透明代理的目标是在公共语言运行时Common Language Runtime,CLR),在中间语言(Intermediate Language,IL)层面中最大程度扮演被代理的远端对象,从类型转换到类型获取,从字段访问到方法调用。对CLR的使用者来说,透明代理和被其代理的对象完全没有任何区别,只有通过Remoting Services,Is Transparent Proxy才能区分两者。真实代理则是提供给CLR使用者扩展代理机制的切人点,通过从真实代理继承并实现Invoke方法,用户自定义代理实现可以自由处理已经被从栈调用转换为消息调用的目标对象方法调用,如实现缓存、身份验证、安全检测、延迟加载等。

透明代理和真实代理在上下文(Context)中会起到一个侦听器的作用。首先,透明代理将调用堆栈序列化一个称为消息(Message)的对象,然后再将消息传递给真实代理。真实代理接收消息,并将其发送给第一个消息接收进行处理。第一个消息接收在对消息进行预处理后,将其继续发送给位于客户端和对象之间的消息接收堆栈中的下一个消息接收,然后对消息进行后处理。下一个消息接收也如此照办,依此类推,直到到达堆栈构建器接收,它将消息反序列化回调用堆栈,调用对象,序列化出栈参数和返回值,并返回到前面的消息接收,这个调用链如图1所示:

由于透明代理完全等同于其代理的对象,因此,当我们侦听到代理对象被调用的消息时,就可以截取该消息,并织入需要执行的“方面”,完成横切关注点与核心关注点的动态代码织入[5]。

4 基于.NET平台的AOCE

4.1 AOCE的产生背景

随着计算机技术的迅猛发展,Web Service也迅速成为一项非常重要的企业系统发展技术,很多商业和非商业的企业利用它们来加强IT系统的扩展和连接的能力。Web services几乎可以用在任何场合。

目前,基于组件的系统工程(包括基于Web services的系统)趋向于低水平软件组件界面设计和实现。这会产生很大的缺陷,因为这会导致组件的服务难以被理解和连接。而且目前的这方面的发展方向也限制了Web services的发展。并且Web services是一个新的发展技术,要去设计和实现基于Web services的系统,仍然要解决许多问题,包括安全、操作、协作等等。

为了解决以上问题,就出现了Aspect-Oriented Component Engineering(面向方面的组件工程)。

4.2 AOCE的概念

面向方面的组件工程(AOCE)是一个组件发展的技术。它把组件分成许多个Aspect(“方面”,相当于类),利用Aspect去描述和集成不同系统的交互能力,它能很好地分析组件和组件之间的相互服务。这些被特征化的服务有:数据的更新、消息的发送、交易的协商、安全性、用户界面和系统资源的利用等等。为了方便操作,这些服务可以通过一个软件组件来提供和请求。并且如果一个服务被请求,它可以从其它能提供这个服务的组件中取得这项服务。AOCE能识别、描述和分析高水平的组件的功能性和非功能性的系列服务。

4.3 基于.NET Web Service的AOCE模型

Santokh Singh等人在“Developing.NET Web Service-based Applications with Aspect-Oriented Component Engineering”文献中提出了AOCE.NET,他们利用AOCE去设计和实现基于.NET Web Services的模型,并利用该模型设计和实现了一个旅行计划系统。

4.3.1 旅行计划系统说明

现在要设计如图2的一个旅行计划系统。

该系统要求用户可以动态发现并订购如上图的各项服务,包括:飞行服务、旅馆服务、支付服务、代理服务、交易服务等等一系列服务。总之这个系统集成了能提供给旅行客户的一切服务操作,包括一些组件允许和客户通过一些协议进行交流;一些组件的服务可以从其它的组件中取得,例如代理用其它的支付方式,订购其它的汽车服务等远程服务;一些组件需要提供横向的服务,例如:交易的协商、安全等等;客户可以通过一个或多个UDDI注册来找到相应的服务。

4.3.2 用AOCE构建基于.NET Web Service的旅行计划系统模型

Santokh Singh等人提出了基于.NET Web Service的AOCE模型。如图3。

之所以用.NET平台来构建AOCE,因为.NET平台是由多样化的组件构成,其中一些组件可通过基于XML的SOAP通讯协议提供远程的存取操作。

基于Web Services的系统的两个特征:(1)通过WDSL(Web Services Description Language)的Web services组件的自我描述;(2)通过UDDI(Universal Description,Discovery,and Integration)的Web services新组件的动态发现和目标连接。从图5中,我们也可以看出,在这个模型中,这两个方面都得到了扩展和加强。原来的WSDL(Web services描述语言)变成了AO-WSDL(面向方面的WS-DL),而原来的UDDI(通用描述发现和集成)变成了AO-UDDI(面向方面的UDDI)。构建这样一个系统的主要优点如下:

(1)使用户界面和服务更加具有特征化,使组件的服务和信息更容易被理解和设置。

(2)用户能迅速地寻找到提供服务的服务组件。

(3)能使组件的连接器很好的相互作用,并且避免了难懂的代码和信息[7]。

4.4 模型的设计与实现

该模型采用.NET的Reflectiong类和asmx(ASP.NET中用来构建Web Service的文件扩展名)把原来的WSDL文档变成了AO-WSDL文档,从而可以使得服务组件的功能性和非功能性的属性更加特征化,让组件的服务和方面的信息更加容易被理解和提取。该AOCE模型采用了C#.NET web service组件来构建扩展的注册机制AO-UDDI。用这个机制实现的Web服务可以保证用户的安全和交易协商等横向服务的执行,并且用AO-UDDI构造的用户界面可以用手动操作的方式去发现Web服务,还可以让Web服务组件更好地被描述、发现、测试和规类集成。

我们可以看出Santokh Singh等人,成功的利用AOCE去设计和实现了基于.NET Web Services的旅行计划系统。该模型为我们提供了一个很好的方案去构建基于组件的系统工程,并且他们还认为AOCE的模型可以同样的应用于任何基于Web Service的系统。

5 总结和展望

AOP作为一种新的程序设计范型体现出了强大的生命力,它是OOP的一种改进,提高了软件的可理解性、可维护性、可复用性和可扩展性。AOP引起了软件开发方式继OOP以来的又一次重要变革。

AOP在Java平台下的技术已经很成熟,如Aspect J,而AOP在.Net平台下的应用,相较于Java平台而言还不够成熟,功能也相对较弱。但从本章的AOCE模型中我们可以大胆预测,未来AOP在.NET平台的应用必然会变得越来越成熟,也许几年后面向方面技术也会成为.NET的核心服务之一。

参考文献

[1]徐宝文,周超洪等.面向方面的程序设计:概念、实现与未来[J].计算机与数字工程,2006,33(8):1-10.

[2]程虎.面向方面(aspect)的程序设计方法[J].信息技术快报,2005,3(1):1-4.

[3]曹东刚,梅宏.面向Aspect的程序设计—一种新的编程范型[J].计算机科学.2003,30(9):5-10.

[4]孙亚民.构建面向对象的应用软件系统框架[EB/OL].[2008-01-20].http://www.lvjiyong.com/Default.aspx.

[5]李卫强,王小玲.面向方面编程(AOP)技术及其在.Net平台下的实现[J].电脑与信息技术.2006,14(3):30-33.

[6]刘岩,毛迪林等.基于AOP的Web Services管理架构研究[J].计算机应用与软件.2006,23(11):11-14.

编程平台 篇7

关键词:Unix系统,Windows系统,Socket编程,数据监测

通过研究Unix平台和Windows平台下的网络编程技术, 采用UDP/IP网络通信协议, 基于Socket网络编程实现跨平台的信息监测。将强实时性数据处理功能和弱实时性的数据监测功能分别分布在Unix和Windows两个不同的平台上, 通过网络通信达到监测目的。这样做既可以节省数据处理服务器的系统资源、有利于保证系统的实时数据处理能力, 还可以充分利用Windows平台下众多的软件支持获得良好的监测效果和实现强大的功能扩展。

1 网络监测工作原理

运行在Unix平台下的数据处理服务器通过双主干网与外界交互, 可以实现可靠的数据收发、存储、检验、加工处理等功能。实际应用中为保证数据处理的正确性, 通常需要对数据处理服务器的工作情况进行监测。这里通过建立外设网, 在多台显示工作站上开发出人机交互界面良好的可视化信息监测软件来实现。服务器需要按照约定的格式和传输周期将处理好的数据和自身工作状态等信息进行打包, 通过外设网发送到显示工作站。显示工作站收到监测数据包后, 经过数据解包和可视化处理在屏幕上显示出监测结果。数据处理系统监测数据交换示意图如图1所示。在显示工作站上完成数据监测任务的主要技术包括数据处理服务器与显示工作站之间的数据传输技术和数据可视化技术。其中数据传输技术涉及到两个不同平台下基于相同的通信协议实现的网络编程。这里采用UDP/IP协议完成网络通信。从图1中可以看出, 每台数据处理服务器可由多台显示工作站进行监测, 便于功能扩展, 因此, 可采用组播技术实现网络通信。

2 Unix平台下的服务器端编程

Unix平台下开发的数据处理软件是多并发事件处理系统, 采用多进程多线程体系结构编程[2], 信息监测数据包的打包和发送由专门的显示加工处理线程来完成。下面结合程序代码说明网络编程过程。

2.1 全局定义

与网络通信有关的全局变量定义如下:

2.2 网络初始化定义

服务器端采用UDP/IP协议的组播方式将监测数据发往客户端。网络初始化定义代码如下:

2.3 监测数据包加工

定义DM_fzzd_packet函数加工客户端监测数据, 将加工后的数据包连同包头和包尾信息存储到DM_fzzd_datasend数组中, 并返回数据包的长度。

2.4 组播监测数据包

按照发送周期, 定期调用组播函数将监测数据包发送给客户端, 组播函数部分代码如下:

3 Windows平台下的客户端编程

在Windows XP平台下的VC++6.0编程环境中实现监测软件的开发, 采用Winsock2提供的网络编程接口, 实现组播网络数据的接收。

3.1 创建网络套接字和接收线程

监测软件的主要工作是完成网络数据的接收、处理和显示, 因此可以将网络数据的接收通过单独的线程来实现, 将更多的数据处理和显示工作交给主线程来完成, 从而提高软件运行效率[4]。首先在应用程序的初始化实例函数Init Instance () 中调用Init Socket () 函数, 完成网络套接字的创建, 成功后采用Afx Begin Thread方法创建数据接收线程, 数据接收和解包工作均在该线程处理函数中完成。

3.2 初始化接收端

在数据接收线程处理函数中将客户端地址与Socket绑定, 并采用Winsock2提供的WSAJoin Leaf方法加入多播组, 代码如下:

3.3 初始化网络事件

采用Winsock2提供的异步I/O模型WSAEvent Select将FD_READ事件投递到WSAEVENT类型的事件对象句柄。

3.4 循环接收网络数据

初始化工作完成后, 就可以循环接收网络数据了, 关键代码如下:

3.5 网络事件结束处理

在线程结束前需要释放用到的资源, 代码如下:

4 结语

从实用角度出发, 结合Unix和Windows两个平台下的网络编程技术, 介绍了Unix服务器端和Windows客户端的网络数据收发编程实现方法。该方法使得在工程应用领域中, 能够利用Windows可视化平台对基于Unix系统平台下的服务器的工作情况完成低成本高效益的监测, 对提高服务器软件开发质量和可靠性提供了有效的技术手段, 同时, 该技术的应用有利于数据处理服务器的功能扩展。

参考文献

[1]翟丽丽.Digital Unix实时应用指南[M].大连:大连理工大学出版社, 2000.

[2]孙君亮, 李达, 夏丙寅, 等.实时数据分布处理体系结构研究[J].国防技术基础, 2008, (8) :158-162.

[3]Anthony Jones, Jim Ohlund.Windows网络编程技术[M].北京:机械工业出版社, 2000.

上一篇:儿童心理问题下一篇:计算机教学资源