当前位置:首页 > 数码 > Java中基于命令行界面的工具开发指南 (java中基本数据类型)

Java中基于命令行界面的工具开发指南 (java中基本数据类型)

admin7个月前 (04-21)数码28

CLI,全称为命令行界面(CommandLineInterface),是一种用于经过键盘输入指令与操作系统启动交互的软件机制。这种界面是在图形用户界面失掉遍及之前经常使用最为宽泛的用户界面,并且,即使在以后图形用户界面宽泛经常使用的环境下,CLI依然有其共同的优势和宽泛的运行。

构建CLI的工具很多,当天关键基于言语来成功,其中CommonsCLI框架提供了这样的便利。当天联合之前学习的graalVM提供的native-image工具,来生成一个exe类型的可口头文件,由于graalVM的跨平台性,咱们还能生成各个平台的CLI命令来辅佐成功更多的上班。

ApacheCommonsCLI是一个用于编写命令行界面的Java库。它提供了一个灵敏的框架,可以很容易地定义和解析命令行参数。这个库的关键优势是它可以处置各种类型的参数,包括选项、位置参数、可选参数等。

造成

上方以native-image为例,经过在终端输入native-image--help可以看到以下消息

_>native-image--helpGraalVMNativeImage(

一个合格的CLI基本都会提供help选项来展现,这个CLI的语法、选项以及性能形容。从上方的输入可以看到help关键包括:

Common-CLI

定义阶段

关键是借助Option类提供的API来构建各种选项以及参数消息,上方是对应API的形容:

前往值

方法名

说明

addOption(Optionopt)

参与一个选项实例

addOption(Stringopt,booleanhasArg,Stringdescription)

参与一个只蕴含短称号的选项

addOption(Stringopt,Stringdescription)

参与一个只蕴含短称号的选项

addOption(Stringopt,StringlongOpt,booleanhasArg,Stringdescription)

参与一个蕴含短称号和长称号的选项

addOptionGroup(OptionGroupgroup)

参与一个选项组

getMatchingOptions(Stringopt)

取得婚配选项的长称号汇合

getOption(Stringopt)

经过长称号或短称号取得选项

OptionGroup

getOptionGroup(Optionopt)

取得选项所在的选项组

Collection

getOptions()

取得一个只读的选项汇合

getRequiredOptions()

取得必定的选项汇合

hasLongOption(Stringopt)

判别能否存在选项

hasOption(Stringopt)

判别能否存在选项

hasShortOption(Stringopt)

判别能否存在选项

解析阶段

关键对输入参数的解析,也就是main方法的参数,自动提供上方3中语法解析的支持:

征询阶段

基于上一步解析后,会将参数解析成CommandLine,联合Option中的性能,须要咱们成功各种性能、参数婚配后的业务处置流程,类型上方这样:

if(commandLine.hasOption("help")){helper.printHelp("calendar[options]nnwhereoptionsinclude:",null,options,null,false);return;}if(commandLine.hasOption("version")){printResult("1.0.0");return;}

解析的环节有时刻会比拟些复杂,示例中是针对繁多选项的分支,当多个选项混合经常使用时,比如tar-zxvfxxx.tar.gz这样的,当然前提是咱们定义的CLI支持这种格调。

示例

clendar-oyyyy-MM-dd
privatestaticOptionsinitOptions(){Optionsoptions=newOptions();options.addOption(Option.builder("H").longOpt("help").desc("showhelpinformation").build());options.addOption(Option.builder("V").longOpt("version").desc("showhelpinformation").build());options.addOption(Option.builder("O").longOpt("out").hasArg(true).argName("fmt")//只是定义.required(false).desc("configurethedateoutputformat").build());returnoptions;}
privatestaticCommandLineparseArguments(Optionsoptions,String[]args){CommandLineParserparser=newDefaultParser();try{returnparser.parse(options,args);}catch(ParseExceptione){System.err.println(e.getMessage());}returnnull;}
privatestaticvoidhandleCommand(Optionsoptions,CommandLinecommandLine){if(ArrayUtils.isEmpty(commandLine.getOptions())){printResult("Pleasespecifyoptionsforcalendarbuildingoruse--helpformoreinfo.");return;}if(commandLine.hasOption("help")){helper.printHelp("calendar[options]nnwhereoptionsinclude:",null,options,null,false);return;}if(commandLine.hasOption("version")){printResult("1.0.0");return;}if(commandLine.hasOption("out")){Stringfmt=commandLine.getOptionValue("out");if(StringUtils.isEmpty(fmt)){fmt="yyyy-MM-ddHH:mm:ss";}printResult(DateFormatUtils.format(newDate(),fmt));return;}//calendar:'x'isnotagitcommand.See'calendar--help'.helper.printHelp(String.format("calendar:'%s'isnotacalendarcommand.See'calendar--help'.",Arrays.toString(commandLine.getArgs())),options,false);}

定义程序入口:

publicstaticvoidmain(String[]args){//定义阶段Optionsoptions=initOptions();//解析阶段CommandLinecommandLine=parseArguments(options,args);//征询阶段handleCommand(options,commandLine);}

打包

这里咱们引入maven-assembly-plugin插件,关键协助在打包时将依赖包一并写入jar文件,同时将入口文件定义到manifest:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><executions><execution><id>package-jar-with-dependencies</id><phase>package</phase><goals><goal>single</goal></goals><configuration><archive><manifest><mainClass>${main-class}</mainClass></manifest></archive><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration></execution></executions></plugin>

可以间接经过maven插件或许下的命令,将上方的代码打包成jar文件

mvncleanpackage

测试jar

假设装置上方的性能,最终会在名目target目录输入一个以jar-with-dependencies为后缀的jar文件,经过上方的命令可以测试cli命令

java-jar./target/calendar-jar-with-dependencies.jar-h

这样的CLI可不是咱们想要的,一来须要依赖JRE的运转环境,同时调用极端不繁难。

生成exe

假设你看过之前的文章,关于GraalVM的经常使用,依照文档下载并性能喜气转环境后,可以经过上方的命令对上一步的jar文件进一步处置

native-image-jar[jar]-o[name]

native-image-jar./target/calendar-jar-with-dependencies.jar-ocalendar

经过上方的命令会生成一个calendar.exe文件,这样将其参与到环境变量后,则可以在平台终端上经常使用了

关于不青睐间接经常使用命令的,当然这里也可以经常使用插件exec-maven-plugin,在maven生命周期package阶段,智能口头上方的命令,这样整个环节只有要口头mvncleanpackage即可

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>3.1.0</version><executions><execution><id>native-image-</id><phase>package</phase><goals><goal>exec</goal></goals><configuration><environmentVariables></environmentVariables><executable>native-image</executable><arguments><argument>-jar</argument><argument>${project.basedir}/target/${project.build.finalName}-jar-with-dependencies.jar</argument><argument>-o</argument><argument>${project.build.finalName}</argument></arguments></configuration></execution></executions></plugin>

测试exe

在终端口头上方的命令接口看到预期的结果:

calendar.exe-Oyyyy-MM-dd

总结

总的来说,ApacheCommonsCLI是一个十分弱小的工具,可以协助你轻松地处置命令行参数。无论你的运行程序须要处置多少个参数,或许这些参数的类型是什么,CommonsCLI都可以提供协助。


Java中基于命令行界面的工具开发指南

免费java开发工具有哪些?实用型java开发工具特点?

使用开发工具之前,需要知道免费java开发工具有哪些?实用型java开发工具特点,我们以熟知这些软件的优点和缺点为前提,以便在后期实操过程中根据实际情况选择应用最适合的的java开发工具。 免费java开发工具有哪些?实用型java开发工具特点? java开发工具一、JavaWorkshop SunMicroSystems公司于推出了JavaWorkShop1.0,这是业界出现的第一个供Internet网使用的多平台开发工具,它可以满足各公司开发Internet和Intranet网应用软件的需要。 JavaWorkShop完全用Java语言编写,是当今市场上销售的第一个完全的Java开发环境,目前JavaWorkShop的最性版本是3.0。 JavaWorkshop的特点表现如下: 1)结构易于创建:在创建平台中立的网格结构方面,JavaWorkshop比其他任何一种Java开发工具都要方便。 2)可视化编程:JavaWorkshop的可视化编程特性是很基本的。 JavaWorkshop允许程序员重新安排这些操作,甚至可以确定触发操作行为的过滤器。 JavaWorkshop产生的模板带有许多注释,这对程序员是很有帮助的。 此外,JavaWorkShop支持JDK以及JavaBeans组件模型,API和语言特征增加了编译Java应用程序的灵活性。 JavaWorkShop开发环境由于完全用Java写成,所以可移植性极好,以致于多个平台都能支持,目前JavaWorkShop支持Solaris操作环境SPARC及Intel版)、Windows95、WindowsNT、以及HP/Ux等平台。 适合于初学者进行一些简单的Java编程。 JavaWorkShop的缺点是JavaWorkshop中的每一个可视化对象都迟早会用到网格布局,这种设计方法是许多人不习惯的;JavaWorkdshop的调色板是较差的,仅仅能满足绝大部分应用的基本要求。 java开发工具二、Borland的JBuilder Jbuilder进入了Java集成开发环境的王国,它满足很多方面的应用,尤其是对于服务器方以及EJB开发者们来说。 下面简单介绍一下Jbuilder的特点: 1)Jbuilder支持最新的Java技术,包括Applets、JSP/Servlets、JavaBean以及EJB(EnterpriseJavaBeans)的应用。 2)用户可以自动地生成基于后端数据库表的EJBJava类,Jbuilder同时还简化了EJB的自动部署功能.此外它还支持CORBA,相应的向导程序有助于用户全面地管理IDL(分布应用程序所必需的接口定义语言InterfaceDefinitionLanguage)和控制远程对象。 3)Jbuilder支持各种应用服务器。 Jbuilder与InpriseApplicationServer紧密集成,同时支持WebLogicServer,支持EJB1.1和EJB2.0,可以快速开发J2EE的电子商务应用。 4)Jbuilder能用Servlet和JSP开发和调试动态Web应用。 5)利用Jbuilder可创建(没有专有代码和标记)纯Java2应用。 由于Jbuilder是用纯Java语言编写的,其代码不含任何专属代码和标记,它支持最新的Java标准。 6)Jbuilder拥有专业化的图形调试介面,支持远程调试和多线程调试,调试器支持各种JDK版本,包括J2ME/J2SE/J2EE。 JBuilder环境开发程序方便,它是纯的Java开发环境,适合企业的J2EE开发;缺点是往往一开始人们难于把握整个程序各部分之间的关系,对机器的硬件要求较高,比较吃内存,这时运行速度显得较慢。 java开发工具三、IBM的VisualAgeforJava VisualAgeforJava是一个非常成熟的开发工具,它的特性以于IT开发者和业余的Java编程人员来说都是非常用有用的。 它提供对可视化编程的广泛支持,支持利用CICS连接遗传大型机应用,支持EJB的开发应用,支持与Websphere的集成开发,方便的bean创建和良好的快速应用开发(RAD)支持和无文件式的文件处理。 IBM为建设Web站点所推出的WebSphereStudioAdvancedEdition及其包含的VisualAgeforJavaProfessionalEdition软件已全面转向以Java为中心,这样,Java开发人员对WebSphere全套工具的感觉或许会好了许多。 Studio所提供的工具有:Web站点管理、快速开发JDBC页向导程序、HTML编辑器和HTML语法检查等。 这确实是个不错的HTML站点页面编辑环境。 Studio和VisualAge集成度很高,菜单中提供了在两种软件包之间快速移动代码的选项。 这就让使用Studio的Web页面设计人员和使用VisualAge的Java程序员可以相互交换文件、协同工作。 VisualAgeforJava支持团队开发,内置的代码库可以自动地根据用户做出改动而修改程序代码,这样就可以很方便地将目前代码和早期版本做出比较。 与VisualAge紧密结合的WebsphereStudio本身并不提供源代码和版本管理的支持,它只是包含了一个内置文件锁定系统,当编辑项目的时候可以防止其他人对这些文件的错误修改,软件还支持诸如MicrosoftVisualSourceSafe这样的第三方源代码控制系统。 VisualAgeforJava完全面向对象的程序设计思想使得开发程序非常快速、高效。 你可以不编写任何代码就可以设计出一个典型的应用程序框架。 VisualAgeforJava作为IBM电子商务解决方案其中产品之一,可以无缝地与其他IBM产品,如WebSphere、DB2融合,迅速完成从设计、开发到部署应用的整个过程。 VisualAgeforJava独特的管理文件方式使其集成外部工具非常困难,你无法让VisualAgeforJava与其他工具一起联合开发应用。 java开发工具四、WebGain的Visu模板管理 是只能在Symantec公司的Java虚拟机、Netscape公司的Java虚拟机和Microsoft虚拟机上工作的调试器。 这对于开发者来讲是一个重要的特性,因为用户开发的Java代码中的许多软件bug就可能中会在某种特定的虚拟机上起作用。 在修改后进行编译基继续进行调试时,VisualCafe会自动将文件存盘,使用VisualCafe创建的原生应用具有许多特点。 除了明显的速度提高之外,Symantec使类库的二进制方式比正常的JDK小VisualCafe为所指定的关系自动生成或更新必要的Java代码。 利用VisualCafe,用户可以从一个标准对象数据库中集合完整的Java应用程序和Applet,而不必再编写源代码。 VisualCafe还提供了一个扩充的源代码开发工具集。 VisualCafe综合了Java软件的可视化源程序开发工具,它允许开发人员在可视化视图和源视图之间进行有效地转换。 在可视化视图中进行的修改立即反映在源代码中。 对源代码的改变自动更新可视化视图。 VisualCafe具有许多源文件方面的特性,如全局检索和替换。 绝大多数Java开发工具的文献的问题在于简单地挨个介绍开发工具的每部分组件,但用户在开应用时还需要一个面向任务的手册,利用这个手册你可以不必知道工具每一部分的特定功能就可以开始创建自己的应用。 VisualCafe提供了非常全面的用户指南,它对最开始的安装到创建第一个Java应用和Applet都提供了全面的帮助,VisualCafe将自动生成所指明关系的必要Java代码。 VisualCafe可以在Windows95和WindowsNT平台下运行,Symantec公司为Java开发工作提供一个在Macintosh操作系统下可以运行的RAD工具。 VisualCafe编译器速度很快,在国际化支持方面比较突出;缺点就是对于初学者来说,较复杂,也比较难。 java开发工具五、Ant AnotherNeatTool(Ant)是一种基于Java的build工具。 理论上来说,它有些类似于(Unix)C中的make,但没有make的缺陷。 因为Ant的原作者在多种(硬件)平台上开发软件时,无法忍受这些工具的限制和不便。 类似于make的工具本质上是基于shell(语言)的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命令没太大区别)。 这就意味着你可以很容易地通过使用OS特有的或编写新的(命令)程序扩展该工具;然而,这也意味着你将自己限制在了特定的OS,或特定的OS类型上,如Unix。 Ant就不同了。 与基于shell命令的扩展模式不同,Ant用Java的类来扩展。 (用户)不必编写shell命令,配置文件是基于XML的,通过调用target树,就可执行各种task。 每个task由实现了一个实现了特定Task接口的对象来运行。 Ant支持一些可选task,一个可选task一般需要额外的库才能工作。 可选task与Ant的内置task分开,单独打包。 这个可选包可以从你下载Ant的同一个地方下载。 ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。 除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。 Ant是Apache提供给Java开发人员的构建工具,它可以在WindowsOS和UnixOS下运行,它不仅开放源码并且还是一个非常好用的工具。 Ant是ApacheJakarta中一个很好用的Java开发工具,Ant配置文件采用XML文档编写,所以Java程序员对其语法相当熟悉,Ant是专用于Java项目平台,能够用纯Java来开发,它能够运行于Java安装的平台,即体现了它的跨平台功能。 它的缺点显示执行结果只能是DOS字符界面,不能进行复杂的java程序开发。 免费java开发工具有哪些?实用型java开发工具有JavaWorkshop、Borland的JBuilder、IBM的VisualAgeforJava、VisualCafeforJava、Ant等,除此之外还要很多其他的开发工具。 感谢大家阅读由java问答分享的“免费java开发工具有哪些?实用型java开发工具特点?”希望对大家有所帮助,了解更多专业课程培训内容请关注昌平北大青鸟java培训机构官网。 免责声明:以上内容仅作为信息传播,文中部分信息来源于互联网,仅供阅读参考。

java编程开发程序员需要掌握的开发工具?

对于java程序员来说,除了需要掌握基本的编程开发语言以外,同时还需要了解在不同的场景下我们应该使用哪些编程开发工具。下面我们就给大家简单介绍了常见的几种开发工具,一起来了解一下吧。

我们使用Groovy来写Java测试。为什么?因为它提供了下面这些能力:

宽松的Java语法:这是Java语法,但有些其他规则,比如分号,变量类型,访问修饰符都是可选的。后者对于测试意义重大,由于访问修饰符不是严格的,你的测试可以读取并断言类内部的状态。

2.支持REST风格

我们的后端提供RESTAPI服务来创建和管理账户,众多SDK中,我们的JavaSDK提供特定语言客户端模型做简单交互。其中一些SDK也提供网页来和后端交互,从而不用编写代码。

为了保证网络框架的互操作性,它们必须表现的一样。因此我们需要创建一系列基于HTTP的测试。这是我们的兼容性测试工具。这个项目由我们的SDK工程师维护,他们精通不止一种语言。因此我们需要跨语言测试工具,谢天谢地Rest-assured来了。

Rest-assured是Java领域特定语言(DSLdomain-specificlanguage)用来测试REST服务,它简单易用易上手,甚至对于没有用过Java的开发者也是难以置信的强大。它提供先进的特性,比如细节配置、过滤器、定制分析、跨站请求伪造(CSRF)和OAuth2.0。它提供非常简单的语法:given-when-then。

