Java常用JDK类库和第三方类库

以下是收集的一些有用的第三方库,Java开发人员可以在其应用程序中使用它们来完成许多有用的任务。为了使用这些库,Java开发人员也应该熟悉这些类库。

jdk自带的常用类库

java.lang包

java.lang:java.lang包是Java的核心类库,包含了Java语言的基本类和接口。其中最重要的类是Object类,它是所有类的父类。此外,还包括String、StringBuilder、Thread、Math等常用类和接口。

  • String类提供了字符串操作的方法,如连接、截取、替换等。
  • StringBuilder类用于动态拼接字符串,是可变的字符串序列。
  • Thread类用于创建和管理线程,实现并发编程。
  • Math类提供了数学运算相关的方法,如求平方根、取整、随机数生成等。

java util包

java.util包是Java编程语言中提供的一个标准类库。它包含了许多常用的工具类和数据结构,可以帮助开发者更高效地进行编程。该包下的类提供了诸如集合框架、日期与时间操作、随机数生成、排序算法等功能。

以下是一些常见的java.util包中的类:
Array- List:动态数组,实现了List接口,可以动态增加或减少元素。

  • LinkedList:双向链表,也实现了List接口,对于频繁插入和删除操作更高效。
  • HashMap:哈希表,实现了Map接口,存储键值对,并根据键的HashCode快速查找。
  • HashSet:基于HashMap实现的集合,不允许重复元素。
  • Date:表示日期和时间的类。
  • Calendar:提供了对日期和时间进行操作的方法。
  • Random:生成伪随机数的类。
  • Collections:提供了一组静态方法,用于对集合进行排序、查找等操作。
    当然,java.util包中还有很多其他有用的类。通过引入该包,可以方便地使用这些类来完成各种编程任务。

java.io包

java.io包提供了输入输出操作的类和接口。它支持文件操作、网络通信、序列化等。

  • File类用- 于操作文件和目录,提供了创建、删除、重命名等方法。
  • FileInputStream和FileOutputStream用于读写字节流。
  • InputStreamReader和OutputStreamWriter用于读写字符流。
  • BufferedReader和BufferedWriter提供了缓冲区功能,提高IO性能。

java.net包

java.net包提供了网络编程相关的类和接口,用于实现网络通信。

  • Socket和ServerSocket类用于建立客户端和服务端的套接字连接。
  • URL和URLConnection类用于处理URL地址和进行HTTP通信。
  • InetAddress类用于表示IP地址和主机名。

java.util.concurrent包

java.util.concurrent包提供了并发编程的支持,使得多线程开发更加容易和安全。

  • Executor框架用于管理和执行线程池中的任务。
  • ConcurrentHashMap是线程安全的哈希表。
  • Atomic包提供了原子操作类,如AtomicInteger、AtomicLong等。

java.sql包

java.sql包提供了访问数据库的接口和类,支持与关系型数据库交互。

  • Connection接口用于建立数据库连接。
  • Statement和PreparedStatement用于执行SQL语句。
  • ResultSet用于处理查询结果集。
  • DriverManager类用于管理数据库驱动程序。

java.awt包和javax.swing包

Java的图形用户界面(GUI)库,其中java.awt提供了基本的GUI组件,javax.swing则提供了更多的高级组件和功能。

  • JFrame、JPanel、JButton等是常用的GUI组件。
  • LayoutManager用于控制组件的布局。
  • EventListener和EventObject支持事件驱动编程。

java.text包

java.text包提供了文本格式化和解析的类和接口,用于处理日期、数字、货币、消息等内容。

  • SimpleDateFormat类用于日期时间的格式化和解析。
  • NumberFormat类用于数字的格式化和解析。
  • MessageFormat类用于国际化和本地化的消息格式化。

java.security包

java.security包提供了Java的安全相关功能,包括加密、数字签名、证书等。

  • MessageDigest和Cipher类提供了信息摘要和加密解密功能。
  • Signature类用于生成和验证数字签名。
  • KeyPair和KeyStore类用于管理密钥和证书。

java.nio包

java.nio包提供了非阻塞IO(NIO)的支持,使得IO操作更加高效和灵活。

  • Channel和Buffer类是NIO中的核心组件,用于实现通道和缓冲区的读写。
  • Selector类允许单个线程处理多个通道的IO操作。

java.lang.reflect

java.lang.reflect包提供了反射机制的支持,允许程序在运行时获取类型信息并操作对象。

  • Class类是反射的核心,表示Java类的类型。
  • Constructor、Method和Field类用于操作构造方法、方法和字段。
  • Proxy类用于创建动态代理对象。

