Java第三方工具庫/包匯總


一、科學計算或矩陣運算庫

科學計算包:

  1. JMathLib是一個用於計算復雜數學表達式並能夠圖形化顯示計算結果的Java開源類庫。它是Matlab、Octave、FreeMat、Scilab的一個克隆,但完全采用純Java實現。
  2. JSci:Java 科學對象(JSci)開放源代碼項目是 Durham(英國 Durham)大學粒子理論中心的三年級研究生 Mark Hale 創立的。JSci 是一個包集合,包含數學和科學類。 使用 JSci,您既可以在 AWT 中也可以在 Swing 中創建簡單的條形圖、折線圖和餅形圖。 JSci.swing.JBarGraph 、 JSci.swing.JPieChart 和 JSci.swing.JLineGraph API 組件設計得也很好,這些組件和 AWT 繪圖類都遵守 MVC 體系結構。
  3. JSciencehttp://jscience.org/ JScience 是一個Java的科學計算包
  4. jLab:jLab是數值計算的Java執行環境。該jLab環境的目的是提供一個基於Matlab / Scilab喜歡的科學計算平台所支持的腳本引擎執行的Java語言。 The current jLab
  5. ND4J:在JVM上實現快速的科學計算;ND4J是一個開源的數值計算擴展 ,它將 Python中著名的 numpy 庫的很多特性帶到了Java中。ND4J可以用來存儲和處理大型多維矩陣。它的計算和處理速度很快,但占用的內存卻很少,程序員們可以很容易地使用它來與其他JAVA或Scala庫作接口。https://github.com/deeplearning4j/dl4j-examples
    dl4j(DeepLearning4j): java下的一個機器學習開源項目
    nd4j: dl4j使用的底層的算法庫,實現的幾乎所有的矩陣相關的操作
  6. Shared Scientific Toolbox:共享科學工具箱是一個用於科學和分布式計算的Java類庫。它具有廣泛的多方面的陣列線性代數和FFT支持;異步,高性能的網絡層和詮釋抽象類載入中,記錄和消息傳遞。
  7. Colt Matrix Libary:Colt Project 提供了一組開源的高性能的科學和數學計算的 Java 庫
    Colt是一個高性能的數學庫,由以下幾個子庫構成:
    Colt庫:基本的動態數組、稀疏矩陣、線性代數。
    Jet庫:數理統計、直方圖。
    CoreJava庫:類printf的打印函數,並行計算。

  8. PETSC:PETSc(Portable, Extensible Toolkit for Scientific Computation) ,讀作Pet-see,是美國能源部ODE2000支持開發的20多個ACTS工具箱之一,由Argonne國家實驗室開發的可移植可擴展科學計算工具箱,主要用於在分布式存儲環境高效求解偏微分方程組及相關問題。PETSc所有消息傳遞通信均采用MPI標准實現。線性方程組求解器是PETSc的核心組件之一,PETSc幾乎提供了所有求解線性方程組的高效求解器,既有串行求解也有並行求解,既有直接法求解也有迭代法求解。

  9. Catalano:Catalano Framework 是一個 Java 和 Android 的科學計算框架。 主要計算功能: 圖像處理 模糊邏輯 數學計算 統計 機器學習 神經網絡

