报课、招生咨询电话:010-51268840/41

首页 > 计算机考试 > JAVA考试认证 >
→论坛登陆 用户名  密码  
Java编程交互管理工具:SecureJSH新特性

作者: 发布时间:2008-06-03 16:05:29 来源:育路计算机考试
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年夏令营联展
 更多有关新闻:
 
·[考试动态2008年医师资格考试网上报名须知 ·[考试动态2008年医师资格考试3月10日开始网
·[考试动态卫生部医师资格考试委员会公告 ·[考试动态2008年医师考试于9月20至21进行
·[考试动态关于北京考区2008年度国家医师资 ·[考试动态崇文区卫生局关于北京考区2008年
·[考试动态丰台区卫生局关于北京考区2008年 ·[考试动态2008年上海市医师资格考试(考区
·[考试动态2008年医师资格考试(天津考区) ·[考试动态惠州市卫生局关于2008医师资格考
·[考试动态无锡市关于2008年医师资格考试网 ·[考试动态关于珠海市2008年医师资格考试的
·[考试动态韶关市关于2008年医师资格考试网 ·[考试动态深圳市关于2008年医师资格考试深
·[考试动态杭州市卫生局关于2008年医师资格 ·[考试动态丽水市关于2008年医师资格考试报
发表评论
用户名: 密码:
验证码: 匿名发表
课程搜索:
选择分类:
课程关键字:
课程 学校
 2008年首都高校秋季招生
北京理工大学2008年招生简章
北京文理研修学院2008年招生简章
北京建设大学2008年招生简章
北京中山学院2008年招生简章
北京城市学院2008年招生简章
培黎职业学院2008年招生简章
北京金融学院2008年招生简章
北京吉利大学2008年招生简章
北方工商管理学院2008年招生简章
 本周推荐课程
·初中起点雅思半年脱产 ·启德雅思6分冲刺课程
·新概念1+2册慢速精讲课 ·环球新托福100分强化
·北文王长喜四级强化班 ·英语四、六级培训课程
·海文考研数学课程 ·海文考研英语课程
·北大企业管理高级研修班 ·清华企业领导人研修班
·中美高中生交换项目 ·北工大中加学院2+2本科
·劳动和社会保障部物流师 ·物业管理师职业培训
·市场营销经理国际资格 ·现场管理实务培训
清华大学留学
中法管理硕士预科班
课程咨询热线:010-51268840 51268841
 最新新闻
·2008年乌鲁木齐市将招考376名公务员
·陕西公务员面试分数确定空缺职位调剂办法
·新疆区确定公务员招考笔试加分对象和标准
·2009年公务员考试申论热点:抗震救灾信息公开
·新疆:2007年1月20日地方公务员考试面试真题
·新疆:2007年1月21日地方公务员考试面试真题
·新疆:2007年1月22日地方公务员考试面试真题
·新疆:2007年8月20-21日公务员考试面试真题
·河南:2008年法检系统招考《申论》备考指南
·湖南:08年长沙市考录公务员有关面试事宜的通
 育路社区            进入>>
 
学员报名服务中心: 北京北三环西路32号恒润中心1806(交通位置图
咨询电话:北京- 010-51268840/41 传真:010-51418040 上海-021-64392659、64397431
育路网-中国新锐教育社区: 北京站 | 上海站 | 郑州站| 武汉站
本站法律顾问: 邱清荣律师
北京育路互联科技有限公司版权所有 | 京ICP备05012189号