java.time包

java.time包提供了日期时间处理的类和接口,支持更加灵活和全面的日期时间操作。

  • LocalDate、LocalTime和LocalDateTime类用于处理日期、时间和日期时间。
  • Duration和Period类用于计算时间间隔和日期差值。
  • DateTimeFormatter类用于日期时间的格式化和解析。

java.util.logging包

java.util.logging包提供了Java的日志记录功能,用于记录应用程序的日志信息。

  • Logger类用于创建和管理日志记- 录器。
  • Handler类用于处理日志记录的输出位置,如控制台、文件等。
  • Formatter类用于配置日志的格式。

java.lang.annotation包

java.lang.annotation包提供了注解(Annotation)的支持,用于为程序元素添加元数据信息。

  • @Override、@Deprecated、@SuppressWarnings等是常见的Java内置注解。
  • 允许自定义注解,并通过反射机制读取和处理注解信息。

常见第三方类库

Hutool工具类库

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅。对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:

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

通用库

Apache Commons和Google Guava,提供工具类和 API,简化任务。

重新发明轮子是没有意义的。我们应该更喜欢使用久经考验的库,而不是时不时地编写我们自己的例程。

1、Apache Commons 是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问

  • Commons-BeanUtils 提供对 Java 反射和自省API的包装
  • Commons-Codec 包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder
  • Commons-Collections 提供一个类包来扩展和增加标准的 Java Collection框架
  • Commons-Configuration 工具对各种各式的配置和参考文件提供读取帮助
  • Commons-DBCP 提供数据库连接池服务
  • Commons-DbUtils 是一个 JDBC helper 类库,完成数据库任务的简单的资源清除代码
  • Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件
  • Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称
  • Commons-EL 提供在JSP2.0规范中定义的EL表达式的解释器
  • Commons-FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力
  • Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架
  • Commons-IO 是一个 I/O 工具集
  • Commons-Jexl 是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言
  • Commons-Lang 提供了许多许多通用的工具类集,提供了一些java.lang中类的扩展功能
  • Commons-Logging 是一个各种 logging API实现的包裹类
  • Commons-Pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实现

2、Google Guava

  • com.google.common.base:这个包包含了基本工具类库和接口,提供了一些通用的功能,如Preconditions(用于参数校验)、Optional(用于处理可能为null的值)等。
  • com.google.common.collect:这个包提供了带泛型的集合接口扩展和实现,以及工具类。它增加了一些Java标准库中没有的集合类型,如Multimap(多映射)、Multiset(多集)等,还提供了一些用于操作集合的实用方法。
  • com.google.common.eventbus:这个包实现了一个发布-订阅风格的事件总线,允许在不同组件之间发布和订阅事件,实现松耦合的通信。
  • com.google.common.hash:这个包提供了哈希工具类,用于计算哈希值和处理哈希相关的操作。
  • com.google.common.io:这个包包含了I/O工具类,提供了一些简化I/O操作的实用方法,如文件读写、字节流处理等。
  • com.google.common.math:这个包提供了原始算术类型和超大数的运算工具类,用于进行数学计算和处理大数字。
  • com.google.common.net:这个包包含了网络工具类,提供了一些与网络相关的实用功能,如URL处理、网络地址解析等。
  • com.google.common.primitives:这个包提供了对八种原始类型和无符号类型的静态工具类,包括一些基本类型的操作、转换和比较。
  • com.google.common.reflect:这个包包含了反射工具类,提供了一些用于反射操作的实用方法,如获取类信息、调用方法等。
  • com.google.common.util.concurrent:这个包提供了多线程工具类,包括一些并发编程的实用功能,如异步计算、线程池管理等。