矩陣運算包:

  1. EJML:Java矩陣操作庫 Efficient Java Matrix Library (EJML)這是一個比較高效率的Java矩陣運算庫,提供比較全面地計算。 但是和C++的矩陣運算還是不能比。http://blog.163.com/jekyll_zhou%40126/blog/static/18204738201210642927390/ 下載網址
  2. Jama:Jama是一個基本的線性代數java包。包括一個基本的Matrix類和5個矩陣分解類。Matrix類提供了基本的線性代數數值運算的功能,https://www.cnblogs.com/zangbo/p/5622351.html
  3. UJMP (Universal Java Matrix Package)** 統一Java矩陣工具包是一個提供各種矩陣運算的Java類庫。這個工具包提供了諸如稀疏矩陣和稠密矩陣的實現,以及矩陣的分解、求逆、加法、乘法,均值,方差和相關系數等運算功能. 此外還提供一些常用的線性代數運算功能,矩陣可視化功能和矩陣數據導入與導出的功能。
  4. jlbas: 矩陣向量運算庫jblas,http://blog.csdn.net/golden1314521/article/details/45484529
    jblas is a fast linear algebra library for Java. jblas is based on BLAS and LAPACK, the de-facto industry standard for matrix computations, and uses state-of-the-art implementations like ATLAS for all its computational routines, making jBLAS very fast.
    主頁地址:http://jblas.org/
    該庫的API文檔地址:http://jblas.org/javadoc/index.html
    相關例子和庫文件jar包下載 http://download.csdn.net/detail/u012176591/8660849
    在Java工程中我們只要 引入jar包文件就可以了。
  5. ND4J

    二、圖形繪制+圖像處理包:

    1. ***java的Graphics類:Java中繪制基本圖形,可以使用Java類庫中的Graphics類,此類位於java.awt包中。在我們自己的java程序文件中,要使用Graphics類就需要使用import java.awt.Graphics語句將Graphics類導入進來。
      Graphics類提供基本的幾何圖形繪制方法,主要有:畫線段、畫矩形、畫圓、畫帶顏色的圖形、畫橢圓、畫圓弧、畫多邊形等。本項目僅用到畫直線的功能,其它圖形繪制請自行點擊查閱Java API。
      Graphics類的drawLine()方法:drawLine(int x1,int y1,int x2,int y2)

    2. Oracle提供的 Java Advanced Imaging (JAI) 庫處理2D圖像還可以的。

    3. ***Java Image Filters【Java Image Filters 是由 Jhlabs 開發的一組用來處理 Java 圖像的類庫,提供各種常用的圖像處理效果,例如反轉色、扭曲、水波紋、凹凸、黑白效果等等數十種效果,如下圖所示,更多的效果請看其網站首頁: ChannelMixFilter - Mixes the RGB channels Cont… 更多Java Image Filters信息】http://www.oschina.net/p/javaimagefilters
    4. **ImageJ:一個Java的圖像處理和分析庫,ImageJ是一個基於java的公共的圖像處理軟件,它是由National Institutes of Health開發的。可運行於Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus PDA等多種平台。其基於java的特點, 使得它編寫的程序能以applet等方式分發。
      ImageJ能夠顯示,編輯,分析,處理,保存,打印8位,16位,32位的圖片, 支持TIFF, PNG, GIF, JPEG, BMP, DICOM, FITS等多種格式。ImageJ支持圖像棧功能,即在一個窗口里以多線程的形式層疊多個圖像, 並行處理。只要內存允許,ImageJ能打開任意多的圖像進行處理。除了基本的圖像操作, 比如縮放,旋轉, 扭曲, 平滑處理外,ImageJ還能進行圖片的區域和像素統計, 間距,角度計算, 能創建柱狀圖和剖面圖,進行傅里葉變換。
      ImageJ是一個開放結構的軟件, 支持用戶自定義插件和宏。
      ImageJ自帶編輯器, 並且導入了java的編譯器,實現了簡單的IDE功能, 用戶可直接基於ImageJ進行圖像處理
    5. ***Sanselan:Sanselan 是一個純 Java 的圖形庫,可以讀寫各種格式的圖像文件,包括快速解析圖片信息例如大小/顏色/icc以及元數據等。盡管因為是Java開發的,在處理速度上會稍微慢一 些,但具備良好的可移植性。http://www.oschina.net/p/sanselan
    6. JJIL 是一個Java 的圖像處理類庫,有超過60個的圖像處理任務,例如可以用來識別條形碼之類。JJIL 主要面向J2ME 手機應用開發
    7. ***Imagero 是 Java 的圖像處理庫,支持的圖像類型包括:BMP, GIF, TIFF, PNG, JNG, MNG, JPEG (including CMYK and 12-bit grey), PSD, PBM, PGM, PPM, TGA, EPS, EPSI, EPSF, AI, PDF, MRW, CRW, NEF, DCR, and DNG。Imagero 可讀取縮略圖以及編輯圖像元數據… 更多Imagero信息
    8. 商業】繪圖庫 DISLIN:DISLIN是一個高級別,易於使用的繪圖庫,支持曲線,條形圖,餅圖,三維彩色圖,曲面,輪廓,和地圖顯示。支持多種輸出格式,如X11的,VGA,PostScript , PDF格式,CGM, HPGL , TIFF和PNG等。繪圖采用Perl解釋語言 , 支持Python和Java,同時還支持大多數http://www.oschina.net/p/dislin
    9. Thumbnailator 是一個用來生成圖像縮略圖的 Java 類庫,通過很簡單的代碼即可生成圖片縮略圖,也可直接對一整個目錄的圖片生成縮略圖。
    10. JAI-ImageIO
      Java Advanced Imaging Image I/O Tools projects
    11. ***Marvin: Java圖像處理框架 Marvin 是一個Java開發的可擴展的圖像處理框架,該框架主要提供以下幾方面的功能: 基本圖像操作; 從視頻中捕獲幀; 多線程的圖像處理; 通過GUI界面集成插件; 插件性能分析; 通過插件進行功能擴展。 http://www.oschina.net/p/marvin
    12. Java 圖像處理框架 Processing: Processing 是一個為想要圖像處理程序所提供的開源編程語言和環境,動畫和互動。這是使用的學生,藝術家,設計師,研究人員和愛好者學習,原型及生產。這是建立基礎教育計算機編程在視覺方面,並作為軟件寫生簿和專業的生產工具。http://www.oschina.net/p/processing
    13. 圖像處理標簽庫 JImageTaglib
      JImageTaglib是個用來處理圖片的的標簽,在服務器中生成響應的處理圖片,可以對圖片進行過濾(如轉灰度圖,邊緣查找等)另外還可以用來生成條形碼。
    14. Java圖像處理庫 jrawio:jrawio 是一個 Java Image I/O API 的服務提供者,用來處理數碼相機拍攝的RAW格式的圖片,包括NEF, CRW, CR2, PEF, SRF, MRW,這是一個純 Java 的類庫。
    15. OpenCL的Java庫 JavaCL: JavaCL 是一個封裝了 OpenCL 圖形API的 Java 類庫,提供很多高級的圖像處理功能。http://www.oschina.net/p/javacl
    16. OpenCL庫 JOCL:JOCL (Java OpenCL)提供一種簡單的方式為OpenCL API添加Java binding。JOCL會提供兩個級別:自動生成一個低級別的binding;還有一個需要人工編寫的高級別的binding,提供一個方便的界面並將冗長降到最低。 特點: 高性能,跨平台高,http://www.oschina.net/p/jocl
    17. 三維場景圖開發類庫 jReality: jReality是一個Java開源的三維場景圖開發類庫,設計用於數學領域的3D可視化。jReality是線程安全的,擁有一個靈活的着色模型基於場景圖中的一種屬性繼承機制,獨立於設備的用戶交互並且支持真正的3D Audio(JACK)。http://www.oschina.net/p/jreality
    18. ogre4j是一個可以在Java應用程序中能過JNI使用OGRE的開源項目。OGRE(Object-Oriented Graphics Rendering Engine):是一個被廣泛使用的開源三維圖形渲染庫,成功地被應用於諸多三維仿真領域,其中包括網絡游戲和一些商業的三維仿真項目)。
    19. opencv: 計算機視覺和圖像處理
    20. 19.
