php是一种基于,一种基于Java技术的PHP编译器的设计与开发

2023-11-12

收稿日期:2003 - 06 - 03 作者简介:朱 (1976 - ) ,男 ,江苏南京人 ,江苏广播电视大学现代教育技术中心助理工程师。 一种基于Java 技术的 PHP 编译器的设计与开发 朱    (江苏广播电视大学 ,江苏 南京 210036) 摘  要 :为提高 PHP 程序的运行效率、规模支持能力和跨平台性 ,可以设计一个基于 Java 技术的编译器 ,将 PHP 程序直接编译成Java 虚拟机的二进制字节代码。这个编译器采用经典的前端/ 后 端(fontend/ back2end)式结构 ,前端程序对源程序进行扫描、分析后生成抽象语法树 ,后端程序遍历 抽象语法树生成 Kawa IR 的表达式序列 ,并最终生成目标代码。 关键词 :Java ;PHP;编译器 中图分类号 : TP391. 2   文献标识码 :A   文章编号 :1008 - 4207(2003) 06 - 0028 - 03   PHP 是一种广泛使用的开放源码的 HTML 内嵌式脚本语言 ,它混合了 C、Perl 的语法 ,易于学习 ,是现在比较流行的服务器编程脚本语言。但是 ,PHP 本身存在的一些缺点 ,制约了 PHP 在更大范围内的应用。 首先 ,PHP 采用解释运行方式 ,同时在 HTTP 服务器上以进程方式被调用 ,所以 ,其运行效率较低 ;其次 ,PHP 缺乏规模支持、缺乏多层结构支持 ,这就使得它不适合运用在一些大型项目中 ,如电子商务的应用 ;最后 ,由于PHP的跨平台采用硬代码方式实现 ,所以 ,有一定的局限性。 要提高 PHP 脚本的运行效率、规模支持能力以及跨 平台性 ,我们可以引入Java 技术。   一、设计方案 我们常说的“Java 技术”一般包含两个不同的概念 , Java 语言本身和它的运行环境 ———Java 虚拟机(Java Vir2tual Machine) 。这里引入 Java 技术是指将 PHP 程序移植到Java 虚拟机上。现在 Java 技术的应用越来越广泛 ,尤其是在嵌入式系统中 ,如市场上已经出现了内嵌 Java 虚拟机的手机、PDA 等民用产品。如果将 PHP 移植到 Java 虚拟机上 ,那么 ,只要在 Java 虚拟机的机器上 ,就可以运 行 PHP 程序 ,这能极大地扩展 PHP 的应用范围。尽管Java 语言也是一种解释型程序 ,但 Java 虚拟机所解释运 行的是预编译过的二进制字节代码 ,其运行效益要高于普通的解释型程序 ,同时 ,在 HTTP 服务器上Java 程序是以线程方式被调用运行的 ,这样就可以解决 PHP 程序运行效率低的问题。最后 ,移植到Java 虚拟机之后 ,在 PHP 程序中就可以毫无障碍地调用大量的 Java 类库 ,与已有的Java 程序进行整合 ,甚至能成为 J2EE 平台的一部分 , 参与电子商务的平台构建。 一般来说 ,有三种方式可以将一种程序设计语言移植到Java 虚拟机上。 (1)用Java 专门为某程序设计语言写一个解释程序 (interpreter) 。因为解释程序可以对该语言独有的特性给予很好的支持 ,所以 ,这种方法方便、直接而且具备较好的针对性 ,同时 ,还可以让该语言充分利用 Java 虚拟机的垃圾收集机制和大量的 Java 类库。TCL 、ruby 和 Python 都采用这种方法进行移植。但是 ,由于这种方法是在Java 虚拟机上再构建一层解释程序 ,所以运行速度慢。 (2)将某语言编写的源程序直接翻译成 Java 源程序。这种方法的优点是可以解决

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php是一种基于,一种基于Java技术的PHP编译器的设计与开发 的相关文章

  • PHP SQL实现公司数据库的增删改查

    文末附文件 题目要求 Use the following SQL DDL statements to create the six tables required for this project Note that you need to
  • python之celery

    Celery是由Python开发的一个简单 灵活 可靠的处理大量任务的分发系统 可以实时处理任务 也可以定时异步处理任务 每次分发任务后得到一个ID 然后根据这个ID查询任务执行情况 安装 pip install celery eventl
  • sqllabs详解与知识点汇总(内含代码审计)

    sqllabs 1 65 详解 关于注释符的详解 SQL注入注释符 使用条件及其他注释方式的探索 impulse 博客园 cnblogs com HTTP请求方法 GET 对比 POST HTTP 方法 GET 对比 POST 菜鸟教程 r
  • docker基本操作

    Docker官方建议在Ubuntu中安装 建议安装在CentOS7 X以上版本 1 安装Docker 1 yum包更新到最新 sudo yum update 2 安装需要的软件包 yum util提供yum config manager功能
  • java.math.BigDecimal用法

    Java在java math包中提供的API类BigDecimal 用来对超过16位有效位的数进行精确的运算 双精度浮点型变量double可以处理16位有效数 在实际应用中 需要对更大或者更小的数进行运算和处理 float和double只能
  • 继承和多态的内存图解

    今天被继承和多态困扰 在CSDN上找了好几个内存分配讲解 个人感觉不全吧 就把他们做了个整合 讲解的是多态的方法和成员调用和继承中的方法和变量的调用 什么是多态 同一个对象 在不同时刻表现出来的不同形态 多态的前提 要有继承或实现关系要有方
  • web robotframework xpath元素定位

    1 定位购买按钮 在这里 我写的是 td class text center button class ng isolate scope span text 购买 提示找不到元素 原因是button的class值 我把他改成class bt
  • 调试osgEarth(七)地图map图层的构建过程-添加layer(4)--打开ImageLayer

    继续调试 创建空影像 建了个1x1x1的空图片 这个也比较简单 ImageLayer建立了一个1x1x1的空图片
  • spring boot 2.x 应用可视化监控

    来源 简书 内容 应用可视化监控 prometheus grafana https www jianshu com p 7ecb57a3f326 修改为spring boot 2 0时 1 首先 添加依赖如下依赖
  • E: Unable to locate package kubelet 解决

    昨天搭建k8s集群环境时 安装报错 显示无法找到 1 打开vim etc apt sources list 写入阿里云的源 deb https mirrors aliyun com kubernetes apt kubernetes xen
  • aiVMS----CentOS7.6安装RabbitMQ安装

    entOS7 6安装RabbitMQ安装 安装一 快速的安装方法是使用Package Cloud提供的脚本 Package Cloud也可以用于通过yum安装最新的Erlang版本 使用PackageCloud安装RabbitMQ 官网参考
  • table问题总结

    前景 最近开发需要原生table 之前使用很少用 了解比较少 这次对于样式和功能要求也比较高 对与遇到的问题做下总结和分享 问题与解决方案 行高不定问题 描述 表格每一行的高度不确定 会自动适配 设置行高和高度均无效 产生原因 表格设置了固
  • R语言用ROCR包出现载入程辑包:‘gplots’ The following object is masked from ‘package:stats’错误

    谢谢点进来 如果你觉得有帮助 麻烦点个赞 假如在R studio运行的代码是这样的 library ROCR 首先看到这个问题的时候 我认为没有安装gplots包 可以按下图所示看是否有该包 如果没有则点击install输入包名安装 奇怪的
  • Ledger of Harms

    Under immense pressure to prioritize engagement and growth technology platforms have created a race for human attention
  • JavaScript快速排序算法

  • C#单线程和多线程端口扫描器

    C 单线程和多线程端口扫描器 一 项目创建以及页面设计 一 项目新建 二 页面设计 二 单线程实现端口扫描 一 代码实现 二 运行结果 三 多线程实现端口扫描 一 程序实现 二 运行结果 四 总结 五 参考资料 一 项目创建以及页面设计 一
  • JCenter下载太慢?教你修改Maven仓库地址为国内镜像

    转载自 http www yrom net blog 2015 02 07 change gradle maven repo url 近来迁移了一些项目到Android Studio 采用Gradle构建确实比原来的Ant方便许多 但是编译
  • StyleCLIP学习笔记

    https github com orpatashnik StyleCLIP The main inferece script is placed in mapper scripts inference py Inference argum
  • 安装librocksdb.so.4.1的共享库

    安装librocksdb so 4 1的共享库 注 以下命令需在root模式下进行 1 clone rocksDB 命令行运行git clone https github com facebook rocksdb git 2 切换到4 1

