【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第一部分-简介
2009-09-29 11:39
639 查看
【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】[/code]LAJP背景
LAJP 名称来源于著名的LAMP(Linux,Apache,Mysql,Php)。
LAMP是轻量级的开发Web程序的环境,在Internet上有广泛的应用,但对于企业开发,如金融、电信领域,LAMP显得能力不足,这通常是Java(J2EE)的势力范围,我记得三年前在电信参与一个项目的竞标,当讲解项目架构时介绍以Linux系统构建WEB集群,立刻遭到电信技术人员的打断, 让我们尽量避免使用无售后保障的开源产品。
时光飞逝,现在开源逐步得到企业的认可,我们的项目最终仍是使用Linux构建WEB系统,一方面是因为成本,Linux PC Server到底要比HP的小型机便宜很多,另一方面,人们对开源的观念也在更替。记得当时写那个项目的技术方案时,就思考过使用PHP+J2EE方式,但一是没有考虑好技术实现细节,第二也是主要考虑到电信方对此种技术的可接受性,最终还是选择了纯J2EE技术体系。随后两年又参与了其他的几个B/S系统的开发,越发的体验到纯J2EE架构的众多问题,当初的PHP+J2EE设想也越发的强烈。
LAJP开源项目是将LAMP的简便性和Java 能力结合起来的一项技术架构,LAJP名称中的J指的是Java,由于数据库厂商对Java的广泛支持和主要针对的企业领域,数据库不再特别限制为Mysql。特点
* 优势互补
: PHP是非常流行的WEB编程脚本语言,有易学、易用、开发部署效率高的特点,非常适合WEB开发;JAVA适合编写具有复杂的业务功能和数据的程序,二者结合可发挥各自优势,特别适合企业B/S项目。
* 高效稳定
:Apache+PHP组合可带来优异的WEB服务稳定性,而JAVA可补充如连接池、事物管理、分布式、对象模型等高端特性。
* 创新的通信机制
PHP和Java间的通讯方式采用系统消息队列和Socket两种机制,同时兼顾通讯效率和平台兼容性。
* 数据类型自动转换机制
PHP数据和Java数据可准确、自动匹配和转换。
* 易用
:LAJP安装配置简单,除了核心的几个Java类文件和Java JNI接口程序外,不需额外插件,PHP端和JAVA端编程符合各自的编程习惯。
* 轻量级
:LAJP架构非常轻量,除了最基本的PHP和Java环境,不需要任何扩充的、第三方的组件。LAMP和LAJP的简要对比
LAMP从传统技术架构上看属于2层结构,虽然在php5以后增强了面向对象的能力,有了形成业务逻辑层的语言基础,但对于复杂的企业级WEB应用,php语言能力仍显不足。LAJP继承了LAMP在WEB领域编程的活力,并用java构建业务逻辑层,非常适合针对企业级WEB项目的开发。php和java的互通
php和java是两种不同的语言,在LAJP架构中二者之间的互通有两种机制。
* 一、消息队列
以操作系统的消息队列为沟通媒介,在通讯过程中php作为客户端调用java端服务。消息队列属于IPC技术(进程间通讯),php语言中内置了一组函数(msg_send、msg_receive等)可以和System V消息队列通讯,而java中没有相似的方法,因此通过调用底层JNI接口使用C函数来实现。 使用消息队列有以下好处:
1. 使php和java保持独立性
2. 有极高的传输速度,大于socket
3. 相对于socket方式,Java服务端只向本机进程提供服务(没有对外侦听端口),相对安全,易于管理。
* 二、Socket
消息队列技术只能适用于Unix/Linux/BSD系统,因此LAJP提供基于TCP/IP的通讯机制,从而适应各种平台,socket方式也可以分布式地将PHP和Java部署在不同的机器上。数据类型转换
PHP和Java各有其语言内部定义的数据类型,当PHP数据传送到Java,或Java数据传送到PHP时,LAJP在内部自动地、准确地对他们进行转换,程序员无需进行任何的解码工作。
LAJP开源项目的网址:http://code.google.com/p/lajp/
LAJP开源项目的Wiki文档的网址:http://code.google.com/p/lajp/w/list
LAJP开源项目的下载地址:http://code.google.com/p/lajp/downloads/list
此文章已转载到我新的blog中: http://programmerdigest.cn/category/lajp
相关文章推荐
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第四部分-增删改查示例程序
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第二部分-HelloWorld(windows)
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第二部分-HelloWorld(Linux socket)
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第二部分-HelloWorld(Linux 消息队列)
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第三部分-LAJP规范用法
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】在PHP中通过系统信号量加锁方式获取递增序列ID
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】Linux下消息队列和socket绝对速度比拼
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】新瓶装老酒--PHP结合Java构建Web应用的新思路
- LAJP系列教程–第一部分–简介
- Java EE 7 教程 第一部分 简介 第1章 概述 第1.1节 Java EE 7 平台亮点
- LAJP系列教程-第四部分-增删改查示例程序
- Java EE 7 教程 第一部分 简介 第1章 概述 第1.2节 Java EE 应用模型
- Java EE 7 教程 第一部分 简介 第1章 概述 第1.9节 GlassFish服务器工具
- Java EE 7 教程 第一部分 简介 第2章 使用教程示例 第2.3节 启动管理控制台
- Java EE 7 教程 第一部分 简介 第2章 使用教程示例 第2.6节 教程示例目录结构
- 构建自己的AngularJS,第一部分:作用域和digest 转摘:http://www.ituring.com.cn/article/39865
- 学习ApacheHttpComponents,HttpCore第一部分,基本翻译官方教程
- Java EE 7 教程 第一部分 简介 第2章 使用教程示例
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二十) 第一部分拓展小结篇
- Java EE 7 教程 第一部分 简介 第1章 概述 第1.5节 Web服务支持