java常用开发类库

java开发过程中常用的代码库、工具类库

网络编程

  • netty Netty封装了JDK的NIO,Netty是一个异步事件驱动的网络应用框架,用于快速开发可维护的高性能服务器和客户端
  • TIO 是基于aio(nio2)的网络编程框架,和netty属于同类,但t-io更注重一线开发工程师的感受,提供了大量和业务相关的API。基于t-io来开发IM、TCP私有协议、RPC、游戏服务器端、推送服务、实时监控、物联网、UDP、Socket将会变得空前的简单。
  • MINA 通讯框架

JSON

  • fastjson 完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)
  • Gson 性能强劲

XML

  • DOM4J DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP

文档操作

  • POI Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”,包括Excel World PPT Visio等
  • JXL excel操作

MVC框架

  • STRUTS MVC框架
  • SPRING BOOT MVC框架、简单易用
  • Hibernate 持久化框架
  • MyBatis 持久化框架
  • JDBCTemplate Spring持久化、jpa

Spring 框架

提供AOP、ASM、AspectJ整合、IOC、MVC、IOC扩展、JDBC、JMS、ORM、JPA、TRANSATION、MVC增强、Servlet、整合Struts、Security、Module表单验证、LDAP

安全

  • JWT
  • Auth2.0

代码生成

  • CGLIB Code Generation Library 以用来动态继承Java类或者实现接口,很多知名的开源项目中用到了它

Commons(Apache Commons)

提供注解、字节码、Bean工具类、JavaBean转XML、CLI命令工具、集合封装、CSV文件处理、dbcp连接池、email、fileupload、httpclient、io、lang扩展、math数值扩展、net ftp各种网络协议支持、validate验证、vfs虚拟机、cxf 开源services框架

测试

  • JUnit

流程引擎

  • JBPM 基于UML的状态图和活动图来定义流程,已加入JBOSS大家庭,市场前景看好
  • Shark XPDL:WFMC制定的描述业务流程控制流的XML格式规范,格式复杂,与具体语言无关,不灵活
  • Osworkflow XML:流程定义格式简单,使用灵活,基于有限状态机模型
  • Activity 它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架

日志

  • Logback spring boot默认日志框架
  • log4j

WebService

  • CXF 比较简单
  • Axis2

图片处理

  • thumbnailator 图片压缩、缩略图、旋转、裁切、加水印、转化图像格式、按照比例进行缩放

验证码

  • kaptcha 谷歌的kaptcha

模板引擎

  • Freemarker 一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具

JAVA自带各种工具包

  • zip 压缩解压缩

通用工具包

  • Hutool Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。Map转对象,对象转map等(支持复杂对象)。
    • BeanUtil.mapToBean(map, User.class, true, CopyOptions.create());

其他

  • Pcap4j Java解析pcap抓包文件,直接maven依赖加上,容易上手。jnetpcap、jpcap都已经很久没有更代码了,跨平台支持不好
  • inotify-java inotify使用异步的事件通知机制,实现对文件变化监控。IN_CLOSE、IN_MODIFY等事件。可以用jdk封装的poller、WatchService代替,也是封装了inotify,或者commons-io的FileAlterationListenerAdaptor(由文件监控类FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver,如果有文件的变化,则根据相关的文件比较器,判断文件时新增,还是删除,还是更改)
  • jsch SSHJ ssh客户端
    • 问题:com.jcraft.jsch.JSchException: Packet corrupt每次创建会话时,随机数(称为数据包)都与该会话相关联,disconnect的时候会删除,所以可以每次都使用新的session解决问题
  • ExpiringMap 带过期功能的Map,LoadingCache 线程安全的本地缓存

参考