GitHub上那些值得一试的JAVA开源库

作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,Spring,Hibernate等等。除了这些,你可能还会fork或Star一些其他的开源库,但GitHub上的库实在太多了,以至于对于个人来说,你很难有时间去发现并了解那些不断加入的新库,而它们却往往能在一些新兴领域中给你提供帮助。

我一直使用JAVA来写后端应用,平时也会关注一些国外技术大牛的博客(来自Tapki、DZone、Google Developer等技术博客),从而注意到了一些新的而且很有意思Java开源库,它们有些能给你的项目带来帮助,有些是以游戏的形式帮你提高Java的编程水平,而另一些则能够帮助你识别JAVA程序中的常见问题 。在这多达330,000个JAVA开源库中,我收集了下面这些或许也值得你一试的Java开源库。

Strman-java - 字符串处理

Strmen-java是一个字符串处理工具,你可以通过maven将它引入到项目中。除了Java本身的字符串处理方式外,我们还可以使用Apache Common Langs里的StringUtils来简化String的操作。但以上两种方式对于我们日常编程中最容易碰到的字符串处理来说,仍然显得有些不足。Strmen-java为我们提供了一个非常完整且强大的解决方案,使用它可以解决几乎所有字符串处理场景。

下面便是Strman-java的几个常见使用示例:

拼接字符串

import static strman.Strman.append
append("f", "o", "o", "b", "a", "r")
// result => "foobar"

获取某一个位置的字符

import static strman.Strman.at
at("foobar", 0)
// result => Optional("f")

取出某两个字符包含的内容

import static strman.Strman.between
between("[abc][def]", "[", "]")

Base64 编码

import static strman.Strman.base64Encode
base64Encode("strman")
// result => "c3RybWFu"

Tablesaw - “大数据”

谈到大数据,我们想到的总是Hodoop加上集群部署,但有没有一种更小巧的方式,能让我们在单机上方便地实现大数据的那些功能呢?Tablesaw给我们提供了一种基于内存的高性能大数据解决方案。你可以使用它的API方便地从RDBMS或是CSV中导入数据,然后利用Tablesaw提供的接口对数据进行排序、筛选、分组、map/reduce等操作。

根据文档给出的说明,你将可以在22秒内将500,000,000行(每行4个字段)的数据文件加载到10G的内存中。而查询速度更是达到仅需1-2ms。


Dex - 数据可视化

Dex是一个数据可视化解决方案,它支持超过50种不同的视图类型,包括世界地图,timeline,3D图形等等。Dex是使用Java/JavaFX编写的,你将可以很方便地将它与你的其他程序整合(比如用R语言写的大数据分析程序)创造出美观的图表来。


Bootique - 微服务框架

以前开发Web应用程序时,我们总需要先构建一个应用,然后将它打包(war),再部署到如Tomcat这样的Web容器中。但随着微服务架构的流行,我们需要更轻量化,非容器的开发框架。SpringBoot是我一直在使用的,而Bootique无疑是另一种优秀的选择。它允许你通过具有不同功能的模块插入,来支持如REST Service,Web app,定时调度,数据迁移等功能。而使用它写的程序都则会被打包为一个Jar文件,你可以通过命令行更灵活地去启动它。

从很多角度看,它都很像SpringBoot,将你从Java应用从它所依赖的Web容器中解放出来,程序员们可以有更强的自主性,去写主程序的main()函数。甚至在你不添加任何额外的模块的情况下,你也能直接使用Bootqiue去实现一个Java应用。


Gumshoe - Java程序检测

Gumshoe是一个JAVA程序检测工具,它能帮助你跟踪程序的负载和性能。它能通过度量TCP,UDP,CPU使用等信息,帮助你分析出资源的使用情况 ,同时它也提供了Java程序中调用栈的分析功能,比如提供某个方法调用的次数,频度等信息。


LeakCanary - 内存泄漏监控

