阅读更多

4顶
0踩

互联网
众所周知,Java 的生态环境相当庞大,包含了数量相当可观的官方及第三方库。利用这些库,可以解决在用 Java 开发时遇到的各类问题,让开发效率得到显著提升。

举些例子,最常用的官方库有 java.lang、java.util、java.io、java.sql、java.net 等;而至于目前最流行的第三方库,就有 Junit、SLF4J、Google Guava、XStream、JSoup、Gson、Joda Time 等,可以说是不胜枚举。

我到底需要用到哪些 Java 库呢?

某些库再热门也好,你的项目也未必适用。然而即便如此,大部分项目实际上都还是需要进行单元测试、日志记录、序列化、代码规范化等工作的,因此用一些相关的 Java 库去解决问题,还是不错的选择。

下面,就让我来介绍一些可以用来解决常见开发问题的热门 Java 库吧。

1. JUnit

JUnit 起源于 xUnit 家族的单元测试框架,目前可以说是最知名及常用的测试框架。通过 JUnit,可以轻松地写出可重复测试的代码。早期版本的 JUnit 属于 junit.framework 包;而从 JUnit 4 开始,便转移到了 org.junit 包。

JUnit 的一大特色在于给开发者提供了简洁的图形界面,如此一来编写测试代码便更为轻松,开发的进度也得以显著加快。

Junit 允许多个测试一个接一个,或是并发同时执行,并且会实时返回测试结果,而且还带有进度条,提示开发者测试进度如何。一般当测试正常进行时,进度条是绿的;而当遇到了错误,就会变红。

此外,JUnit 还允许开发者创建测试套件 (Test Suite) 来查看、检测整体的测试进度及测试期间发生的副作用。

对于很多项目而言,单元测试是非常重要的。JUnit 之所以能够成为 Java 圈中最热门的测试库,正是因为它既简洁又高效。

点击这里来深入了解一下 JUnit。

2. SLF4J

SLF4J 或 Simple Logging Facade for Java,为不同的框架提供了一个抽象概念,允许开发人员在部署时插入任何框架。SLF4J 的功能在于基于外观模式的简单日志 API,并将客户端 API 与日志后端分开。

通过向 classpath 中添加所需的绑定,可以发现其后端。由于客户端 API 和后端完全解耦,因此它可以集成到任何框架或现有的代码片段。

创建这个有用的机制的人是 Ceki Gülcü。 你可以在 SLF4J 下载链接伤下载 SLF4J。

你可能还会喜欢 - 最佳 Java 框架

3. Google Guava

Google Guava 是 Java 编程的另一个受欢迎的 Java 核心库,它是开源的,由 Googl 开发的。Google Guava 项目中包含的库可用于每天在谷歌上开发/升级的 Java 的产品。

Google Guava 软件包中的库或多或少是对核心库的对应部分有增强功能,并使编程更加高效和有效。Guava 包括内存缓存、不可变集合、函数类型、图形库和可用于 I/O、散列、并发、原语、字符串处理、反射等等的 API 实用程序。

在这里查看更多关于 Google Guava 的信息——Core Java Libraries - Google

4. XStream

当涉及将对象序列化到 XML 中时,XStream 库是开发人员值得信赖的选择。 该库允许开发人员轻松地将对象序列化为 XML 并返回。

反射是这里的关键,用于识别在运行时序列化的对象图的结构。 对象不需要修改。 任何内部字段都可以使用 XStream 序列化。

说到 XStream 的功能 - 大多数对象可以被序列化,并提供特定的映射,提供高性能和低内存占用,适用于具有较高吞吐量的大型对象图和系统,信息不重复,可自定义的转换策略,安全的框架,异常情况下的详细诊断等等。

诸如传输,配置,持久化和单元测试等广泛的应用使它成为Java开发人员社区中流行的 Java 库。

您可以在这里下载:Xstream - 对象到 XML

5. Log4j

Log4j 是 Apache 中的一个库,可用作日志工具。该工具最初由 Ceki Gülcü 开发。 但是现在,Apache Software Foundation 已经接管了这个项目。

Log4j 恰好是其所在应用领域中最可靠的库,可以扩展到支持自定义组件配置。配置语法非常简单,支持 XML、YAML 和 JSON。

Log4J 提供对多个API的支持,可以在白名单应用程序中使用不同版本的 Log4j 或 SLF4J。另一个有趣的功能是它支持用户自定义的消息对象。最重要的是,它的工作速度相当令人印象深刻。

你可以在这里下载 - Log4J