随机推荐

  • Java调试原理初探

    对于所有程序员 程序调试是一项必备的技能 在java程序中 最简单的就是通过 System out println 来打印输出各种变量来发现问题 而用的最多的莫过于通过各种调试器来进行调试 如图一所示的eclipse调试器 甚至还可以进行远
  • 微信号正则校验

    由于最近有朋友做微信开发 让我帮其找一个微信号正则校验 代码 本来以为网上会有很多 但一搜才发现 没有一个可用的校验微信号的正则 所以只好自己写一个了 废话不多说 直接贴结果 首先我们要明确微信号规则 微信账号仅支持6 20个字母 数字 下
  • linux内核分析笔记----内核同步

    内核同步讲的比较多了 我也就不太啰嗦了 先说一些概念 然后就是方法 同步就是避免并发和防止竞争条件 有关临界区的例子我就不举了 随便一本操作系统的书上都有 锁机制的提出也算解决了一些问题 我们待会再说 现在只要知道锁的使用是自愿的 非强制的
  • 【机器学习】鸢尾花Iris数据集进行线性分类

    目录 一 实验准备 二 线性分类 1 原始数据 2 训练模型 3 绘制决策边界 4 设置参数C 三 鸢尾花数据集分类 1 取萼片的长宽作特征分类 2 取花瓣的长宽作特征分类 四 参考 一 实验准备 安装python3 6 3 7 Anaco
  • crypto++加密算法库的编译和在项目中的使用

    简述 Crypto Library是一个免费的C 类加密方案库 该库包含以下算法 算法 名称 认证的加密方案 GCM CCM EAX 高速流密码 ChaCha 8 12 20 Panama Sosemanuk Salsa20 8 12 20
  • QT Modbus RTU调试助手(包含算法实现CRC MODBUS16校验)

    QT Modbus RTU调试助手 在类构造函数中将UI初始化和串口对象定义以及查找串口 串口设置 串口接受 QT延时函数 CRC校验 发送串口数据函数 总结 在类构造函数中将UI初始化和串口对象定义以及查找串口 foreach const
  • ElementUI el-table组件 树形数据不对齐的解决方案

    ElementPlus的el table组件在展示树状数据时 左侧的展开小箭头在部分情况下会导致第一列数据起始位置不对齐 添加一段css即可解决 环境 Vue3 0 Element Plus 1 0 2 beta 55 先看默认效果 效果图
  • Exception starting filter struts2 java.lang.NullPointerException 解决方法

  • springboot线程池ThreadPoolTaskExecutor使用

    https mp weixin qq com s 3DRBX9Wb OA NIfPXZjcw 前言 程池ThreadPoolExecutor 而用的是Spring Boot项目 可以用Spring提供的对ThreadPoolExecutor
  • Github搭建个人博客(2019最新版,亲测)

    版权声明 本文为徐代龙原创文章 未经徐代龙允许不得转载 https blog csdn net xudailong blog article details 78762262 敲黑板 如何写一个自己的小程序并上线 一 前言 建议 慢慢看 也
  • Windows Java环境变量设置 & Maven环境变量设置 & 常用环境问题设置

    Windows Java环境变量设置 Maven环境变量设置 常用环境问题设置 1 Java环境变量设置 Java8环境变量设置 1 进入环境变量设置界面 我的电脑 gt 属性 gt 高级系统设置 gt 环境变量 2 创建系统变量JAVA
  • 强化学习原理与python实现原理pdf_深度强化学习笔记——DQN原理与实现(pytorch+gym)...

    概要 本文主要总结深度强化学习中无模型基于值方法的DQN算法 说明其算法原理并用该算法在gym提供的cartpole上进行实现 有任何不准确或错误的地方望指正 1 DQN Deep Q Network 基本原理 DQN算法相当于对传统Q l
  • Python爬取的BOSS直聘的数据

    临近年末 互联网寒冬 的来临让大家倍感压力 大家纷纷感叹寒冬将至 但是 越是这个时候 越要明确自己的奋斗目标 不断的充实自己 提高自己的能力 为找工作打下坚实的基础 本次我们爬取了招聘网站上关于计算机视觉方向的招聘信息 并对于招聘信息进行分
  • 如何免费使用ChatGPT

    前段时间想使用一下CahtGPT产品说明文档 找了一大圈国内基本都收费或者需要开通会员的 需要使用所谓的算力 其实相对于所谓的算力和会员也可以理解 做一款产品是需要营利的 只是这个费用太贵了 可以对比一下官方报价 国外 国内 ChatGPT
  • 高级软件工程课程总结

    1 初识软件工程 1 1软件无处不在 软件定义世界 成为社会发展的潮流 软件在人类生活中扮演者越来越重要的角色 软件已经成为一个极其重要的产业形态 软件是软件工程的研究对象 也是软件工程的产品形态与客观存在 工程是将理论和知识应用于实践的科
  • PS制作表情包

    表情包制作 素材 效果图
  • Elastic学习:ES安装以及head插件安装

    这里首先先安装ELK三剑客 ElasticSearch LogStash Kibana 里面的ElasticSearch在widnows上的安装 如果官网下载慢或打不开的的话 可以尝试搜一下国内的镜像或者网盘什么的 1 下载解压安装包 2
  • python整数类型bcdoxx_appium+python搭建自动化测试框架_Tools安装(一) - 为你开出一树春天 - 博客园...

    appium python搭建自动化测试框架 Tools安装 一 作者的配置环境和版本 win10 python3 6 Appium v1 4 16 1 下载node https nodejs org en download 下载node
  • 【GIT】git 错误记录

    目录 error Your local changes to the following files would be overwritten by merge xxx git error the following untracked w
  • php是一种基于,一种基于Java技术的PHP编译器的设计与开发

    收稿日期 2003 06 03 作者简介 朱 1976 男 江苏南京人 江苏广播电视大学现代教育技术中心助理工程师 一种基于Java 技术的 PHP 编译器的设计与开发 朱 江苏广播电视大学 江苏 南京 210036 摘 要 为提高 PHP