内存泄漏一直是令Java程序员苦恼的问题,因为在你开发阶段很难察觉内存泄漏问题,而一旦到了生产环境,则可能因为它而造成严重的后果。LeakCanary是一个内存泄漏检查工具,只需要像下面这样简单加入LeakCanary,它便能全程监控你的应用,并在出现内存泄漏时给你发出警告。LeakCanary同时支持Android和Java,下面是在Android应用中使用的例子。

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    LeakCanary.install(this);
  }
}


awesome-java - JAVA资源大集合

Awesome-java得到了7490个Star,作者将JAVA中那些最常用的第三方库按照分类整理成了一个列表。包含Ancients(古老,但常用的),Bean Mapping,Build,Bytecode Manipulation,Code Analysis,Command-line Argument Parsers,Configuration,Continuous Integration,CSV,Database等等,简直是一本jiava第三方库大全,如果你对项目中应该使用哪一个库不确定,或希望选择几个库来做比较,都可以到awesome-java上进行参考。


99-Problems - 学习JAVA8

99-Problems是一个很有意思的GitHub项目,它对三种不同的语言Java 8,Scala和Haskell分别提出了99个问题,让你通过使用特定语言编程来提供一个最优的解决方案。

这些问题分为不同的难度等级,用*表示,一个星号表示在15分钟内解决,2个星号可能需要30-69分钟,而最难的3个星号,则需要更长时间(90分钟左右),如果你能在限定的时间内使用JAVA8的特性解决所有的问题,那说明你对JAVA8的掌握程度已经非常牢固了。如果你没办法解决所有问题也没关系,你可以查看作者提供的代码示例,这也是你学习JAVA8很好的途径。


Chronicle Map - 高效键值对存储

Chronicle Map是一个基于内存的键值对存储方案。以其低延迟、高并发的特性著称,并在交易及金融系统中得到应用。另外,他还支持持久化到磁盘,以及多键值查询的功能。

下面是官方文档中一段对于从JAVA角度描述Chronicle Map的说明:

From Java perspective, ChronicleMap is a ConcurrentMap implementation which stores the entries off-heap, serializing/deserializing key and value objects to/from off-heap memory transparently. Chronicle Map supports

  • Key and value objects caching/reusing for making zero allocations (garbage) on queries.
  • Flyweight values for eliminating serialization/deserialization cost and allowing direct read/write access to off-heap memory.

ND4J - 科学计算

ND4J是一个开源的数值计算扩展 ,它将 Python中著名的numpy库的很多特性带到了Java中。ND4J可以用来存储和处理大型多维矩阵。它的计算和处理速度很快,但占用的内存却很少,程序员们可以很容易地使用它来与其他JAVA或Scala库作接口。

ND4J主要包括了:一个强大的N维数组对象Array,比较成熟的函数库;实用的线性代数、傅里叶变换和随机数生成函数等。它可以与Hadoop或者Spark这样的工具整合使用。


Automon - Java监控

Automon是一个非常灵活的JAVA监控工具,它结合了AOP(AspectJ)以及JDK和其他依赖库的功能特性,以声明方式去监控你的Java代码。它可以与JAMon,JavaSimon,Yammer Metrics,StatsD和像 perf4j,log4j,sl4j这样的logging库结合使用。

Automon最常被用于跟踪Java方法的调用时长,异常次数等信息,并在你选择的工具中显示监控结果。它并不自己进行任何监控动作,但却很好地扮演了“我应该监控什么”以及“我如何进行监控”这两者之间中间人的角色。而且它的安装也非常简单,只需要简单进行配置便可使用。


Swiss Java Knife - JAVA工具集

SJK(Java瑞士军刀)是一个用于JVM监控、排错以及调优的工具集。它是一个命令行工具,但使用起来非常方便,你可以用它来查询JVM中线程的CPU使用,GC实时信息,以及基本调优选项。也可以结合MBean以JSON格式导出所有你需要的信息。



以上只是GitHub中那些优秀开源库的冰山一角,作为一名现代的Java程序员,你除了需要优秀的编程能力之外,善于发现并使用那些优秀的开源库将使你更上一个台阶。如果你也有好的Java开源库推荐,请在下面留言,我会补充道这份清单中,让更多JAVA程序员能够从中受益。

注:以上开源库来自Tapki的推荐。

