Java 常用的开发工具有哪些?

2023-05-27 0 764

来看一看我的开放源码工程项目里加进了甚么称心的合作开发软件包,提高我的合作开发工作效率~

01、甚么是软件包

大体上,每一工程项目里都有三个包,叫作utils。那个包专门针对贯穿他们他们工程项目的辅助工具类,比如说常用的DateUtils、HttpUtils、Collections

简而言之Utils是:那个小东西他们用得许多,但原API不如称心,于是他们给它PCB为三个较为通用型的方式

假如是新手,许多这时候碰到此种类似于的辅助工具类也无法间接他们开写,会先去浏览器里找叮当。找出了后,看出来真的能就间接三个ctrl+c ,三个ctrl +v 往他们的main方式一贴,搞点原始数据,非得无法work出来。

能work出来,那就给它取个英文名字,放到utils包下。痛打操作方式后,发现他们这操作方式坐姿是轻松!

总之,你想的辅助工具类很可能将咱早已写好相关联的jar包,比某浏览器搜到的某网志的标识符可信多了。

晓得有这类jar 的他用得始终很香,不晓得的人可能将就始终首先需要就去复本甚么,标识符搞得十分脏乱差。

Java 常用的开发工具有哪些?

02、Java软件包所推荐

在Java应用领域里,在业界较为有名的软件包有三个:commons和guava

儒者保护的三个软件包:Hutool

Java 常用的开发工具有哪些?

假如有相关的需求的话,我们在工程项目标识符中能尽可能将使用这些软件包。它们的标识符一般情况下都会比他们他们写的要好,而且辅助工具类是为了帮他们减少重复性标识符的,多用会使工程项目的可读性变得更高。

至于它们能干甚么,假如没了解过的能先逛下他们的Guide,稍微了解下这些软件包PCB了甚么功能。等到他们要意识到需要PCB某个功能时,先把这些软件包的文档给逛一遍,真的找不到时,没有再他们实现。

不要重复造轮子,不要重复造轮子,不要重复造轮子。

我贴下这些软件包的链接 大家假如对那个不了解的话,建议去看一看

https://commons.apache.org/https://github.com/google/guava/wikihttps://www.
hutool.cn/docs/#/

我截取hutool文档的一部分信息,大家稍微能感受下,我个人认为还是较为全的:

模块介绍hutool-aopJDK动态代理PCB,提供非IOC下的切面支持hutool-bloomFilter布隆过滤,提供一些Hash算法的布隆过滤hutool-cache简单缓存实现hutool-core核心,包括Bean操作方式、日期、各种Util等hutool-cron定时任务模块,提供类Crontab表达式的定时任务hutool-crypto加密解密模块,提供对称、非对称和摘要算法PCBhutool-dbJDBCPCB后的数据操作方式,基于ActiveRecord思想hutool-dfa基于DFA模型的多关键字查找hutool-extra扩展模块,对第三方PCB(模板引擎ection的Http客户端PCBhutool-log自动识别日志实现的日志门面hutool-script脚本执行PCB,例如Javascripthutool-setting功能更强大的Setting配置文件和PropertiesPCBhutool-system系统参数调用PCB(JVM信息等)hutool-jsonJSON实现hutool-captcha图片验证码实现hutool-poi针对POI中Excel和Word的PCBhutool-socket基于Java的NIO和AIO的SocketPCBhutool-jwtJSON Web Token (JWT)PCB实现

03、Lombok

我是在实习的这时候接触Lombok那个辅助工具的。他给我的第一感受是:再也不用他们生成set/get方式了

其实用上了IDE以后,生成set/get方式是三个快捷键的事,但每当他们要增加/删除/修改类的属性时,他们都需要额外去为这些变动去生成一次。不过,这好像也不是事。毕竟增加/删除/修改的工作也不是特别多。

其实Lombok能做的事不仅仅只有set/get方式,用上了以后我还是较为所推荐用的。像@Builder、@Slf4j、@Data这些注解我在工程项目中是经常加进的,假如还对Lombok不了解的话,能去它的官网观望一波。

https://projectlombok.org/features/all

有没有人会好奇Lombok它是怎么做到的?曾经有个群里的小伙伴有碰到过那个面试题:你晓得Lombok的原理是甚么吗?

那个我在《对线面试官》系列的第一篇《注解》曾经聊过。其实不是特别复杂的小东西,他们只要能想出Java的编译时大致的步骤以及注解的基础知识,这题就能答上了。

注解是有生命周期的@Retention有SOURCE、CLASS和RUNTIME 三个常量,使用Lombok的注解是SOURCE阶段的.java文件被编译的这时候,稍微简化下能总结为几个步骤:语法分析->语义分析->注解处理->class文件JDK提供了Hook,他们想在编译时期做注解相关的事,能继承AbstractProcessor 并实现process方式(Lombok是这么干的)
Java 常用的开发工具有哪些?

04、JSON库

现在Java后端合作开发大体上是离不开JSON了,所以他们需要有JSON库帮他们做序列化和反序列化

前后端接口之间的交互大体上都是JSON格式了我们有的这时候为了方便,也会间接把数据间接转成JSON存储出来(这里的存储能是MySQL,能是HBase,能是Redis 等等)…

写到这里,我翻看了下我以前大学这时候的学习笔记。我以前刚学JSON的时候,那这时候跟着视频在学Spring和Strtus2,他俩都内置了JSON的解析库。我当时的水平,跟着视频学习调个API对我没甚么难度的,所以也不以为然。

没想到,那这时候视频教程还教我:假如抛离了Spring和Struts2环境下,那该怎么方便地操作方式JSON,然后在classpath果断引入了json-lib的包…看回以前大学的笔记,真的是回忆满满…

不扯别的了,说回现在吧。现在Java后端一般使用较为多的JSON库有fastjson、Gson和Jackson

Java 常用的开发工具有哪些?

我以前在公司用FastJson较为多的,API使用十分简单,日常用得也很舒服。但,我是经历过曾经要强制升级fastjson版本的人!应该是19年吧,那这时候安全团队告诉他们需要强制升级fastjson的版本,大概是fastjson有漏洞,一定得升级。这他们作为库的使用方,没办法,那只能升级吧。

结果,没过几天。安全团队又拉了个群,说还是得升级xxx版本以上,之前升级过的版本还有问题…团队内为了升级fastjson版本也碰到过其他的坑,反正就被弄得很烦。

网上也有许多对比这几个JSON库的文章(主要的指标是性能、稳定),有兴趣的小伙伴能去读读。

Java 常用的开发工具有哪些?

不过,austin工程项目还是选择fastjson作为JSON主要的序列化库(多点包容)

05、HTTP库

本来HTTP库我是早已忘的了。但正当我要实现发送短信功能的这时候,我才恍然想起,HTTP也是经常加进的啊!于是火急地在发送文章之前补充下。

不晓得你们第一次用Java调用HTTP的这时候,是甚么心情。在我印象里,就真的这小东西复杂得一批,调个HTTP真麻烦!后来,工作了以后,在工程项目里早已有大佬PCB过HTTP啦。但还是有的这时候,真的HTTP调用是那么的复杂(哎,各种头信息,一不小心设置错,那是半天)

但不管怎么样,HTTP调用是十分常用的,许多公司对外的接口几乎都会提供HTTP调用。比如说他们调用腾讯的API下发微信类消息,调用各个渠道商发送短信等等等。

扯远了,还是先回到HTTP库吧。在Java生态中,HTTP库能大致分为三类:

HttpURLConnectionApache HttpClientOkHttp
Java 常用的开发工具有哪些?

HttpURLConnection是JDK原始提供的HTTP库,它是没有实现HTTP连接池的(连接池还是十分重要的,池的概念我在这就不过于解释了)。我之前工程项目用的HTTP库都是Apache HttpClient 基础上PCB的(Apache 出品的质量也有保证),而OkHttp能说是后起之秀了(现在安卓端的HTTP库基本都是基于OkHttp)

一般他们使用这些HTTP辅助工具库,都需要在原生的基础上再写Utils来简化对HTTP的调用,有Utils环境下就会有各类的软件包:

比如说,上面提到的Hutool就对原生的HttpURLConnection进行PCB(不过其PCB是没用线程池)Square公司对他们出品的OkHttp又进行二次PCB,开放源码出Retrofit(那个在安卓用得许多)Spring环境下提供RestTemplate 多种访问远程Http服务的方式(默认情况下是无线程池的,但可以使用Apache HttpClient和OkHttp将其PCB至RestTemplateSpringCloud环境下提供OpenFeign进而调用HTTP服务国产HTTP辅助工具库Forest: 对Httpclient和OkHttp进行PCB…
Java 常用的开发工具有哪些?

这次我选择OkHtpp作为austin的http库

为甚么OkHtpp?向前看吧,OkHtpp作为Http库确实现在已然成为标杆(至少在安卓火爆了,许多公司的SDK下都用的Okhttp作为Http库的依赖了)。在Spring环境下RestTemplate也不太称心,我这工程项目又没上SpringCloud,自然就没用上OpenFeign。Retrofit在安卓用得比较多(Java后端貌似相对较少)。

所以我选择了OkHttp。

06、总结

这篇文章是来讲austin工程项目所使加进的软件包,对这些早已懂的人看完可能将会真的有点水,没必要。

但有许多想跟我一起学习那个工程项目的同学许多都是没做过工程项目的,所以我还是真的有必要发出来总结下。许多这时候他们所做的小东西,别人真的很low,其实就在于信息差。

我真的阅读这篇文章的,肯定也会有某些早已工作的小伙伴是没听说过Lombok、没用过Guava这类辅助工具的(Commons应该多多少少都会用过,可能将是潜在地用了,但不晓得是有专门针对的apache辅助工具类库)。

其实这类软件包在工程项目里使用的频率会十分高,用了这些辅助工具库会让他们的工程项目标识符变得更加简洁,标识符可读性和保护性对于三个工程项目而言是十分重要的。

对于这类辅助工具,我的建议是有空的这时候上去看一看它能提供甚么功能。等发现他们要PCB三个辅助工具类的这时候,进去看一看它们是不是早已实现了,假如实现了间接用就完事了。假如对功能感兴趣的话,看下大佬们是怎么实现的,假如是他们实现的话可能将会有什么样地方没想到。

肯定还有许多我还不了解又十分称心的软件包,求各位在评论区所推荐所推荐啊!!!

【Java开放源码】消息推送平台

我所推荐一个拥有从零开始的文档的工程项目,既能用作毕设又能在面试的这时候大放异彩。

该工程项目业务极容易理解,标识符结构还算是较为清晰,最可怕的是几乎每一方式和每一类都带有中文注释

拥有十分全的文档,作者从零搭建的过程一一都有记录,工程项目使用了蛮多的可信和稳定的中间件的,包括并不限于SpringBoot、SpringDataJPA、MySQL、Docker、docker-compose、Kafka、Redis、Apollo、prometheus、Grafana、GrayLog、xxl-job等等。在使用每三个技术栈之前都讲述了为甚么要使用,以及它的业务背景。我看过,他所说的场景是完全贴合线上环境的。

跟着README文档的部署使用坐姿就能跑出来,一步一步debug挺有意思的,作者还搞了个前端后台管理系统ull request,会让人参与感贼强。

我相信在校、工作一年左右或常年做内网CRUD后台的同学去看一看肯定会有所启发,作者会经常在群里回答该工程项目相关的问题和标识符设计思路。

B站也在开始更新消息推送平台的视频哟!

Java3y的个人空间_哔哩哔哩_Bilibili​space.bilibili.com/198434865/channel/collectiondetail?sid=435119​space.bilibili.com/198434865/channel/collectiondetail?sid=435119​space.bilibili.com/198434865/channel/collectiondetail?sid=435119space.bilibili.com/198434865/channel/collectiondetail?sid=435119

目前那个工程项目GitHub和Gitee加出来早已5K stars了,我相信破万是迟早的事情。 嗯,没错。那个工程项目叫作austin,是我写的

消息推送平台-Austin是奔着真实互联网线上工程项目去设计和实现的,将工程项目克隆下来把中间件换成目前公司在用的,完善下基础建设它就能成为线上工程项目

Java 常用的开发工具有哪些?

austin工程项目核心功能:统一的接口发送各种类型消息,对消息生命周期全链路追踪

Java 常用的开发工具有哪些?

工程项目出现意义:只要公司内有发送消息的需求,都应该要有类似于austin的工程项目,对各类消息进行统一发送处理。这有利于对功能的收拢,以及提高业务需求合作开发的工作效率

Java 常用的开发工具有哪些?

austin工程项目核心流程:austin-api接收到发送消息请求,间接将请求进MQ。austin-handler消费MQ消息后由各类消息的Handler进行发送处理

Java 常用的开发工具有哪些?
Java 常用的开发工具有哪些?
Java 常用的开发工具有哪些?
Java 常用的开发工具有哪些?

工程项目Gitee链接:

工程项目GitHub链接:

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务