已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
礼品网礼品网 技术调研技术调研 1 Java 与与 PHP 比较比较 当前 市场上跨平台电子商务支撑软件基本上可归结为 PHP 和 JAVA 两大阵营 对于接触电 子商务或 B S 架构应用 门户等系统的用户来说 最明显的感觉是 PHP 开发人员不如 JAVA 开发人员值钱 PHP 系统比 JAVA 系统便宜 其实 这只是表面现象 PHP 和 JAVA 之间有着 非常大的实际差异 简要对比如下 项目项目PHPJAVA 语言特点语言特点 解释性语言 效率低 编译性语言 效率高 语言易用性语言易用性 容易 语言简单 易学易用 容易上手 比 PHP 复杂些 学习周期稍长 有一定技术门 槛 但比 C C 简单易学得多 参考资料多 易用性好 可复用性可复用性低高 开发工具开发工具 Editplus UltraEdit vi notep ad 等简单的开发工具 Eclipse MyEclipse Jbuilder 等集成开发 调 试工具 开发速度开发速度快 但缺乏有效调试机制 慢 支持集成开发 调试 打包 部署 易维护性易维护性差 代码管理维护比较混乱 可维护性差 优 代码可打包管理维护 可维护性好 可移植性可移植性好 支持主流 Linux Windows Unix 优 支持所有主流操作系统 Linux Windows Unix 及主机系统 安全性安全性低高 代码加密 而且有一整套 从数据存储 数据管理 数据访问 数据传输等 的安全机 制和算法 开发费用开发费用低较高 因为 Java 程序员人力成本 平台建设成 本比 PHP 高 多层架构多层架构差优 良好的三层和多层架构支持 有利于保护 数据库等后台系统的安全 数据库访问数据库访问接口不统一接口统一 可扩展性可扩展性差优 一次编码到处运行 面向对象面向对象差优 1 1 语言比较语言比较 PHP 是解释执行的脚本语言 尽管 PHP 和 C Java 等主流语言相比有着语法简单 好学 容易上手等特点 但是 解释性语言的运行效率低 这是不争的事实 Java 语言是编译性语言 需要编译成字节码 class 文件 然后在 Java 虚拟机上解释 执行 Java 语言及 J2EE 应用服务器为 Web 应用开发提供了大量开放性 标准性 可复用 性 可扩展性 可管理性 可维护性和跨平台性等功能特性 使你能够开发出 一次开发 到处运行 的好系统 Java 语言的优势 以及有众多国内外大型厂商参与制定的 J2EE 也叫 Java EE 标准规范 使 Java 技术成为目前大中型企业级应用的首选 对于哪些资金比较有限的客户 开源的 Tomcat MySQL 比 PHP MYSQL 可以提供更好的处理能力和稳定性支持 1 2 数据库访问比较数据库访问比较 PHP 提供的数据库接口支持彼此都不一样 很不统一 所以 在 PHP 环境下 对于不 同的数据库 比如对 Oracle DB2 MySQL SQL2000 SQL2005 等 需要使用不同的数据库 访问接口 数据库访问代码的通用性不强 不利于管理维护和更换数据库 J2EE 为 Java 应用提供了 JDBC 技术 数据源技术和数据缓冲池等技术 应用系统通过使用 这些标准 规范 统一的数据库访问处理技术 可以实现良好的数据库迁移和跨平台业务 处理 例如 用 Java 开发的 Web 应用从 MySQL 数据库转到 Oracle GBase KingBase 等数据库只 需要做很少的修改 而 PHP 则需要做大量的修改工作 1 3 系统设计架构比较系统设计架构比较 分层是将系统进行有效组织的方式 分而治之的思想是计算机领域中非常重要的思想 在好的分层思想引导下 便能实现 高内聚 低耦合 也能将具体的问题 割裂开来 易 于控制 易于延展 更易于分配资源 J2EE 中间件提供了先进的 十分强大的三层及多层架构支持 运用 MVC 的设计模式 可使 电子商务软件具有更加高效 合理的系统架构 技术架构的落后 使运用 PHP 编写的软件 系统具有先天不足 而后天又无法很好弥补的劣势 在系统可拓展性 需求应变性上 PHP 与基于 J2EE 的系统差距越来越大 J2EE 提供的是先进的面向对象 面向服务的技术框架和系统设计 开发方法 开发前期良 好的系统分析和设计可以有效保障系统的安全 稳定 可靠 可复用 可扩展和可管理 易维护 PHP 过时的面向过程的开发方法 不便于管理维护 1 4 跨平台性跨平台性 Java 和 PHP 都有很好的跨平台的特性 二者几乎都可以在不作任何修改的情况下运行 在 Linux UNIX 或者 Windows 等不同的操作系统上 只要能运行 Java 虚拟机的系统都可以运行 Java 程序 而且 Java 具有更好的异构系统之 间互操作能力和跨平台支持 1 5 开发成本开发成本 PHP 最经典的组合就是 PHP MySQL Apache 非常适合开发中小型的 Web 应用 开发 的速度比较快 而且所有的软件都是开源免费的 可以减少投入 Java 的 Web 应用服务器需要 J2EE 应用服务器支持 如果资金成本有限 可以考虑免费 Tomcat JBoss MySQL 等 如果关注并发处理能力 良好的可用性 可靠性支持 则可以选 择成熟的商业化产品 TongWeb Apusic WebSphere 等 及商用数据库 KingBase GBase Oracle SQLServer 等 1 6 分布式多层架构比较分布式多层架构比较 PHP 只能实现简单的分布式两层或三层的架构 而 JAVA 在这方面就比较强大 可以实 现多层的网络架构 数据库层 持久化层 应用 业务 逻辑层 表示逻辑层彼此分开 而且现在不同的层都已经有一些成熟的开发框架的支持 例如 Struts 就是利用 java 的 Web 开发技术实现了 MVC 的设计模式 而在业务逻辑层也有 Spring 框架 数据库持久化层 有 Hibernate 等框架 这些框架可以方便开发者高效 合理 科学得架构多层的商业应用 下面简要的说一下 Struts 它实质上是在 JSP Model2 的基础上实现的一个 MVC Model View Controler 框架 JSP Model2 体系结构是一种联合使用 JSP 与 Servlet 来提供动态内容的方法 在 Struts 框架中 模型由实现业务逻辑的 JavaBean 或 EJB 组件构成 控制器由 Servlet 实现的 视图由一组 JSP 文件组成 采用 Struts 可以明 确角色的定义和开发者与网页设计者的分工 而且项目越复杂 其优势越明显 1 7 源代码安全源代码安全 PHP 开发的程序的源代码都是公开的 拿到 php 应用代码的人都可以对程序代码进行 修改 不利于系统安全和稳定性 基于 Java 开发的程序 提供给用户的只是一些编译好的 class 类和 war jar 应用包 拿 到应用程序的人无法看到完整程序代码和源代码 所有代码安全和系统安全性比 PHP 高得 多 1 8 性能比较性能比较 有人做过试验 对 PHP Java 这两种语言分别做回圈性能测试及存取 Oracle 数据库测试 在循环性能测试中 JSP 只用了令人吃惊的 4 秒钟就结束了 20000 20000 的回圈 而 PHP 测试的是 2000 2000 循环 少一个数量级 却用了 84 秒 参见 PHPLIB 数据库测试中 二者分别对 Oracle8 进行 1000 次 Insert Update Select 和 Delete 同 样条件下 JSP 花了 13 秒 而 PHP 需要 69 秒 可见 Java 的性能比 PHP 高的多 下面是一张来自国外的测试比较数据 可以看出 Java 在 性能方面的明显优势 1 9 前瞻性和拓展性前瞻性和拓展性 整体来说 PHP 能够将单一的事件做好 但却不适合完成集成度较高的多项并发事件 PHP 更适用于对性能要求不太高的中小型系统 而 JAVA 更适合于对性能 安全性 稳定性 可 用性 可靠性要求比较高的大中型系统 JAVA 比 PHP 能做更多的事情 JAVA 不但是计算机 上 而且是手机 职能终端等目前主流掌上系统的重要支撑平台和软件开发工具 而 PHP 做不到 为什么说 PHP 只适合中小型非核心系统而不适合做大中型关键系统呢 首先 PHP 解释性语言 安全性差 效率低 缺乏好的结构支持 而对于大中型分布式关 键系统来说 将数据库 应用逻辑层和表示逻辑层彼此分开 不但有利于系统的安全 而 且降低了系统的耦合度 增强了系统的可维护性和可扩展性 PHP 恰恰缺乏这种支持 其次 PHP 提供的数据库接口不统一 要将多个不同的数据库数据统一需要花费很大的力 气 而 JAVA 则没有这种缺陷 可通过 JDBC 机制和灵活可配置的数据源技术 数据库连接 池机制获得更大规模支持 2 Java 与与 PHP 整合整合 2 1 技术问题技术问题 两种不同环境 不同机制的语言结合 首先要解决的是如何通讯 其次是通讯内容如何处 理 最后是两者开发 部署环境整合 2 2 两种语言对比两种语言对比 PhpPhp 直观 快速 简单 易学 开发动态网页效率高 草根文化气息浓重 是语言世界的 平民英雄 注重于结果 JavaJava 强大而复杂 有众多高端功能 又有 IMB Oracle 等企业大颚的追捧 是语言世界 的贵族王子 2 3 通讯问题通讯问题 2 3 1 消息队列消息队列 从操作系统层面观察 PHP 和 Java 是系统中运行的不同进程 他们之间沟通属于进程间 通信技术 IPC 在传统的 Unix 环境中 IPC 技术有 管道 消息队列 共享内存 信号量等 但在同一个 系统中 IPC 通信比基于 TCP 的 socket 通信在性能 资源占用方面有相当大的优势 在 Unix Linux 中 PHP 基本提供了所有 IPC 的访问接口 因为 PHP 可以看作是以 C 语言为 核心的一个壳 而 IPC 是系统内核的组成部分 对外提供了一组 C 函数接口 因此 PHP 可 以非常顺畅的运用 IPC 技术 而 Java 为了追求夸平台性 Windows 的 IPC 技术和 Unix 的不 同 没有提供系统级的 IPC 访问 这也体现了 Java 的文化特色 为追求统一可牺牲效能 2 3 2 Socket 消息队列技术只能适用于 Unix Linux 系统 而 SOCKET 基于 TCP IP 的通讯机制 从而适应 各种平台 从上图中看出 PHP 承担 HTTP 层的职责 而 Java 承担业务层的职责 他们通过 System V Message Queue 消息队列 进程间通讯 IPC 中的一种 相互沟通 Java 需要 JNI 的支持 使用消息队列有以下好处 1 使 php 和 java 保持独立性 2 有极高的传输速度 大于 socket 3 相对于 socket 方式 Java 服务端只向本机提供服务 没有对外侦听端口 相对安全 易于管理 2 3 3 通讯内容问题通讯内容问题 通信问题解决了 通信内容如何解决呢 PHP 和 Java 各自语言内部定义的数据类型 当两种语言互相传输数据时 数据类型怎样进 行转换呢 1 Xml xml 确是一种夸平台 能够很好描述对象模型的数据封装技术 但 xml 体积大传 输速率慢 通讯两端解析也比较麻烦 2 序列化 在传输过程中使用序列化和反序列化对象来传输数据是一种公认且比较合理 的方式 且两种语言都支持 2 4 Java 与与 php 结合选型结合选型 目前已知的 PHP 与 Java 在 Web 间整合技术可分成 SOAP Simple Object Access Protocol Quercus PHP Java Bridge 三种 这些技术可以让 PHP 与 Java 在开发 Web 应用程序时互相使用彼此的程序库 SOAP SOAP 是 IBM Microsoft 等公司开发 W3C 推荐 用来实现分布式对象技术的协议 SOAP 提供了 一套以 XML 来包装程序调用 参数传递与信息回传的机制 借助 XML 纯文字的特性 可通过 HTTP HTTPS SMTP 等通信管道穿越企业的防火墙 比起 CORBA Java RMI 及 DCOM 这些以专属 binary 格式传送数据的分布式对象技术协议 SOAP 具有与程序语言 平台和硬件无关的特性 Quercus Quercus 是一个开源 PHP 5 引擎 它已经拥有了纯 Java 的完整实现 Quercus 在 Resin 应用 服务器之上运行 利用了负载平衡 代理缓存等 Resin 特性 PHP Java Bridge 开源产品有 Php java bridge 与 LAJP 2 4 1 选择条件选择条件 1 免费 开源 2 简单易用 3 高效稳定 2 4 2 LAJP 2 4 2 1 特点特点 1 优势互补优势互补 PHP 是非常流行的 WEB 编程脚本语言 有易学 易用 开发部署效率高的 特点 非常适合网页编程 JAVA 适合编写具有复杂的业务功能和数据的程序 二者结 合可发挥各自优势 2 高效稳定高效稳定 Apache PHP 组合可带来优异的 WEB 服务稳定性 而 JAVA 可补充如连接池 事物管理 分布式 对象模型等高端特性 3 创新的通信机制创新的通信机制 PHP 和 Java 间的通讯方式采用系统消息队列和 Socket 两种机制 兼顾通讯效率和平台兼容性 4 数据类型自动转换机制数据类型自动转换机制 PHP 数据和 Java 数据可准确地自动匹配和转换 无须程序 员编写解析代码 5 易用易用 LAJP 安装配置简单 PHP 端和 JAVA 端编程符合各自的编程习惯 6 轻量级轻量级 LAJP 架构非常轻量级 除了最基本的 PHP 和 Java 环境 不需要任何扩充的 第三方的组件 容器 数据类型转换 PHP 和 Java 各有其语言内部定义的数据类型 当 PHP 数据传送到 Java 或 Java 数据传送 到 PHP 时 LAJP 在内部自动地 准确地对他们进行转换 程序员无需进行任何的解码工作 2 4 2 2LALP 运行环境运行环境 消息队列模式消息队列模式 环境需要满足 System V 消息队列的运行 1 系统系统 目前常见的 Unix Linux 系统都可满足 php Apache java 的运行 其中大 部分默认支持 System V 消息队列 2 phpphp php 需要通过消息队列和 java 进程通信 按 php 的说明 php 在 4 3 0 版本 以后支持 System V 消息队列 3 apacheapache 无特殊要求 满足 php 要求即可 4 javajava java 版本在 1 5 以后 5 在 Unix Linux 环境中 推荐使用消息队列模式 socketsocket 模式模式 1 系统系统 没有限制 很难找到不支持 TCP IP 的系统 2 phpphp 按 php 的说明 php 版本 4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实时数据可视化-第2篇-洞察与解读
- 沿江旅游市场分析-洞察与解读
- 教师职业进阶指南
- 化学生活秘境
- 2025中国红十字会救护员培训理论考试试题含答案
- 2025年化工企业化工工程师安全生产知识考试试题及答案
- 2025年丙肝防治培训考核试题(+答案)
- 2021年安全员-C证(上海市)考试平台及安全员-C证(上海市)考试试题及答案
- 2025年公共营养师三级过关检测试题及答案
- 2025年公需科目考试答案
- 2025江苏南通市通州区石港镇招聘便民服务中心人员2人考试笔试备考题库及答案解析
- 外墙施工技术方案范本
- 电力设计安全相关课件
- 人物的描写方法
- 2025四川南充市嘉陵城市发展集团有限公司招聘10人备考考试题库附答案解析
- 2025年消防月系列:消防宣传月专题培训(编号4)
- 义齿加工合同范本模板
- 山东港口集团笔试题库2025
- 2024年中医适宜技术操作规范
- 艾梅乙反歧视培训课件
- 新课标高中生物实验目录
评论
0/150
提交评论