SMILE: A Java 25 Machine Learning Framework That Covers More Ground Than Most
Statistical Machine Intelligence & Learning Engine
At a glance
- What is it?
- SMILE is a JVM machine learning framework with a broad algorithm set, DataFrame support, and a new agentic IDE. It demands Java 25, which is both its strength and its adoption hurdle.
- Who is it for?
- Adopt SMILE if you are on a JVM stack, can standardize on Java 25, and need a single library that spans classic statistics, deep learning, NLP, and visualization. Avoid it if you must support Java 8 or 21 in production, or if you prefer the Python ecosystem.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- haifengl/smile6,436 ★ · +21
| Repository | 2026-09-10 | 2026-11-14 |
|---|---|---|
| haifengl/smile | 6.4k | 6.4k |
21 Stars in the last 65 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What SMILE Solves and Who It Serves
The framework has been around long enough to accumulate a large module map. The repository layout separates base utilities from core machine learning, which helps navigate the code. But the sheer scope means no single module can be as deep as a specialized library. For example, the deep learning section mentions LibTorch and EfficientNet-V2, but the details are thin in the README. You would need to read the module guides to judge whether it matches PyTorch or TensorFlow in flexibility.
The Java Version Floor Is a Real Barrier
The version policy is a trade-off. On one hand, staying current lets the project avoid backward-compatibility baggage. On the other, it excludes a large installed base. If you are on Java 21, v4.x is your only option, and that version may not receive the same attention as the main branch. The release history shows active development, with v7.1.0 on 2026-10-20, but that activity is tied to the Java 25 line. Teams that cannot upgrade will find themselves stuck on an older major version.
How the Modules Are Organized
The README's table of contents includes a Quick Start section, and SMILE Studio and SMILE Serve each have their own README for getting started.
Getting It Running: Maven, SBT, and Native Libraries
A critical installation note concerns native libraries. The README has a section titled Native Libraries (BLAS / LAPACK), which implies that SMILE can leverage optimized linear algebra routines. The README says the core engine is pure, self-contained JVM bytecode, with optional plug-and-play native acceleration (OpenBLAS/LAPACK, ONNX Runtime, LibTorch/CUDA) when hardware is available.
The Scope Is Broad, but Depth Varies
This is a legitimate concern for an engineer evaluating the library. If you need a production-grade deep learning framework, you would likely compare SMILE's capabilities against a dedicated tool. The README does not give enough evidence to make that comparison. For classic machine learning, the coverage is more established, with many standard algorithms and validation utilities. The README also lists exact TreeSHAP and model-agnostic KernelSHAP for local feature attributions. But the inconsistency in documentation depth means you may have to inspect the source code to answer basic questions.
SMILE Studio and the Shell: A Different Way to Work
The agentic angle is interesting because it suggests SMILE is trying to compete with Python tools like Jupyter plus an AI assistant. But the target audience is JVM users, which is a smaller pool. The success of this feature depends on the quality of the natural language interface. If it works well, it could be a differentiator. If it is a thin wrapper, it adds little. You would need to try the studio to know.
Alternatives: Where SMILE Fits and Where It Does Not
For a team already using Python, the alternative is scikit-learn plus PyTorch. That ecosystem has a larger community and more examples. SMILE would only make sense if you have a hard requirement to stay on the JVM. The README also mentions SMILE Studio supports Python, which could bridge the gap, but it is not the same as native Python libraries. In short, SMILE is the right choice when you are committed to the JVM and want to avoid multiple dependencies. If you are not committed, the Python ecosystem is likely a safer bet.
Licensing and Maintenance Cost
On maintenance, the project is active. The last push was on 2026-11-02, and releases are frequent: v7.1.0 on 2026-10-20, v7.0.0 on 2026-10-12, and v6.3.0 on 2026-08-18. That cadence suggests ongoing development and bug fixes. But the Java 25 requirement means you must track JDK releases to stay current. Upgrading SMILE may also require upgrading your JVM, which is a larger operational cost. The module structure helps isolate changes, but the core dependency on the latest Java means each major JVM release could force a SMILE upgrade. Plan for that cost if you adopt.
Editorial conclusion
Adopt SMILE if you are on a JVM stack, can standardize on Java 25, and need a single library that spans classic statistics, deep learning, NLP, and visualization. Avoid it if you must support Java 8 or 21 in production, or if you prefer the Python ecosystem. Native BLAS/LAPACK acceleration is optional, since the README describes the core engine as pure JVM bytecode. Also check the license, since the repository reports NOASSERTION, which means you must clarify terms before commercial use. SMILE's breadth is real, but its Java version floor is a hard boundary that will filter out many teams.
Frequently asked questions
Which Java version does SMILE require for its current line?
SMILE v5 and later require Java 25. The v4.x line requires Java 21, and every version before that requires Java 8.
How do I add SMILE to a Maven or Gradle project?
The table of contents lists installation subsections for Maven, SBT (Scala) and Gradle (Kotlin), plus one on native BLAS/LAPACK libraries. The release badge points at Maven Central, where the artifact is com.github.haifengl/smile-core.
Can SMILE Serve answer requests for a model trained outside SMILE?
Yes, through the ONNX Runtime prefix /api/v1/onnx, which takes any model in the ONNX open format. The classic ML prefix /api/v1/smile serves serialized SMILE models (.sml).
Does SMILE expose an OpenAI-compatible chat endpoint?
SMILE Serve exposes the /api/v1/chat prefix with OpenAI-compatible chat completions, tool calling and SSE streaming. The feature table lists LLaMA-3 inference and a tiktoken BPE tokenizer, and the README also names MiniMax M3, Qwen and Llama for native LLM inference.
What still works on a machine without a GPU?
The classical algorithm modules need no GPU. The deep learning row is listed with a LibTorch GPU backend, while the core engine is pure JVM bytecode with optional native acceleration such as LibTorch/CUDA when hardware is available.
Which languages have an API in SMILE?
Java is the primary language, and the project adds idiomatic APIs for Scala and Kotlin. Python appears as one of the languages SMILE Studio works in rather than as a library API.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/haifengl-smile)Star history chart for your README
[](https://hysenlabs.com/projects/haifengl-smile)Was this useful?