转:https://www.evget.com/article/2016/7/19/24526.html
概述
作为开源代码库以及版本控制系统,Github在全球拥有1500多万开发者用户,托管着3800多万个代码库,而这其中有330550个库是Java的。当你需要使用相关代码来帮助你开发项目或者制作一个简单的小游戏时,及时了解GitHub上值得关注的项目无疑会让你的开发事半功倍。在这里,我们整理了在Github上值得你关注的10个Java项目。
1. 极简化的Java技术
Bootique是用于构建较少容器的可运行Java应用程序的极限化技术。这个项目支持你以模块为基础创建REST服务、web应用程序、数据库迁移任务等工作,因此,你可以使用简单的命令来运行和控制它们。
这个项目背后的目标是把应用程序从Java容器中解放出来,让开发者改造他们的主程序。这个技术还有一个好处,它包含了一些内置命令,因此如果你不需要太多代码或者你没有向应用程序导入任何模块,你仍然可以使用Bootique来执行。
2. 优雅的问题解决之道
这个项目的名字说明了一切:99-problems。正如你所猜想的那样,它是一个通过收集问题来帮助你在逻辑编程下实践自己技术的项目。你可以选择使用Java 8、Scala还是Haskell来解决问题,而你最终的目标是找寻最优雅的问题解决方案。
如果你是一个难题爱好者——不用担心,这里有各种不同的难度,不同时间跨越(15分钟-几小时)的难题在等待着你。没有人会检查你解决问题所花费的时间,但它会给你一个解决该问题的时间标准。
如果已经努力完成了这99个问题,你还会可以面对另外一个挑战,这是为开发者们准备的小游戏:Java死亡竞赛。如果你被某些难题卡住了,你不妨参看下这篇文章。
3. 字符串的处理
Strman-java是一个关于字符串处理的Java 8代码库。正如你所了解的那样,它处理问题的方式非常直接。它能够运行在Maven上,你所需要做的全部工作就是为你的构建工具选择添加一个依赖关系。
如果你使用过Kik(Node.js的扩展包),并听说过当它被撤包后所产生的leftPad危机,那么你一定会喜欢上Strman的,它包含了一个通过返回指定长度的新字符串来填补初始字符串的选项。
除此之外,你还可以在其中找到包括将字符串附加到数值、在特定索引获取字符以及返回一个包含从头到尾字符串的数组等各种函数的列表。
4. 数据浏览
如果你想找一个实现数据交互的炫酷方式,你可以留意下Dex。通过它,你可以对数据进行提取、转换和可视化,同时还可以获得数据预测的能力。你可以将数据通过3D的形式或者其它你喜欢的HTML样式来进行可视化。
Dex集成了超过50种可视化模式,包括了世界地图、约定时间线、网络使用率等。你可以通过运行的R实例来对其进行集成,然后利用其复杂的统计分析和预测分析。
民主党还是共和党?一张弦图说明美国历任总统的阵营
5. 小型的大数据设计
Tablesaw是一个包含了数据工具和以列(column)为主要存储形式的响应式内存数据表格插件。它围绕着没有谁愿意为小型任务进行分布式分析的理念而设计,你可以在一台单独服务器上使用一个200万行的表格进行交互性的工作。
你可以使用Tablesaw来演示呈现的布局、数据优先级或者为用户提供数据显示与交互的一系列扩展控制。在Tablesaw中,你可以导入来自RDBMS和CSV文件的数据,添加或者移除列、执行示图,通过压缩的柱状储存格式来减少表格的操作和存储。
6. 键值存储
Chronicle Map是用于存储内存键值的插件。它主要面向诸如贸易和金融市场应用这一类低延迟和多进程应用程序。这个代码库专注于读写查询的平均延迟,它能够让你编写与服务器中硬件执行线程数量相当的查询。
这个插件的主要用例是可在单独的服务器(比如Redis)上移除那些缓慢的键值存储以及通过类似于JVM-centric的解决方案来对其加速。
7. 负载研究
Gumshoe可以让你能够监控应用程序的性能统计。使用它,你可以精确的找到代码的行数并获取调用堆栈及单个堆栈框架的相关统计数据。这意味着你能够分析你电脑资源的使用情况(TCP、UDP、文件系统或处理器利用率)
这个代码库支持屏幕截图、过滤以及生成可视化的数据统计,并且能够给予你关于火焰图和根图(flame and root graphs)的直观视图。如果你还想要寻找关于应用程序的更多细节,你还可以在捕捉或者可视化的时候对堆栈框架进行过滤,并在运行时进行改变。
8. Java音乐器
SoundSea可以让你通过其内置的元数据和音乐集搜索和下载歌曲。当你在搜索某一个歌曲时,SoundSea会寻找iTunes上的相关元数据和音乐集。如果拥有超过一首可用的结果,你可以从中再筛选需要的那一个。
歌曲的下载来自于Pleer.com,你可以通过高,低或者VBR比特率来进行过滤。如果你比较幸运,你甚至可以立刻下载作为最终结果的第一个搜索结果。此外,它还拥有一个迷你播放器,无需重载音乐库就可以简单倾听歌曲。
9. 检测内存泄露
LeakCanary是一个可帮助你阻止内存泄露的开源库,你可以用它来构建调试检测Java内存泄漏(以及Android)。
在你安装了LeakCanary之后,你可以通过设置使检测到内存泄露时进行自动的通知显示。该插件另一个用途是通过建立智能插脚(smart pins)检测某些对象是否已经被垃圾回收。
10. 多维数组
ND4J是一个开源的代码库,它将来自于Python社区的直观科学计算工具带到了JVMs中。它主要运用于生产环境,因此它拥有运行快速且内存需求小的特点。通过它的使用,工程师们找到了一种将算法和接口导入其它Java和Scala库的简单方法。
作为能够提供通用的n维数组对象,包含GPUs、线性代数、信号处理等功能的多功能平台,ND4J集成了Hadoop、Spark以及它们的模仿流行Python数学库Numpy语义的API接口。