为了让我们的JavaSDK按照TCK校验,我们需要开启我们其中一个Web服务,以便测试在上面执行。讲道理的话,我们需要每次构建时自动测试,GargoPlugin就是为此而生。

Cargo用标准的方式简单封装各种应用容器。电脑培训使用Cargo可以毫不费力的在不同的Servlet容器(比如Jetty和Tomcat)中运行我们的代码。我们只需要在我们的pom文件中配置CargoMaven2Plugin来启动一个Servlet容器(Tomcat7),在测试阶段编译近的War包,你可以在我们的Servlet插件例子中看到配置。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Java

“Java中基于命令行界面的工具开发指南 (java中基本数据类型)” 的相关文章

深入探讨-Java-编程中的类继承与接口实现 (深入探讨交流)

深入探讨-Java-编程中的类继承与接口实现 (深入探讨交流)

简介 类索引、父类索引和接口索引是在 Class 文件中用于确定类的继承关系的重要数据。通过这些索引,Java 虚拟机 (JVM) 可以准确地建立类之间的继承关系,实现多态性和接口的实现。...

大编程趋势-5-年-Java-2024-开发者的 (编程是大趋势吗)

大编程趋势-5-年-Java-2024-开发者的 (编程是大趋势吗)

Java 作为编程领域的支柱,拥有超过 900 万开发人员和超过 30 年的发展历史。它以其先进的安全功能、优越的性能和跨平台开发能力而闻名。展望 2024 年,Java 正准备进行一场突破性的转...

选择性-过多的关键词会增加SEO工作的复杂性-关键词不应过多 (选择性太多)

选择性-过多的关键词会增加SEO工作的复杂性-关键词不应过多 (选择性太多)

引言 在不断演进的软件开发领域,保持最新技术至关重要。从 Java 11 迁移到 Java 21 是一个明智的决定,它带来了显着的优势和创新,可以提升应用程序的安全性、性能和开发效率。...

Java循环结构与实现方式 (java循环语句案例)

Java循环结构与实现方式 (java循环语句案例)

循环简介 循环是编程中常用的一种控制结构,用于重复执行某一段代码或操作。循环的执行需要满足一定的条件,当条件满足时,循环会一直执行,直到条件不满足时才结束。所以循环其实就是重复地完成某一件事...

Java-Lambda-表白式的多面运行-从基础到初级 (java类的定义和使用)

Java-Lambda-表白式的多面运行-从基础到初级 (java类的定义和使用)

Lambda表白式是8中引入的最有影响力的性能之一。它们经过准许繁复而优雅地创立匿名函数来成功Java中的函数式编程。在这篇博文中,咱们将讨论编写lambda表白式的各种方式。 概述...

在-Java-年依然盛行的-2023-25-个要素 (在javascript中)

在-Java-年依然盛行的-2023-25-个要素 (在javascript中)

译者|刘汪洋 审校|重楼 学习的环节中,我看法到在90年代末OOP正值鼎盛期间,Java作为能够真正成功这些概念的言语显得尤为突出(虽然我此前学过C++,但相比Java影响较小)。我特...

掌握Java并发编程-免除竞态条件的困扰 (掌握JavaScript基础)

掌握Java并发编程-免除竞态条件的困扰 (掌握JavaScript基础)

1. 竞态条件的概念和问题 竞态条件指的是多个线程同时访问共享资源,由于执行顺序的不确定性,导致程序结果与预期不符的情况。竞态条件问题通常出现在以下情况下: 多个线程争用同一把锁 多个线程...

Java-以及如何成功它-为何它本应更繁难-异步编程 (java一个子类可以有多个父类吗)

Java-以及如何成功它-为何它本应更繁难-异步编程 (java一个子类可以有多个父类吗)

在过去的好多年里,多线程和异步不时作为技术里的初级局部,在技术序列中,一个言语分为入门局部、进阶局部和初级局部,所以,异步是作为其中的初级技术局部存在的。 关于异步和多线程这局部吧,经常存在...