Artificial Intelligence for Java: resources

This post is still 'work in progress' it will be updated often in the future. The libraries should be still active and the sources updated in the last 2 years. We did't include commercial and not maintaned resources.


  • djl: 'Intuitive APIs use native Java concepts and abstract away complexity involved with Deep learning'. Deep learning library built by Amazon.
  • Spark: "ML algorithms and utilities"
  • DL4J: "Deeplearning4j lets you compose deep neural nets from various shallow nets, each of which form a so-called layer. This flexibility lets you combine variational autoencoders, sequence-to-sequence autoencoders, convolutional nets or recurrent nets as needed in a distributed, production-grade framework that works with Spark and Hadoop".
  • Weka : "Weka is a collection of machine learning algorithms for data mining tasks. It contains tools for data preparation, classification, regression, clustering, association rules mining, and visualization."
  • MOA (Massive On-line Analysis). "MOA is a framework for data stream mining. It includes tools for evaluation and a collection of machine learning algorithms."
  • Elki: "ELKI is an open source (AGPLv3) data mining software written in Java. The focus of ELKI is research in algorithms, with an emphasis on unsupervised methods in cluster analysis and outlier detection"
  • Java Statistical Analysis Tool: "JSAT is a library for quickly getting started with Machine Learning problems.". List of algorithms.
  • Encog: "Encog supports a variety of advanced algorithms, as well as support classes to normalize and process data. Machine learning algorithms such as Support Vector Machines, Neural Networks, Bayesian Networks, Hidden Markov Models, Genetic Programming and Genetic Algorithms are supported."
  • TweetyProject: "TweetyProject is a collection of various Java libraries that implement approaches to different areas of artificial intelligence. In particular, it provides a general interface layer for doing research and working with different knowledge representation formalisms such as classical logics, conditional logics, probabilistic logics, and argumentation."
  • Tensorflow Java API: "TensorFlow provides a Java API— particularly useful for loading models created with Python and running them within a Java application."
  • Apache SAMOA: "Apache SAMOA is a distributed streaming machine learning (ML) framework that contains a programing abstraction for distributed streaming ML algorithms."

Computer Vision

  • BoofVC: "BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition."


  • Standford CoreNLP: "Stanford CoreNLP provides a set of human language technology tools. It can give the base forms of words, their parts of speech, whether they are names of companies, people, etc., normalize dates, times, and numeric quantities, mark up the structure of sentences in terms of phrases and syntactic dependencies, indicate which noun phrases refer to the same entities, indicate sentiment, extract particular or open-class relations between entity mentions, get the quotes people said, etc. "
  • openNLP: "OpenNLP supports the most common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, parsing, language detection and coreference resolution."
  • GATE: "GATE is an open source software toolkit capable of solving almost any text processing problem".
  • MALLET: "MALLET is a Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text."

Genetic algorithms

  • Jenetics: "Jenetics is designed with a clear separation of the several concepts of the algorithm, e.g. Gene, Chromosome, Genotype, Phenotype, Population and fitness Function. Jenetics allows you to minimize and maximize the given fitness function without tweaking it."
  • ECJ 27: "It was designed to be highly flexible, with nearly all classes (and all of their settings) dynamically determined at runtime by a user-provided parameter file. All structures in the system are arranged to be easily modifiable."

Useful blogs / websites / twitter Blog