3、Spring常用内置工具

  • org.springframework.util.Assert:断言工具类,通常用于数据合法性检查
  • org.springframework.core.annotation.AnnotationUtils:处理注解
  • org.springframework.web.context.support.WebApplicationContextUtils:获取spring应用的上下文,即 WebApplicationContext 对象
  • org.springframework.web.bind.ServletRequestUtils:web请求工具类,主要功能是用来从请求中解析被绑定的参数
  • org.springframework.util.FileCopyUtils:文件的拷贝处理,提供了许多一步式的静态操作方法,能够将文件内容拷贝到一个目标 byte[]、String 甚至一个输出流或输出文件中
  • org.springframework.core.io.support.PropertiesLoaderUtils:允许您直接通过基于类路径的文件地址加载属性资源
  • org.springframework.util.StringUtils:字符串工具类
  • org.springframework.util.CollectionUtils:集合工具类
  • org.springframework.util.NumberUtils:处理数字工具类
  • org.springframework.util.SerializationUtils:对象序列化与反序列化
  • org.springframework.util.DigestUtils:MD5加密
  • org.springframework.util.PatternMatchUtils:处理简单的匹配
  • org.springframework.util.PropertyPlaceholderHelper:处理占位符的替换
  • org.springframework.util.ReflectionUtils:反射常用工具方法. 有 findField, setField, getField, findMethod, invokeMethod等有用的方法
  • org.springframework.util.StopWatch:一个很好的用于记录执行时间的工具类

日志记录库

SLF4J,为各种日志 API 提供简单统一接口,优于 Apache Common-LoggingLog4JLogBack

HTTP库

Apache HttpClient,OkHttp,spring-web的RestTemplate,提供对 HTTP 的支持,优于 JDK 自带的java.net类。

JSON解析库

Jackson和Gson,用于解析和创建 JSON 消息。

  • Gson:是Google开发的一款功能全面的JSON解析库。它提供了toJson和fromJson两个主要的转换函数,用于Java对象和JSON字符串之间的转换。
  • FastJson:是阿里巴巴开发的一个高性能的JSON处理器。它在处理复杂类型的JavaBean到JSON的转换时表现出色,并且采用了独创的算法来优化解析速度。
  • Jackson:是另一个广泛使用的Java JSON解析库。它提供了序列化和反序列化的功能,即将Java对象转换为JSON字符串,以及将JSON字符串转换回Java对象。
  • org.json:是Java中常用的另一个JSON解析库,主要提供JSONObject和JSONArray类来进行JSON数据的解析。

JSON已成为将信息从客户端传送到服务器的首选协议。他们已经将XML替换为以平台无关的方式传输信息的最优选方式。

XML解析库

  • DOM(Document Object Model):可获取和操作 xml 任意部分的结构和数据,但需加载整个 XML 文档,消耗资源大
  • SAX(Simple API for XML):不需要全部加载完 XML 文档,可以在达到期望条件时停止解析,无法直接定位文档层次
  • Jsoup:是一个用于解析和操作HTML文档的Java库,它也可以用来解析XML。
  • JDOM:是一个纯Java的XML API,它提供了一个轻量级和灵活的文档模型。可以与SAX解析器结合使用,性能较差
  • DOM4J:是一个强大的Java XML API,它结合了易用性和性能。接口较多,API 较为复杂

HTML解析库

  • Jsoup: 用于解析HTML文档,并提供了一种非常方便的API来提取和操作数据。
  • TagSoup: 它是一个HTML到XML的转换器,允许你使用XML工具处理HTML。

Excel阅读库

Apache POI API,EasyExcel,用于与 Microsoft Office 交互。

许多应用程序都需要提供在Excel中导出数据的功能,如果必须从Java应用程序中导出数据,则需要Apache POI API。

PDF库

iText和Apache FOP,与Microsoft Excel和World相似,PDF是另一种普遍存在的格式。如果您需要在应用程序中支持PDF功能,例如将数据导出为PDF文件,则可以使用iText和Apache FOP库。

数据库连接池库

Apache Commons DBCP,HikariCP,Druid,H2 Database,如果要通过Java应用程序与数据库进行交互,但不使用数据库连接池库,那么您将丢失某些内容。由于在运行时创建连接会花费时间,并使请求处理变慢,因此始终建议使用DB连接库。

模板引擎库

  • Velocity:不仅可以用于界面展示(HTML.xml等)还可以生成输入java代码,SQL语句等文本格式。
  • FreeMarker:功能与Velocity差不多,但是语法更加强大,使用方便。
  • Thymeleaf:主要渲染xml、HTML、HTML5而且与springboot整合。
  • jsp:是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。

字节码库

javassist和Cglib Nodep,如果您正在编写生成代码或与字节码交互的框架或库,那么您需要一个字节码库。

单元测试库

DBunit,JUnit,Mockito和PowerMock,单元测试是将普通开发人员与优秀开发人员区分开的最重要的事情。

消息库

与日志记录和数据库连接类似,消息传递也是许多实际Java应用程序的共同功能。Java提供了JMSJava Messaging Service,它不是JDK的一部分。

posted @ 2024-05-10 10:10  空还是空  阅读(364)  评论(0编辑  收藏  举报