6. iText

iText 是用于在 Java 中创建和操作 PDF 文件的 Java 开源库。这个库是由包括布鲁诺·洛皮杰(Bruno Lowagie)和保罗·苏亚雷斯(Paulo Soares)在内的团队创建的。

虽然以前的 iText 版本有很多限制,但最近的版本包括许多新功能,如创建 pdf 的选项,将文档从 XML、HTML、CSS 或数据库转换为 PDF。生成的 PDF 符合全球通用标准。它还允许在 PDF 中添加交互性并添加数字签名。你可以复制、合并文档、导入、更改结构、在 PDF 中添加水印或条形码 F。

了解更多关于 iText 在这里 - iText PDF library for Java

7. jsoup

jsoup 是一个有用的 Java 库,用于处理和解析 HTML。Jsoup 提供了一个有用的用于提取数据的 API。jsoup 中实现的标准是 WHATWG HTML5。和最新的浏览器作法一样,jsoup 将 HTML 解析为 DOM。

它允许或解析来自任何 URL 或文件的 HTML,例如,你可以获取 http://noeticforce.com 的主页信息,解析它,并将所有 H2 标题提取到元素列表中。

它的用途包括清理和操纵 HTML 元素和属性,以检索用户提交的数据并过滤掉 XSS 攻击属性,使用 jsoup 还可以完成更多功能。

在这里下载 jsoup - Jsoup

8. Gson

Gson 是 Google 的另一个库,它轻而易举的将 Java Objects 转换成等效的 JSON 表示形式。

虽然有一些允许将 Java 对象转换为 JSON 的开源项目,但它们要求您将 Java 注释放在您使用的类中。 显然,如果您无法访问源代码,则无法执行此操作,此外,大多数开源项目都不支持 Java 泛型。 Gson考虑到这些问题。

它提供了简单的 toJson()和 fromJson()方法,可用于将 Java 对象和 JSON 互相转换。 Gson 库允许将不可修改的对象转换为 JSON 并返回。 如上所述,它为 Java 泛型提供了极大的支持,并允许对象的自定义表示。

这是 Java Gson 库的下载链接 - 下载 Gson

9. Apache PDF box

Apache PDFBox 是另一个可用于操作 PDF 文件的开源库。这个项目最初由本·利奇菲尔德(Ben Litchfield)发起的,后来被 Apache 接管。

PDFBox 的主要功能使其成为超级库,其中包括 PDF 创建、将单个 PDF 分割为多个 PDF 文件、合并并提取 PDF 文本的 Unicode 文本,填写 PDF 表单,根据 PDF/A 标准验证 PDF 文件,将 PDF 保存为图像并对 PDF 进行数字签名。

请在这里查看 —— Apache PDFBox

10. Joda Time

这就是我一直强调的简单但功能强大的库,它节省了大量的开发时间。 Joda-Time 是一个 Java 库,作为 Java 中日期和时间类的一个很好的替代品。

Joda Time 很容易使用,并且像 getYear()或 getDayOfWeek()这样的属性访问器可以直接获取日期,及其更详细的信息。

Joda Time 还提供计算日期和时间的功能,并支持几乎所有需要的日期格式,而且肯定难以用简单的 JDK 方法进行复制。

您可以在这下载:Joda Time - Java 数据时间库

除了上述 10 个库外,还有许多其他通用于特定领域的 Java 库应用于一些小型或大型的项目。以下是其中一些库:

Ok HTTP —— 用于通过 HTTP 协议有效地在现代应用程序之间交换数据。 Okhttp 在断网时恢复连接,在多个基于 IP 的服务中切换 IP 地址。 okhttp 的一个有用的功能是与现代 TLS(SNI,ALPN)的自动连接,并且在发生故障时回到 TLS 1.0。

在这里查看这个库 - Java 的 OK HTTP库

Quartz —— 这是另一个通用且有用的 Java 库,它集成了任何规模和大小的 Java 应用程序。 Quartz 库可用于创建数百,数千或更多的作业,可根据应用需求进行扩展。 Quartz 具有诸如 JTA 事务和集群等功能,可用于企业级应用程序的支持。

在以下位置阅读更多信息:Quartz-Scheduler

Java 具有庞大的生态圈,所以你可以很容易的找到各种各样的插件库,你需要做的只是从海量的插件库中选出哪一个对你的项目更加适合。从零开始开发也是可以的,但是如果已经有现成的,而且被证明有效的库组件存在时,为什么要去重复造轮子呢。

