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登录界面命令

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

  1. java登录界面命令_Java命令行界面(第18部分):JCLAP

    java登录界面命令 Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库. 这篇文章的示例基于JCLAP 1.4 , ...

  2. java登录界面命令_Java命令行界面(第10部分):picocli

    java登录界面命令 picocli主页面将picocli描述为"强大的微小命令行界面"," picocli"是一个单文件Java框架,用于解析命令行参数并生成 ...

  3. java登录界面命令_Java命令行界面(第29部分):自己动手

    java登录界面命令 本系列有关从Java解析命令行参数的系列简要介绍了28个开源库,这些库可用于处理Java代码中的命令行参数. 即使涵盖了这28个库,该系列也没有涵盖用于解析Java命令行选项的所 ...

  4. java登录界面命令_Java命令行界面(第7部分):JCommander

    java登录界面命令 这是我系列的第七篇文章,简要介绍了用于处理Java命令行参数的各种库. 这篇文章回到了基于注释的库的覆盖范围,该库似乎是在Java中可用于处理命令行参数的众多可用库中知名度最高, ...

  5. java登录界面命令_Java命令行界面(第26部分):CmdOption

    java登录界面命令 由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 . CmdOption在其GitHub主页上被描述为"一个通过注释配置的,用 ...

  6. java登录界面命令_Java命令行界面(第12部分):CLAJR

    java登录界面命令 第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 (CLAJR). 该"库"是单个Java源文件( CLA ...

  7. java登录界面命令_Java命令行界面(第11部分):CmdLn

    java登录界面命令 这篇文章介绍了如何使用Ostermiller Java Utilities 1.08.02的CmdLn(Java命令行解析器)来处理基于Java的应用程序中的命令行参数. Ost ...

  8. java登录界面命令_Java命令行界面(第13部分):JArgs

    java登录界面命令 JArgs 1.0的区别在于,这是我的第13篇文章的主题,该文章是关于Java命令行参数解析的. JArgs是一个开放源代码( BSD许可 )库,主要由Steve Purcell ...

  9. java登录界面命令_Java命令行界面(第15部分):Jargo

    java登录界面命令 Jargo在其GitHub主页上定义为"一种减轻程序参数/选项处理的工具". 当已经存在许多其他命令行处理库时,该页面为另一个命令行处理库提供了基本原理 ,该 ...

最新文章

  1. HyperLedger Fabric链码开发及测试
  2. JZOJ 5421. 【NOIP2017提高A组集训10.25】嘟嘟噜
  3. 转载:浏览器开发系列第一篇:如何获取最新chromium源码
  4. BZOJ 1683.City skyline 城市地平线
  5. 关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道?
  6. S3C2440 WINCE6将USB DEVICE改成USB HOST,实现两个USB HOST
  7. Unity中传入任意数,转换成分,秒,并进行倒计时换算..(两种方式)
  8. java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String
  9. 外国小哥,把整个 CNN 都给可视化了,卷积、池化清清楚楚!
  10. 计算机视觉论文-2021-06-09
  11. NAPI 技术在 Linux 网络驱动上的应用和完善
  12. C++11 继承构造函数与委托构造函数
  13. 强制更新客户端Silverlight XAP 文件
  14. Winform-信息管理系统源码分享(Access数据库)
  15. 天翼对讲机写频软件_手台对讲机应该怎么选?
  16. C++ 句柄类的原理以及设计
  17. hrbust 1864人类希望——kokoⅠ【数学+快速幂】
  18. 优化GNU/Linux桌面安装的九个步骤
  19. (附源码)计算机毕业设计ssm大学生体检管理系统
  20. python串口控制8通道继电器方法笔记

热门文章

  1. 基站建设(三元环计数+根号分治 / bitset)
  2. [2020-11-30 contest]数列(矩阵加速),秘密通道(dijkstra最短路)小X游世界树(换根dp),划分(数学)
  3. jzoj3918-蛋糕【二分】
  4. 和某ZYC巨佬和XXY巨佬的随机挑战2总结
  5. jzoj1751-Span(每日C组)【并查集,贪心】
  6. P3565 [POI2014]HOT-Hotels(树形dp+长链剖分)
  7. 2018-2019 ACM-ICPC, Asia Seoul Regional Contest——A - Circuits
  8. Educational Codeforces Round 94 (Rated for Div. 2)
  9. MST(最小生成树)的构造
  10. codeforces 932E Team Work 高等数学求导、dp