//圖像處理庫:
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.color.ColorSpace;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
   
   
  
  
          

GIF動畫制作工具 GiftedMotion:
二維的GUI框架 JHotDraw
JHotDraw是一個開源項目,它是一個二維的GUI框架,主要用於支持用Java開發的圖形編輯器。它的設計中采用了許多著名的設計模式,因而具有良 好的框架、很好的復用性和擴展性。針對矢量圖形軟件開發過程中面臨的各種難題,本文提出了基於JHotDraw的解決方案,實現…
指紋識別開發包 SourceAFIS

三、 機器學習和深度學習庫

3.1 機器學習庫

  1. ***opencv
  2. ***TensorFlow: 一個是我們最喜歡的機器學習框架,被稱作無與倫比的TensorFlow框架。 TensorFlow是一個使用數據流圖進行數值計算的開源軟件庫,是GitHub上最受歡迎的機器學習項目,也是參與者和貢獻者最多的機器學習項目。TensorFlow主要是用Python編寫的,但它也支持Java和Go的一些用法。
  3. ***Weka: 地址: http://www.cs.waikato.ac.nz/ml/weka/index.html 毫無疑問,Weka 是目前首選的 Java 機器學習庫。完全基於 Java 環境,開源,免費,具有易於使用的圖形界面,適合於數據挖掘,數據分析和預測建模等多種應用場景。Weka包括一系列的工具,如數據預處理、分類、回歸、聚類、關聯規則以及可視化。
  4. ***ML:Java機器學習庫ML官網:http://java-ml.sourceforge.net/
    Java-ML是一個使用Java編寫的一系列機器學習算法的Java API。它只提供了一個標准的算法接口。對於一個機器學習庫來說,最基礎就是數據處理能力,ml庫給了dataset和instance兩個類,dataset是矩陣,instance是行(可以理解是一個list,或一個double數組)。import net.sf.javaml.core.Dataset;
    import net.sf.javaml.core.DefaultDataset;
    import net.sf.javaml.core.DenseInstance;
    import net.sf.javaml.core.Instance;
    import net.sf.javaml.core.SparseInstance;
    import net.sf.javaml.tools.InstanceTools;
    import net.sf.javaml.tools.data.FileHandler;
  5. **Massive Online Analysis(MOA)是一個面向數據流挖掘的流行開源框架,有着非常活躍的成長社區。它包括一系列的機器學習算法(分類、回歸、聚類、異常檢測、概念漂移檢測和推薦系統)和評估工具。關聯了WEKA項目,MOA也是用Java編寫的,其擴展性更強。MOA 也是基於 Java 環境,開源,免費,在面對復雜問題時,MOA 還能和 Weka 協同工作。MOA 在運算效率和內存占用方面都做了特殊優化,通過提供易於擴展的底層結構、可復用的數據流分析設置以及一系列內部實現好機器學習算法,MOA 為實時數據流分析提供了一個非常優秀的基准框架,因此 在實時數據流挖掘領域的應用非常廣泛 。其內部實現的機器學習算法包括:分類、回歸、聚類、孤立點檢測、概念漂移檢測和推薦系統等。地址: http://moa.cms.waikato.ac.nz/
  6. ***MALLET :地址: http://mallet.cs.umass.edu/ 主要由來自麻省大學(University of Massachusetts)的Andrew McCallum教授和其學生開發,是一個基於 Java 環境的開源機器學習工具包。主要應用於統計自然語言處理,文檔分類,聚類,主題建模,信息提取等 文本類分析場景 。許多功能強大的工具,包括用於文檔分類的高級工具,用於序列標記的工具,和用於主題建模的工具等。MALLET 還支持各種類型的算法,包括朴素貝葉斯,決策樹和最大熵等。此外,MALLET 還提供了許多例程,包括分詞,刪除停用詞,將文本轉換為向量表示等。
  7. MEKA項目提供了一個面向多標簽學習和評價方法的開源實現。在多標簽分類中,我們要預測每個輸入實例的多個輸出變量。這與“普通”情況下只涉及一個單一目標變量的情形不同。此外,MEKA基於WEKA的機器學習工具包。
  8. Advanced Data mining And Machine learning System(ADAMS)是一種新型的柔性工作流引擎,旨在迅速建立並保持真實世界的復雜知識流,它是基於GPLv3發行的。
  9. Environment for Developing KDD-Applications Supported by Index-Structure(ELKI)是一款基於Java的開源(AGPLv3)數據挖掘軟件。ELKI主要集中於算法研究,重點研究聚類分析中的無監督方法和異常檢測。
  10. Mallet是一個基於Java的面向文本文件的機器學習工具包。Mallet支持分類算法,如最大熵、朴素貝葉斯和決策樹分類。
  11. Encog是一個先進的機器學習框架,集成了支持向量機(SVM)、人工神經網絡、遺傳算法、貝葉斯網絡、隱馬爾可夫模型(HMM)、遺傳編程和遺傳算法。
  12. Encog是一個先進的機器學習框架,集成了支持向量機(SVM)、人工神經網絡、遺傳算法、貝葉斯網絡、隱馬爾可夫模型(HMM)、遺傳編程和遺傳算法。
  13. Mahout是一個內置算法的機器學習框架。Mahout-Samsara幫助人們創建他們自己的數學,並提供了一些現成的算法實現。
  14. Rapid Miner是德國多特蒙特技術大學開發的。它為開發者開發應用程序提供了一個GUI(圖形用戶界面)和Java API。它還提供了一些機器學習算法,用來做數據處理、可視化以及建模。
  15. Apache SAMOA是 一個機器學習(ML)框架,內嵌面向分布式流ML算法的編程抽象,並且允許在沒有直接處理底層分布式流處理引擎(DSPEe,如 Apache Storm、Apache S4和Apache samza)復雜性的情況下,開發新的ML算法。用戶可以開發分布式流ML算法,而且可以 在多個DSPEs上執行。
  16. Neuroph通過提供支持創建、訓練和保存神經網絡的Java網絡庫和GUI工具,簡化了神經網絡開發。
  17. Oryx 2是一個建立在Apache Spark和Apache Kafka的Lambda架構實現,但隨着實時大規模機器學習而逐漸開始專業化。這是一個用於構建應用程序的框架,但也包括打包,以及面向協同過濾、分類、回歸和聚類的端到端的應用程序。
  18. Stanford Classifier是一個機器學習工具,它可以將數據項歸置到一個類別。一個概率分類器,比如這個,它可以對一個數據項給出類分配的概率分布。該軟件是最大熵分類器的一個Java實現。
  19. JSAT是一個快速入門的機器學習庫。該庫是我在業余時間開發的,基於GPL3發行的。庫中的一部分內容可自主學習,例如所有的代碼都是獨立的。JSAT沒有外部依賴,而且是純Java編寫的。
  20. Java Machine Learning Library(Java機器學習庫)是一系列機器學習算法的相關實現。這些算法,無論是源代碼還是文檔,都編寫的很出色。其主要語言是Java。
  21. MLlib (Spark)是Apache Spark的可擴展機器學習庫。雖然是Java,但該庫與平台還支持Java,Scala和Python綁定。此庫是最新的,並且算法很多。
  22. H2O是用於智能應用的機器學習API。它在大數據上對統計學、機器學習和數學進行了規模化。H2O可擴展,開發者可以在核心部分使用簡單的數學知識。
  23. ELKIhttps://elki-project.github.io/ Environment for Developing KDD-Applications Supported by Index-Structures,即 由索引結構支持的 KDD 應用開發環境 ,Environment for Developing KDD-Applications Supported by Index-Structures,即 由索引結構支持的 KDD 應用開發環境
  24. Neo4j :Neo4j是一個世界領先的開源圖形數據庫。 它是由Neo技術使用Java語言完全開發的。圖形數據庫是以圖形結構的形式存儲數據的數據庫。 它以節點,關系和屬性的形式存儲應用程序的數據。 正如RDBMS以表的“行,列”的形式存儲數據,GDBMS以“圖形”的形式存儲數據。https://neo4j.com/ 教程:https://www.w3cschool.cn/neo4j/