英文原文:Java Library: 10+ Best Libraries for Java Programmers
来自: oschina
4
0
评论 共 3 条 请登录后发表评论
3 楼 wsc830719 2017-07-14 08:49
恩,不能小看一个网站传递的正能量,我经常来看这个网站的,不说天天来,但是隔三差五的也会来,首页头条我都一个不落的看过来;从中可以了解技术方向,已经好几次了我从头条获取到了自己想要的技术或者思想,在思考自己的架构和增强自己的技术经验方面非常有意义。比如看了某个库的思想介绍,我又大胆考虑了自己的软件架构向那里进发;你们的文章真的很启发人的,有意义,帮了我好几次了。所以我觉得只要是积极的事情一定会有积极的意义,共勉!
2 楼 andyhan 2017-07-07 15:13
标题说10个,内容却是12个,如此的不严谨。
1 楼 Wangwei86609 2017-07-06 16:58
说的太好了,国内老程序员开发,还在继续维护中
http://blog.csdn.net/wangwei86609/article/details/74552419

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • java源码包---java 源码 大量 实例

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

  • QQ实现对话

    [code="java"] 动态读取数据,实现QQ消息模式 1.使用技术,dwr实现异步数据读取数据,Dom创建html对象 2。html中给table设置ID值 3.添加一行记录公用方法 name,datetime,content是列的值 state是状态,主要是为了实现鼠标放在不同的行显示不同的样式 function innserDate(name,d...

  • QQ临时会话代码

    iamlaosong文 如果需要别人通过QQ和自己联系,留下QQ号码是一种方法,但更好的方法是在软件或者网页上留下QQ临时会话的链接,让别人点击一下就可以打开QQ会话窗口。 嵌入网页中的代码如下: <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=1611969865&site=CSDN&menu...

  • 点击按钮进行QQ交谈

    在你登录QQ的情况下,点击QQ交谈按钮,弹出QQ对话框。这里只需要把上面代码中的421551716换成你想要测试的QQ号码即可。

  • QQ在线会话功能-简单

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=100695444&site=qq&menu=yes" title="点击进行QQ交谈!"><img border="0" src="http://wpa.qq.com/pa?p=2:1006954424:41&quo

  • 点击发起qq对话

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=1406838464&site=qq&menu=yes"> 发起会话 </a>

  • 140个Java源码实例

    140个Java的源码实例 入门级重要参考资料

  • 2048小游戏源码(java)

    2048小游戏,java编写,作为课程设计的,答辩完了就开源了

  • java 150个小实例源码

    提供java 150个经典小实例的源代码,对初学者想要练习学习java非常有帮助。

  • java源码包2

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

  • java源码包3

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

  • java源码包4

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

  • java小游戏源码_分享几款java小游戏源码

    一:坦克大战源码import java.util.ArrayList;import java.awt.*;import java.awt.event.*;import java.util.List;import javax.swing.JOptionPane;public class TankClient extends Frame implements ...

  • java学生信息管理系统(附源码)

    一: 介绍 1:实现登录界面 ... 3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明。另外*myeclipse和eclipse, jcreator什么的都是IDE,...

  • 用java写一个贪吃蛇小游戏(源码在最后)

    涉及技能:GUI中的组件: 7.1 窗口 7.2 弹窗 7.3 面板 7.4 文本框 ...1.打开IDEA工具,新建一个模块module。 2.选择java,点next。 3.取一个名字叫TestSnake,然后点击finish。 4.打开新建好的T

  • 基于JAVA的网上订票系统源码(J2EE)

    这是该系统中的一个问题)。 登录进去后进入主界面main.jsp中。在该界面中,可以点击修改用户信息,密码等链接,管理员还可以点击添加火车信息的链接。当然还可以查看火车信息。(注:只有在查询后,才能进行订票)...

  • Java实现一个坦克大战的小游戏【附源码】

    系列推荐: Java 实现 捕鱼达人 小游戏【附源码】 Java 实现 贪吃蛇 小游戏【附源码】 Java 实现 1024 小游戏【附源码】 Java实现一个坦克大战的小游戏【附源码】 Java实现一个打飞机的小游戏【附源码】 Java 实现 ...

  • 基于Java的RTSP服务源码

    基于java的RTSP服务,支持RTP/UDP和RTP/TCP模式的VLC播放源码

  • 28个java常用的工具类源码

    实战中有些代码直接套用就ok,不用动手了,会写代码的不一定是高手,但是高手一定是组织代码的老手!

Global site tag (gtag.js) - Google Analytics