时间: 2024-12-23 01:03:50

GitHub上那些值得一试的JAVA开源库的相关文章

GitHub上最火的74个Android开源项目(收藏)

GitHub上最火的40个Android开源项目(一) GitHub上最火的40个Android开源项目(二) GitHub上最火的74个Android开源项目(三) GitHub上最火的40个iOS开源项目(一) GitHub上最火的40个iOS开源项目(二) GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你达到事半功倍的效果. 下面,就让我们

GitHub上最火的74个Android开源项目

GitHub上最火的74个Android开源项目 1.ActionBarSherlock ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式. 对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏

GitHub 上最热的10款国产开源软件

衡量一个开源产品好不好,看看产品在 GitHub 的 Star 数量就知道了.由此可见,GitHub 已经沦落为开源产品的“大众点评”了.一个开源产品希望快速的被开发者知道.快速的获取反馈,放到 GitHub 上面就可以了.GitHub上有无数大牌产品:Bootstrap.JQeury.bower.Nginx 等等,可惜都是外国人搞出来的,他们都有一个共同的特点:全英文. 感谢 GitHub,让我们有了一个优秀的共享平台,享受思想碰撞.参与优秀项目的激情.下面我跟广大的程序猿们,分享一下 Git

深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

作者简介:akshay pai,数据科学工程师,热爱研究机器学习问题.Source Dexter网站创办人. TensorFlow是Google的开源深度学习库,你可以使用这个框架以及Python编程语言,构建大量基于机器学习的应用程序.而且还有很多人把TensorFlow构建的应用程序或者其他框架,开源发布到GitHub上. 这次跟大家分享一些GitHub上令人惊奇的TensorFlow项目,你可以直接在你的应用中使用,或者根据自身所需进一步予以改进. TensorFlow简介 如果你已经知道

Github 上 Star 最多的个人 Spring Boot 开源学习项目

2016年,在一次技术调研的过程中认识到了 Spring Boot ,试用之后便一发不可收拾的爱上它.为了防止学习之后忘记,就在网上连载了 Spring Boot 系列文章,没想到这一开始便与 Spring Boot 深度结缘. 近三年的时间写了一百多篇关于 Spring Boot 的文章(包含两个课程),在写文章的过程中将文中的示例项目托管在 Github 上面,随着学习 Spring Boot 的朋友越来越多,在 Github 上面的关注(Star)人数也越来越多,到现在已经高达 8300

硬核! 逛了4年Github ,一口气把我收藏的 Java 开源项目分享给你!

Awsome Java Great Java project on Github(Github 上非常棒的 Java 开源项目). English Version 大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架.软件或者教程.这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整理下来的想法.我会按照几个维度对项目进行分类,以便大家查阅.当然,如果你觉得不错的话,欢迎给本项目点个 Star.我会用我的业余时间持续完善这份名

https://github.com/coolnameismy/BabyBluetooth github上的一个ios 蓝牙4.0的库并带文档和教程

The easiest way to use Bluetooth (BLE )in ios,even bady can use. 简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容ios和mac osx. 为什么使用它? 1:基于原生CoreBluetooth框架封装的轻量级的开源库,可以帮你更简单地使用CoreBluetooth API. 2:CoreBluetooth所有方法都是通过委托完成,代码冗余且顺序凌乱.BabyBluetooth使用block方法,可以重新按照功能和顺序

Java_开源框架_JPinyin汉字转拼音的Java开源库

本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/50039339 1.介绍 JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进.[JPinyin主要特性]1.准确.完善的字库:Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体字(异体字不存在标准拼音)之外的所有汉字:2.拼音转换速度快:经测试,转换Unicode编

如何利用Github+Appveyor+Nuget打造自己的.net core开源库

以下教程基于你有一个托管在Github上的.net core项目,如果没有的可以自己fork一个或者自己创建了默认的项目即可. 我们打开需要生成nuget包的项目中的project.json文件,有关nuget中相关的配置是可以直接通过packOptions节去配置的,比如下面这样: 1 "packOptions": { 2 "iconUrl": "https://avatars0.githubusercontent.com/u/16951448?v=3&