本文已经发表于InfoQ
JavaEye上活跃的开发者Complystill(歆渊)最近发布了自己的开源SecureJSH项目,提供了一个通过SSH交互进行Java应用开发或者管理的工具。
在项目的介绍中可以得知,SecureJSH与Ptyhon里面的ipython或者Ruby里面的irb非常相似。它们都允许交互式运行语言的代 码,以方便跟踪或者调试应用。但是,Java与Ruby、Python不同,后者是动态脚本语言,它们天生具有解释执行的特点(注意:当然Python支 持预编译,Ruby也将在YARV中开始支持,这里指它们的解释执行状态)。我们常见的Python和Ruby发行版本基本上都包括自己的解释器(这也是 它们的核心组件),但是Java是一种需要中间编译过程的语言,默认情况下它无法直接解释运行,也没有相应的解释器。
那么SecureJSH是如何实现的呢?读者首先会想到JSR-223,这个API可以自己扩展脚本语言支持,比如rhino是 Javascript解释引擎。但是使用它难以实现交互操作,因为它必须输入一个相对完整的脚本才可以运行,这样会丧失一部分交互性。SecureJSH 实际上是使用了JDK 6.0的新特性Java Compiler API(JSR-199),它提供了一组API来让程序可以动态地访问Java编译器的接口,这样就可以使用Java编译器动态检查代码语法或者动态根据 Java源码生成可以执行的字节码。这种方式与ASM的编程直接生成字节码不同,它能直接将Java源码转换为字节码,XRuby的主力开发者郑晔(网名 dreamhead)在他的Blog中这样对比了两种方案:
之前,刚刚在Blog中提到ASM, 里面的代码生成工作是通过直接写 字节码完成的。现在有了Compiler API,可以考虑生成代码以Java源码的形式完成,然后,通过调用Compiler API对源码进行动态编译,这样,可以达到同直接写字节码类似的作用。使用Compiler API,肯定不如直接生成字节码来得高效,但对于不了解JVM指令的人来说这也许是一种解决方案。
可见JSR-199不是最高效的字节码生成方案,但是更方便使用。Java Compiler API不是为了取代ASM这样的方案的,它的本意是以编程的方式实现实时编译及信息反馈。Java目前的主要架构师之一Peter von der Ahé曾经在他的Blog对谁需要使用Java Compiler API这个问题做了如下解释:
99%的Java开发者都不需要了解Java Compiler API。只有少数的开发者会直接应用这个API。但是IDE、Java EE应用程序服务器、Maven或者Ant还有测试框架的开发者却不一样,他们有一个共同点,就死需要调用编译器将Java源码转换为类文件(他们是这个 API的潜在用户)。
可见JSR-199的产生主要是面向热部署或者增量编译这样的场合,但是SecureJSH的产生扩展了Java Compiler API的应用场景,同时也增强了Java和JVM的交互性。Complystill这样介绍了SecureJSH的应用场景和需求:
SecureJSH允许Java编写的服务器端应用程序为管理员、客户、开发者和客户端服务提供一个安全shell,这里可以交互性地让Java语言逐句运行。SecureJSH需要JDK 6.0或者JRE 6.0加JAVAC(在classpath中)来运行。
SecureJSH的官方首页这样描述了它的主要特性:
- 安全:SecureJSH在服务器端实现了RFC-4251,SSH 2.0协议,支持公钥认证,这种方式方便安全(不需要每次输入密码)。
- 交互式执行:传 统的方式下,在运行Java源代码之前你必须将它们编译为字节码。但是使用SecureJSH,编译的过程是透明完成的,所以你只需要随意输入一些 Java表达式(就可以运行)。这意味着你可以使用你书写应用程序时完全相同的语法,与最新的Java语言规范同步。你可以在你的Java项目源码和 SecureJSH终端里面拷贝&粘贴任何代码,都没有问题。
- 智能命令识别,UNIX Shell风格:不 像JSR-223(Java Scripting Engin,Java脚本引擎)对Java语言的脚本的支持,在(Java脚本引擎)里面你必须将Java类的全部代码输入后才可以执行, secureJSH更加智能和人性化,如果你输入了不完整的Java表达式,它会自动提示你进行多行的输入,然后将这些表达式包装到一个预先定义的类结构 中来执行。它是一个真正的Shell。
- 没有相互干扰,最小化资源消耗:SecureJSH没有需要储存在JVM范围的静态资源,每一个实例只消耗很少量的资源(基于NIO实现,所有的SSH通讯都由一个线程处理)。你可以按照你的想法在一个JVM里面运行任意多个shell服务,包括Java应用程序服务器的JVM。
作为一个开源项目,SecureJSH使用了ganymed的纯Java实现的SSH 2.0库,并使用Java NIO编写了网络服务,代码质量很高。据Comply Still介绍,SecureJSH最初是为内存数据库TOB设计的,为这个面向对象数据库提供交互访问的接口,但是后来作者发现它可以被应用在很多场 合,所以单独开源发布。作为Java开发者,您可以从这里下载源码从中学习SSH 2.0、NIO网络服务、Java Compiler API的使用方法,相信一定会有所收获。
分享到:
- 2007-07-30 13:47
- 浏览 4285
- 评论(1)
- 论坛回复 / 浏览 (1 / 3486)
- 查看更多
相关推荐
buct计算机系统综合设计课设
"半桥LLC谐振变换器:开环、闭环仿真设计与参数详解报告——含32页说明文档与Simulink模型",半桥LLC谐振变器开环+闭环仿真设计资料 附带一份32页配套说明文档详细参数设计、原理说明、仿真分析 开环、闭环、闭环+软启动三个Simulink仿真模型, 附带了配套设计说明报告,给出了谐振槽谐振元件参数的设计步骤,并对参数进行了完整设计。 可以参考说明文档设计不同功率等级的LLC谐振变器 ,半桥LLC谐振变换器; 开环仿真设计; 闭环仿真设计; 软启动仿真模型; 设计说明报告; 谐振槽谐振元件参数设计步骤。,"LLC谐振变换器:开环闭环仿真设计资料及详细参数说明"
证书_00008030-001079D21A53402E.zip
深入探索Comsol SOFC:固体氧化物燃料电池的仿真与性能分析(涉及温度场、气体分布及曲线表现),Comsol sofc固体氧化物燃料电池仿真(温度场分布,气体分布,极化曲线,性能曲线) ,Comsol; SOFC; 固体氧化物燃料电池; 仿真; 温度场分布; 气体分布; 极化曲线; 性能曲线,Comsol SOFC仿真:温度场与气体分布分析的极化性能曲线
学生竞赛管理系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
deepseek最新技术文档中英文对照版
COMSOL模拟下的激光热致等离子体作用模型探究,Comsol模拟激光热致等离子体模型 ,Comsol模拟; 激光热致等离子体模型; 模型模拟。,Comsol模拟激光热等离子体模型
冲压成形虚拟仿 真实验系统构建与关键技术研究.pdf
Firefox浏览器page_assist-1.4.4离线插件,deepseep大模型一起用的WEBUI插件
《基于Comsol仿真的热光伏电池(TPV)研究》,comsol仿真:热光伏电池(TPV) #comsol仿真 ,comsol仿真;热光伏电池(TPV);光伏模拟,"Comsol仿真技术在热光伏电池(TPV)领域的应用"
"COMSOL有限元仿真模型:三相变压器多物理耦合模型中的电磁-声-结构力分析,涉及应力、磁密及声场多维研究",COMSOL有限元仿真模型,三相变压器电磁-声-结构力多物理耦合模型,应力分析,磁密分析,声场分析 ,核心关键词:COMSOL有限元仿真模型; 三相变压器; 电磁-声-结构力多物理耦合模型; 应力分析; 磁密分析; 声场分析; 关键词以分号分隔为:COMSOL有限元仿真模型;三相变压器;电磁耦合模型;声-结构力耦合模型;应力分析;磁密分析;声场分析。,有限元模型下的电磁-声-结构多物理耦合仿真研究
"灰狼算法驱动的MPPT跟踪:光照突变情况下的部分遮阴处理与波形图分析",灰狼算法实现部分遮阴的MPPT跟踪,包括光照突变情况,包括灰狼算法程序和matlab simulink模型的搭建,功率,电压,电流波形图和占空比波形图入如下。 ,核心关键词:灰狼算法; MPPT跟踪; 光照突变; 程序实现; MATLAB Simulink模型; 功率波形图; 电压波形图; 电流波形图; 占空比波形图。,灰狼算法MPPT跟踪与Simulink模型搭建
"BLDC无刷直流电机双闭环矢量控制仿真研究与实践:模型构建、性能验证与学习资源",BLDC无刷直流电机双闭环矢量控制仿真 仿真为BLDC无刷直流电机的双闭环控制,仿真配套的说明文档详细的描述的每个模块的搭建以及作用。 适合学习BLDC的同学使用学习。 仿真通过对给定转速的突变验证双闭环控制的性能,结果表明,控制相应速度快,转速跟踪稳定,能完美实现功能。 文件包括: [1]仿真模型 [2]详细说明文档 [3]相关参考文献 ,BLDC无刷直流电机;双闭环矢量控制;仿真;模块搭建;性能验证;学习;控制响应速度;转速跟踪稳定。,"BLDC无刷直流电机双闭环矢量控制仿真研究报告"
EB-PVD设备灯丝加热电源的研制.pdf
国外人形机器人技术前沿及产业发展形势研判.pdf
基于comsol技术的冻土路基水热耦合研究,comsol冻土路基水热耦合。 ,comsol; 冻土; 路基; 水热耦合,"水热耦合下的comsol冻土路基研究"
COMSOL模拟光子晶体六边形晶格结构:第一布里渊区能带简述,COMSOL光子晶体六边形晶格简约第一布里渊区能带 ,COMSOL;光子晶体;六边形晶格;简约;第一布里渊区;能带,光子晶体六边形晶格的能带研究
基于英飞凌XMC4500的永磁伺服电机液压伺服驱动器方案——高效稳定的注塑机控制解决方案,液压伺服驱动器,英飞凌XMC4500方案,为永磁伺服电机(PMSM)而开发的液压伺服方案,采用高性能的矢量控制技术,配置了针对注塑机驱动过程中的工艺过程动作特性的优化,如注塑速度、压力保持精度控制,以及与注塑机控制器配合工作时的平稳性控制,同时还具备后台软件监控、通讯总线功能,支持多种编码器类型,组合功能丰富强大,性能稳定。 此方案主要应用于塑料成型、管材挤出、制鞋、橡胶、金属压铸等行业,油压控制性能进一步提升、压力和速度响应更快,稳态压力波动更小,体积更小。 驱动板、键盘板、PG卡等)源文件,资料非常详细完整 ,液压伺服驱动器; 英飞凌XMC4500方案; 永磁伺服电机PMSM; 矢量控制技术; 注塑机驱动工艺; 速度压力控制; 通讯总线功能; 编码器类型; 塑料成型; 管材挤出; 制鞋; 橡胶; 金属压铸; 油压控制性能; 体积小。,"英飞凌XMC4500永磁伺服液压驱动方案:多行业应用的高效稳定驱动器"
基于高频方波电压注入的IPMSM无感控制算法Simulink仿真模型研究与实践应用,基于高频方波电压注入零低速IPMSM无感控制算法simulink仿真模型 ①在估计的d轴注入高频方波电压来估计转子位置,具有较高的稳态精度和动态性能。 该仿真调试效果不错,曾应用到实际电机中去。 ②阐述了 IPMSM 的 MTPA 控制原理,并在此基础上研究了 IPMSM 基于 高频方波电压信号注入法的无位置传感器控制算法。 仿真结果表明基于高频方波 电压信号注入的无位置传感器控制方法具有不错的动静态性能 ,核心关键词: 1. 高频方波电压注入 2. 零低速IPMSM无感控制算法 3. Simulink仿真模型 4. 转子位置估计 5. MTPA控制原理 6. 动态性能 7. 稳态精度 8. 无位置传感器控制方法,基于高频方波电压注入的IPMSM无感控制算法Simulink仿真模型及效果分析
基于代理的跨站脚本攻击防御研究.pdf