AICon上海「Agent与多模态解决方案专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

JBang Jash 为 Java 带来了简化的进程执行流程

  • 2025-05-19
    北京
  • 本文字数:1491 字

    阅读完需:约 5 分钟

大小:278.59K时长:01:35
JBang Jash为Java带来了简化的进程执行流程

JBang团队推出了JBang Jash(发音为 Jazz),这是一个 Java 库,旨在通过流畅且可预测的 API 简化外部进程和 shell 命令的执行,从而解决开发人员在使用标准 Java API(如 ProcessBuilderRuntime 中定义的重载 exec() 方法)执行这些任务时面临的常见复杂性和样板代码问题。

 

JBang Jash 旨在促进直观且可链式的进程执行,自动处理底层的输入/输出流管理。默认情况下,非零退出代码会被视为异常,这种行为是可以自定义的。它还支持在管道中传递命令,消除了手动流转发的需求,并且还能根据操作系统自动检测相应的 shell 环境,如 Bash、CMD 或 Powershell。


以下是一个使用纯 Java 的 shell 示例,需要手动处理流并进行显式错误检查。该示例运行"git status"并捕获输出:

 

// 没有使用JashProcessBuilder builder = new ProcessBuilder("git", "status");builder.redirectErrorStream(true);Process process = builder.start();BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {    System.out.println(line);}int exitCode = process.waitFor();if (exitCode != 0) {    throw new RuntimeException("Process exited with error code " + exitCode);}
复制代码


使用 Jash:

 

Jash.start("git", "status").stream().forEach(System.out::println);
复制代码

 

让我们再看一个如何在 Java 中管道化命令的示例,其中将小写文本转换为大写文本,并通过管道化 echo 命令的输出到 tr 命令中:

 

// 没有使用JashProcessBuilder echoBuilder = new ProcessBuilder("echo", "hello world");Process echoProcess = echoBuilder.start();ProcessBuilder trBuilder = new ProcessBuilder("tr", "a-z", "A-Z");Process trProcess = trBuilder.start();try (BufferedReader reader = new BufferedReader(new InputStreamReader(echoProcess.getInputStream()));     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(trProcess.getOutputStream()))) {    String line;    while ((line = reader.readLine()) != null) {        writer.write(line);        writer.newLine();    }    writer.flush();    trProcess.getOutputStream().close(); // 向tr发送EOF信号}int echoExit = echoProcess.waitFor();int trExit = trProcess.waitFor();if (echoExit != 0) {    throw new RuntimeException("echo failed with code " + echoExit);}try (BufferedReader resultReader = new BufferedReader(new InputStreamReader(trProcess.getInputStream()))) {    String line;    while ((line = resultReader.readLine()) != null) {        System.out.println(line); // 预期:HELLO WORLD    }}if (trExit != 0) {    throw new RuntimeException("tr failed with code " + trExit);}
复制代码


使用 Jash:

 

String result = Jash.start("echo", "hello world")    .pipe("tr", "a-z", "A-Z")    .get();System.out.println(result.trim()); // 输出:HELLO WORLD
复制代码

 

JBang Jash 基于 OnGres,Inc.在 2020 年发布的一个名为"fluent-process"的项目。该项目已经多年没有发布官方版本了,但在 2025 年被分支并重命名为"jash"(Java 和 Shell 的缩写),以反映其专注于为 shell 进程和流提供更符合 Java 17+接口的工作。

 

需要注意的是,Jash 可以集成到任何 Java 项目中,无需使用 JBang CLI 工具。

 

更多关于 JBang Jash 的示例和详细信息,请访问其GitHub仓库。

 

原文链接:

https://www.infoq.com/news/2025/05/jbang-jash/

2025-05-19 18:001

评论

发布
暂无评论

低代码时代来临,中小企业如何抓住数字化转型机遇?

天津汇柏科技有限公司

低代码 数字化转型

微信分享的CAD图纸在电脑上打不开是怎么回事?

在路上

cad cad看图 CAD看图王

1688API系列:1688图片搜索拍立淘接口指南

tbapi

1688图片搜索接口 1688拍立淘接口 1688图片识别接口 1688图片搜索API

百观科技基于阿里云 EMR 的数据湖实践分享

阿里云大数据AI技术

数据库 大数据 OSS OLAP EMR

2025年春招:如何使用DeepSeek优化简历,轻松敲开心仪公司的大门

安全乐谷

Java 面试 简历 笔试 春招

美国数学奥赛题,六套AI模型得分不足5%!

grandocean

Claude LLM模型 openai o1 QwQ DeepSeek R1 模型

等保整改服务

黑龙江陆陆信息测评部

AI to B奇点将至,“伙伴+华为”体系如何跨越数智鸿沟?

Alter

西电整体替换SAP!用友BIP支撑装备制造业务运营和成本精细化管控升级!

用友BIP

智能体 数智化 用友BIP 一体化

人工智能中的RAG技术在测试领域的探索

测试人

人工智能

南京大学首上和鲸科技人工智能通识课!校企共育 AI 人才

ModelWhale

人工智能 大数据 教育 高等教育 南京大学

中小企业怎么低成本实现智改数转

积木链小链

数字化转型 智能制造 中小企业

原生APP开发的性能优势

北京木奇移动技术有限公司

软件外包公司 原生APP开发 APP外包公司

混合APP开发框架及性能

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP外包开发

Apple Safari 18.4 - macOS 专属浏览器 (独立安装包下载)

sysin

safari

离线VS强制登录?Apipost与Apifox的API工具理念差异深度解析

数据追梦人

「DeepSeek-V3 技术解析」:无辅助损失函数的负载均衡

Baihai IDP

AI LLMs Baihai IDP MoE 混合专家模型

感受一下『迅雷』的面试强度

王中阳Go

Go 面试 后端 迅雷

2025 年 AppSheet 最佳开源替代品

NocoBase

开源 低代码 零代码 无代码 AppSheet

Apache SeaTunnel MCP Server:让AI成为你的ETL助手

Apache SeaTunnel

深入理解 StarRocks Bitmap 索引和 Bitmap 去重

镜舟科技

StarRocks Bitmap 索引 Bitmap 去重 高基数列 精确去重

音乐NFT软件项目的性能优化

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

阿里云 AI 搜索开放平台新发布:增加 QwQ 模型

阿里云大数据AI技术

人工智能 阿里云 强化学习 AI搜索 QwQ

新疆中泰携手用友开启智慧司库建设新征程

用友BIP

智能体 数智化 用友BIP 智慧司库建设

拼多多商品详情接口(pdd.item_get)

tbapi

拼多多商品详情接口 拼多多API 拼多多商品数据采集

相比于DeepSeek,Manus有哪些优势

老张

大模型 DeepSeek Manus

CAD如何进行图形统计并导出表格?

在路上

cad cad看图 CAD看图王

事务处理对持久统计信息自动收集的影响

GreatSQL

音乐 NFT 项目的上线流程

北京木奇移动技术有限公司

区块链技术 软件外包公司 音乐NFT

1688商品列表数据接口(1688.item_search)

tbapi

1688商品列表接口 1688API 1688商品数据采集 1688数据采集

Cursor搭配专业编程显示器:点燃你的代码激情

默语

JBang Jash为Java带来了简化的进程执行流程_后端_AICon 全球人工智能开发与应用大会_InfoQ精选文章