3.2 深度學習庫: Deeplearning4j

地址: https://deeplearning4j.org/
Deeplearning4j(Deep Learning For Java)是 Java 和 Scala 環境下的一個開源分布式的深度學習項目,由總部位於美國舊金山的商業智能和企業軟件公司 Skymind 牽頭開發,並得到了騰訊的投資。正如它的命名,Deeplearning4j 的運行需要 Java 虛擬機 JVM 的支持。
去年,JAXenter 社區曾提名 Deeplearning4j 作為 Java 生態系統最具創新的貢獻者之一。
Deeplearning4j 旨在為工作在 Hadoop 框架下的 Java、Scala 和 Clojure 程序員提供一個可以靈活 DIY 的機器學習工具。團隊在官網表示,他們希望通過一些機器學習算法的開發,將商業帶入智能化數據的時代。也正是為了實現這一理想,惠及更多的用戶,因此選擇了移植性更好的 Java 環境來實現這些算法。目前,Deeplearning4j 在模式識別、時間序列檢測和基於語音、文本的情感識別方面應用廣泛,包括谷歌、Facebook和微軟等巨頭公司都是它的用戶。

3.3 大數據處理

1) BID Data Project –能夠運行快速、大規模的機器學習和數據挖掘的模式集合
2) Apache Singa  Apache Singa由新加坡國立大學的團隊開發,是一個靈活可擴展的利用大數據分析的深度學習平台。這個深度學習框架為大量數據的可擴展分布式培訓提供了靈活架構。Singa可擴展以運行各種硬件,主要應用在圖像識別和自然語言處理(NLP)方面。
  Singa目前是一個Apache孵化器項目,提供了簡單的編程模型,可以在一個節點集群上工作。分布式深度學習在訓練過程中使用模型划分和並行化,一般而言,Singa支持傳統的機器學習模型,如邏輯回歸。
  Singa是用Java,C ++和Python編寫的,可以在AWS上或通過Docker嘗試使用。
