`
Tin
  • 浏览: 138059 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java交互管理工具——SecureJSH发布

阅读更多
本文已经发表于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的使用方法,相信一定会有所收获。

分享到:
评论
1 楼 galaxystar 2007-07-30  
这个工具是不是
类似eclipse debug里的display, 编写一部分代码, 在远程服务器里动态执行?

相关推荐

    win64 CC2022.zip

    SmartTools InDesign插件

    深度学习课程的课程设计-------基于ResNet优化模型的阿尔茨海默症的识别.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

    机械设计课程设计说明书_带式输送机传送装置_西北工业大学.doc

    机械设计课程设计说明书_带式输送机传送装置_西北工业大学.doc

    风格化欧洲城镇建筑场景模型:Modular European Town v1.1

    使用 “模块化欧洲小镇” 包来改变你的游戏世界!这个套装提供了你设计一个充满活力的低多边形城市所需的一切。 套装包括: 模块化建筑:各种结构可创造多样化的建筑设计。 自然元素:树木、灌木丛和植物,以增加你的小镇的绿色景观。 基础设施:道路、人行道、边界和墙壁,以构建一个逼真的布局。 不同的道具:很多物品,如消防栓、路灯、咖啡馆桌椅、垃圾桶、长椅等等。 所有模型都采用低多边形美学制作,确保出色的性能和独特的视觉风格。这个套装非常适合所有平台上的游戏:移动设备、桌面电脑和虚拟现实。它易于使用且高度可定制,让你轻松构建自己独特的欧洲风格小镇。用 “模块化欧洲小镇” 将你的愿景变为现实!(解释说明:“lowpoly” 即低多边形,是一种在游戏和数字艺术中常用的风格,以较少的多边形数量来呈现模型,通常具有简洁的外观和较好的性能表现。

    机械工艺课程设计 挂轮架轴自由锻工艺设计(全套图纸).doc

    机械工艺课程设计 挂轮架轴自由锻工艺设计(全套图纸).doc

    nvm-window v1.1.12

    nvm-window v1.1.12

    python自动化测试10: multipart类型接口

    multipart类型接口的介绍与使用

    机械创新课程设计_自动翻书机设计.doc

    机械创新课程设计_自动翻书机设计.doc

    “机械原理”课程设计自动打印机的设计.doc

    “机械原理”课程设计自动打印机的设计.doc

    SAP系统中采购订单‘确认控制’的操作指南

    内容概要:介绍了两种不同类型的采购订单‘确认控制’操作——‘确认控制’一步法(0004)和两步法(0001),并且阐述了它们各自的操作流程以及后台配置方式。还涵盖了另一种收货类型'粗收货'(0002),并通过具体的系统功能与菜单选项展示了一般性的操作步骤,并解释了它的背景及意义。 适合人群:需要理解并能够执行采购确认控制流程的供应链管理从业人员以及系统管理员。 使用场景及目标:帮助用户理解采购流程,特别是涉及到确认步骤以及粗收货的情形。目的是保证采购流程的准确性,提升仓库收货效率。 其他说明:文章详细描述了一系列系统功能与配置,包括采购订单的创建与更新,通过特定的功能码实现采购确认,内向交货单的处理和收货的具体操作,强调每一种确认控制方法背后的原理及其应用场景。

    【6层】4837.9平米六层框架综合办公楼(含计算书、建筑、结构图纸).zip

    【6层】4837.9平米六层框架综合办公楼(含计算书、建筑、结构图纸) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    AP9569GH-VB一款P-Channel沟道TO252的MOSFET晶体管参数介绍与应用说明

    -40V;-65A;RDS(ON)=10mΩ@VGS=10V;VGS=20V;Vth=-1.6V

    玻璃瓶印花机的设计机械原理课程设计.docx

    玻璃瓶印花机的设计机械原理课程设计.docx

    基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计)

    基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业

    阅读《Python深度学习-基于PyTorch》时的代码.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

    2024年中国低轨通信星座产业及海外拓展前景研究报告.pdf.zip

    2024年中国低轨通信星座产业及海外拓展前景研究报告.pdf

    基于几何约束的车辆3D检测的实现.zip

    基于几何约束的车辆3D检测的实现.zip

    【5层】4352.4平米框架办公楼(含计算书,建筑、结构图).zip

    【5层】4352.4平米框架办公楼(含计算书,建筑、结构图) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、本项目3比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、3本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    Suricata 下载 安装、使用- windows系统、linux系统 wincap或ncap软件需要另外下载安装

    Suricata 下载 安装、使用- windows系统、linux系统 wincap或ncap软件需要另外下载安装

    U.S.-infra-jobs-report(英文原版+中文翻译)美国电动汽车充电基础设施就业岗位的增长情况报告.zip

    美国充电基础设施

Global site tag (gtag.js) - Google Analytics