java登录界面命令_Java命令行界面(第30部分):观察

java登录界面命令

这个有关Java命令行参数解析的系列文章由四个月来发表的29篇帖子组成,涵盖了28个不同的开放源代码库,可用于解析Java命令行参数。 这篇文章收集了可以从本系列的前29篇文章中得出的一些观点,并提供了选择28个库中的一个或决定使用自己的命令行参数解析代码时要考虑的一些一般注意事项。 尽管没有一个图书馆会最适合每种情况,但本文还将着眼于某些图书馆在特定情况下可能比其他图书馆更适合。 该帖子将以原始28个库的一个子集结尾,根据该帖子所涉及的一些标准,这可能是所涵盖库中最吸引人的。

一般观察

查看本系列中涉及Java解析命令行参数的28个库之后,可以得出一些结论 。

  • 对于大多数情况下的大多数Java开发人员而言,似乎没有什么理由编写自定义命令行解析代码 。
  • 大量基于Java的库,用于解析命令行参数,以指示Java生态系统的广阔性。
  • 所有28个涵盖的库都是开放源代码,这一事实提醒我们Java文化中基本开放源代码的地位如何。
  • 本系列文章所涵盖的库之间存在一些有趣的差异,各种不同的方法提醒我们,在Java中实现甚至相对较小的功能通常也有不止一种方法。
  • Java中有大量用于解析命令行参数的库,其中许多库与作者声明相关联,这些语句表明有关现有库的某些内容无法满足其需求,这表明不可能有单一语言,框架或库对每个人都是“最好的”。 如果不能将像命令行解析库这样简单的东西写成每个人都喜欢的东西,那么似乎不可能有一个更大的库,框架或编程语言成为每个人都喜欢的东西。 在库,框架和编程语言方面,“ 一种规格不能满足所有需求 ”。
  • 在评估和选择库时,不仅要考虑技术实力; 它的许可证,分配机制,货币,提供者支持和社区支持也都影响了决策。 甚至将要运行的Java版本都在决策中起作用。

评价标准

当在如此众多的库之间进行选择以及权衡是使用库还是实现自己的命令行参数功能时,这些规则对于Java开发人员而言可能很重要。

  • 它是开源的吗?
    • 在这种情况下,我对开放源代码的简单定义是“开发人员可以使用该库合法地查看源代码。”
  • 它的许可证是什么?
    • 发行每个库所依据的许可证对于确定是否选择该库具有重要意义。
  • 它的大小是多少?
    • 库的使用通常意味着在类路径上有一个附加的JAR,在某些情况下,对于特定的部署环境,使这些附加的库的大小保持尽可能小可能很重要。
  • 是否存在第三方依赖性?
    • 第三方库增加了库大小的整体增加,并意味着需要管理更多的依赖项。
  • 分配机制是什么?
    • 通过Maven存储库作为单个JAR的可用性可能是大多数Java开发人员获取库的最简单机制。
  • 文献资料
    • 本系列文章所涵盖的库以多种方式进行了记录,包括项目文档,Javadoc文档,单元测试和代码内注释。
  • 社区
    • 对于开源项目,拥有一个使用该产品的大型社区通常是有利的,因为大型社区意味着更多的隐式测试以及可能会有更多有关如何使用该项目的博客文章,文章和论坛消息。
  • 图书馆时代/最新更新
    • 较新并不总是更好,但与使用多年来未更新或更改的产品相比,使用接收当前和最新更新的开源产品通常更具吸引力。
  • 它提供什么功能?
    • 这是本系列中的库真正使自己与众不同的地方,但这是最难在库之间进行比较的标准,因为它实际上取决于所需的特定功能。

picocli GitHub 页面上的“ CLI比较”页面对本系列中涉及的许多库以及本系列中未涉及的一些库进行了比较和对比。 该页面通过列出每个库各自的属性(如许可证,支持的最低Java版本,API样式和支持的解析选项),以表格式比较库。

本系列涵盖了28种不同的库,用于解析Java的命令行参数。 为此,不可能在所有情况下都将其中任何一个指定为“最佳”库。 每个库都是其开发人员(或多个开发人员)对时间和精力的投资,但是我在这里尝试将库列表缩小到我认为最有可能吸引一般情况和开发人员的子集。

最有可能投票成功

以下库按字母顺序列出,而不是按我的偏爱顺序列出。

  • Apache Commons CLI
    • 在我看来,Apache Commons CLI在推荐的库的缩小子集中提供了最不美观的API。
  • args4j
    • args4j提供了许多功能并且具有高度可扩展性。
  • 指挥官
    • API由注释和构建器的易于使用的组合组成。
  • JewelCli
    • JewelCli的带注释接口方法吸引了我。
  • Picocli
    • 高度可读的基于注释的API。

尽管我列出了涵盖的28个库中的5个库的一个子集,但是由于某些原因,开发人员可能选择使用不在此缩小列表中的23个库之一。 不在此列表中的几个库提供了独特的功能,这些功能如果对Java开发人员来说足够重要,将使这些库优于上面列出的5个。

接下来的清单将一些涵盖库与它们相对独特的优势联系在一起。 即使它不是我刚刚强调的五个列表中的一个,也可能会选择其中的一个,如果它在特殊情况下具有独特的优势,并且是相关应用程序最重要的考虑因素之一。 列出的许多“特征”是喜好或品味的问题,这意味着具有列出的特征的文库可能被一个开发人员视为正面,而被另一开发人员视为负面。

特征 说明/利益 具有所需特征的图书馆
颜色语法 颜色语法(选择环境) Picocli
命令完成 自动完成命令(某些环境) Picocli
配置(注释) 主要使用注释来定义命令行选项。 航空公司2
args4j
解析器 CmdOption 命令行 谷歌选项 杰博克 指挥官 JewelCli MarkUtils-CLI Picocli 罗普
配置(API) 使用编程API(传统和/或生成器)定义命令行选项。 Apache Commons CLI
Argparse4j
argparser CmdLn getopt4j 雅高 杰格普 杰格斯 联合会 拍手 JOpt简单 JSAP jw选项 解析cmd
配置(反射) 使用反射(但不使用注释)定义命令行选项。 克拉尔
配置(XML) 使用或支持使用XML定义命令行选项。 突击队
JSAP
单一档案来源 可以轻松地将“库”作为已编译的源代码文件而不是作为针对其进行编译的JAR包含在项目中。 克拉尔
Picocli
小罐子 库提供的最小JAR大小小于25 KB(适用于本系列中介绍的版本)。 克拉尔
解析器
getopt4j 杰格普 杰格斯 拍手 jw选项 罗普

在基于Java的命令行分析库中,人们可能希望拥有许多其他特性,这些特性可能会缩小适当候选对象的数量。 这些包括命令样式的灵活性(长名称和/或简称,样式[GNU,POSIX,Java等]),适用的许可证,当前支持的可用性,新版本和更新,用户社区的大小以及Java的最低版本被支持。 先前参考的Java命令行解析器比较中提供的表使本系列涵盖的大多数库的这些特性的比较变得容易。

这个使用Java解析命令行参数的系列展示了28个库,并且该系列中还没有涉及其他一些公开可用的库。 拥有超过30个可用的库,大多数开发人员应该能够找到一个满足自己需求的外部库。

其他参考

  • Java库用于解析命令行参数? [关闭]
  • 如何在Java中解析命令行参数?
  • 适用于Java的最佳CLI解析器
  • 我应该使用哪个库来处理Java程序的CLI参数?
  • Java命令行解析器比较

翻译自: https://www.javacodegeeks.com/2017/11/java-command-line-interfaces-part-30-observations.html

java登录界面命令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 数据库命令之 mysqladmin -- MySQL 服务器管理客户端

文章目录一、介绍二、语法格式三、命令参数(一)参数默认值(二)默认参数四、支持的管理命令五、参考示例(一)每隔两秒查看一次服务器的状态,总共重复 5 次(二)修改 root 密…

分支限界法 tsp java_基于分支限界法的旅行商问题(TSP)一

//分支限界法#include#include#include#includeconst int INF 100000;const int MAX_N 22;using namespacestd;//n*n的一个矩阵intn;int cost[MAX_N][MAX_N];//最少3个点,最多MAX_N个点structNode{bool visited[MAX_N];//标记哪些点走了int s;//第一个点int s_p;/…

苹果录屏功能没有声音_其实苹果手机也有录屏功能!简单操作几步,就能轻松开启...

现在手机中的娱乐方式越来越多了,大家遇到有趣的事情就想分享给朋友,但是一些视频不能直接分享链接,还是挺麻烦的。不过我们可以通过录屏的方式来进行分享的,其实苹果手机就自带录屏工具,简单操作几步,就能…

Linux 启动/重启/停止 MySQL 数据库的命令

文章目录一、启动 MySQL 数据库的命令(一)使用命令 service 启动(二)使用命令 systemctl 启动二、停止 MySQL 数据库的命令(一)使用命令 service 停止(二)使用命令 systemctl 停止&a…

natty的异步通信框架_OpenHub框架进行的异步通信

natty的异步通信框架在本系列的前一部分中,我们介绍了OpenHub框架 。 这部分显示了框架最强大的功能之一- 异步消息传递模型 。 当源系统无法等待目标系统的响应时,将使用系统之间的异步通信。 有以下几个原因: 源系统必须尽可能地响应 &am…

java大文件解析_java大文件(百M以上)的上传下载实例解析

javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求1.通过form表单向后端发送请求Save改进后的代码不需要form标签,直接由控件来实现。开发人员只需要关注业务逻辑即可。JS中已经帮我们封闭好了…

zip直链生成网站_安装网站程序

一、选择网站程序搭建网站的程序有很多博客类: WordPress、 Typecho 、Hexo 等商城类:EcShop、DBShop、NiuShop 等论坛类:Discuz 还有 苹果CMS-影视建站;Tipask-问答程序;可道云KodExplorer-强大易用的私有云/在线文档…

java jni开发_Java JNI开发实践记录

当使用到JNI的时候,基本可以肯定Java的平台移植性注定减弱,接下来记录一次使用Java JNI开发的经历。关于Java JNI的相关资料参见:下面是使用JNI常见三种场景:1.在Java应用中标准Java类库不支持平台相关的特性2.已经存在用其它语言写好的类库&…

Linux 系统服务管理(启动服务/停止服务/重启服务)的命令 - chkconfig/service/systemctl

文章目录一、使用命令 chkconfig 管理系统服务(一)命令介绍二、使用命令 service 管理系统服务(一)命令介绍(二)命令用法1.启动服务2.停止服务3.重启服务4.查看状态三、使用命令 systemctl 管理系统服务一、…

mega x_[MEGA DEAL]通过Hadoop Bundle掌握大数据(91%的折扣)

mega x通过44个小时的广泛Hadoop培训来驯服海量数据集 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了另一个超值优惠 。 通过Hadoop Bundle,我们可以提供91%的 大数据精通 折扣 。 现在只需39美元…

c++ 提取傅里叶描述子_AI大语音(四)——MFCC特征提取(深度解析)

1 特征提取流程在语音识别和话者识别方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scaleFrequency Cepstral Coefficients,简称MFCC)。MFCC提取过程包括预处理、快速傅里叶变换、Mei滤波器组、对数运算、离散余弦变换、动态特征提…

Linux 命令之 grep -- 强大的文本搜索工具/正则表达式搜索

文章目录一、命令介绍二、grep 的三种形式三、常用选项四、正则表达式五、参考示例在指定的文件中查找指定的关键词查看指定文件中含有特定关键词的文本行查看指定文件中所有包含数字的行在指定的目录下递归搜索指定的字符串,将符合的文本行及其文件名输出在指定文件…

java me基础教程 pdf_Java ME手机应用开发技术与案例详解 PDF

资源名称:Java ME手机应用开发技术与案例详解 PDFJava ME手机应用开发技术与案例详解基于Java ME,系统描述了Java ME手机应用开发的各个方面。全书按照Java ME程序的开发流程合理编排内容,分成3个部分依次讲述。第1部分包括第1章-第5章&#…

cli parser_Java命令行界面(第27部分):cli-parser

cli parserCLI Parser最初托管在Google Code上,现在已存档在Google Code上 ,现在可以在GitHub上使用 。 Google Code项目档案页面将CLI Parser描述为“使用非常简单,非常小的依赖项”,它使用注释“使非常简洁的主要方法不需要知道…

写一个sql实现以下查询结果_书写高质量SQL的30条建议

以下文章来源:后端程序员必备:书写高质量SQL的30条建议1、查询SQL尽量不要使用select *,而是select具体字段。反例子:select * from employee;正例子:select id,name from employee;理由:只取需…

Linux 命令之 sed -- 功能强大的流式文本编辑器

文章目录一、命令介绍二、命令格式三、常用选项四、sed 子命令五、sed 替换标记六、sed 元字符集七、命令示例(一)用指定的字符串替换掉指定的字符串(二)删除文档中的空白行(三)删除文档中的注释&#xff0…

flatmap_flatMap()与concatMap()与concatMapEager()– RxJava常见问题解答

flatmapRxJava 2.x中共有三个无缝相似的运算符&#xff1a; flatMap() &#xff0c; concatMap()和concatMapEager() 。 它们都接受相同的参数-从原始流的单个项目到任意类型的&#xff08;子&#xff09;流的函数。 换句话说&#xff0c;如果您有Flowable<T>则可以为任意…

java 中的点_java————形参中的点点点 | 学步园

转自:http://zhidao.baidu.com/question/149668626.htmlmain方法的签名其实可以这样写:public static void main(String... args)//方法1它也可以运行.并且,如果同时还存在public static void main(String[] args)//方法2会报已经存在重复的方法的错误.由此可见,String... args…

sendkeys.send 始终输出英文._PLC的三种输出方式,你知道有哪些吗?

电工技术维修学习网&#xff1a;www.dgjswx.com关注电工技术维修学习网官方微信公众号《电工维修学习》收获更多电工经验知识和提升实战技能电工技术&#xff0c;电气知识&#xff0c;电工基础知识&#xff0c;电工入门知识&#xff0c;电工资料&#xff0c;电工软件&#xff0…

Linux 命令之 echo -- 输出指定的字符串或者变量的值

文章目录一、命令介绍二、命令选项三、命令示例&#xff08;一&#xff09;输出变量的值&#xff08;二&#xff09;合并上下单元格内容&#xff08;三&#xff09;查看一行第一栏&#xff08;四&#xff09;查看一行的第一和第三栏&#xff08;五&#xff09;结合输出重定向符…