3)

3.4. Neuroph –面向對象的神經網絡

neuroph是用來開發常用的神經網絡構架的輕量級java框架。該框架提供了一個java庫以及一個GUI工具(稱為easyNeurons),你可以用它來在java項目中創建和訓練自己的神經網絡。
Neuroph包含一個開源的java類庫和少量對應基本神經網絡概念的基類。對於剛開始使用神經網絡,或者想知道它們如何工作的人來說,Neuroph是個非常好的墊腳石。你可以嘗試Neuroph的在線演示,看看它是怎么運行的。

四、數據挖掘和統計分析工具庫

  1. WEKA:WEKA是一個可用於數據挖掘任務的機器學習算法集合。該算法可以直接應用到數據集或從自己的Java代碼調用。 WEKA包含數據預處理,分類,回歸,聚類,關聯規則,和可視化工具。它也非常適用於開發新的機器學習方案。
  2. jmotif:時間序列、分類、數據挖掘開發庫
  3. java-ml:Java機器學習庫,聚類、分類、特征選擇、
  4. flanagan: 數學和統計java開發庫,包含回歸算法,一次二次線性非線性回歸算法,數據平滑算法,傅里葉變換,數值積分,插值法。http://www.ee.ucl.ac.uk/~mflanaga/java/
  5. Mahout:Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一個開源項目,提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。經典算法包括聚類、分類、協同過濾、進化編程等等,並且,在 Mahout 的最近版本中還加入了對 Apache Hadoop 的支持,使這些算法可以更高效的運行在雲計算環境中。
  6. JMulTi:時間序列分析開發庫
  7. jfreechart:【可實現數據統計圖】下載地址:http://download.csdn.net/detail/pzhtpf/4327700
  8. jcommon:【可實現數據統計圖】
  9. gnujaxp:【可實現數據統計圖】
    http://blog.csdn.net/pzhtpf/article/details/7600100

以上第三方工具庫匯總不完整,歸類不一定正確,僅供參考。

原文地址:https://blog.csdn.net/panrenlong/article/details/79246349


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM