From the team

Blog

Releases, updates and thoughts from the Nuts project

2026

Changes

Changes Details

  • 2026-09-06 : CHANGED :: NWebCli renamed to NHttpClient

  • 2026-09-04 : ADDED :: added support for search cross environment handling in NSearch

  • 2026-09-01 : ADDED :: support javadoc generation in the website

  • 2026-09-01 : ADDED :: support for parallel processing (@OussemaBenAmeur)

  • 2026-09-01 : NEW_CONTRIB :: new first time contributor @OussemaBenAmeur

  • 2026-09-01 : FIXED :: now --theme accepts correctly a path to a theme file

  • 2026-09-01 : ADDED :: added DEB Packages support

  • 2026-08-28 : RENAMED :: ExecutionEngine renamed to RuntimeDistribution

  • 2026-08-27 : ADDED :: added oracle,graalvm,corretto,zulu provisioning;

  • 2026-08-24 : REMOVED :: removed NCmdLineRunner,NCmdLineArgProcessor, now only support plain while or matcher in cmdline

  • 2026-08-24 : REMOVED :: removed NCmdline::forEachPeek

  • 2026-08-24 : ADDED :: added @NAppComplete and split run vs complete execution

  • 2026-08-23 : ADDED :: changed NTableModel to support per cell customization

  • 2026-07-25 : ADDED :: added "mem://" support in path, now you can create in memory folders and files!

  • 2026-07-24 : ADDED :: changed NClassLoader to be more coherent alongside with NClasspathBuilder

  • 2026-07-24 : ADDED :: added NClasspathBuilder to help build classpath from both NId and NPath

  • 2026-07-21 : CHANGED :: renamed NExec.addCommand->command

  • 2026-07-21 : CHANGED :: renamed NDigest.source->source

  • 2026-07-21 : CHANGED :: renamed NMsFormatType->NMsgType

  • 2026-07-21 : ADDED :: NMsg.ofCustom(...) to support message template extensions implementing NMsgCustomFormatter

  • 2026-07-21 : ADDED :: NMsg.ofS(...) to support sql templates (both ':param' and '?' styles)

  • 2026-06-14 : ADDED :: added naru syntax coloring

  • 2026-06-14 : ADDED :: added python syntax coloring

  • 2026-06-14 : ADDED :: added javascript syntax coloring

  • 2026-06-14 : ADDED :: added rust syntax coloring

  • 2026-06-14 : ADDED :: added typescript syntax coloring

  • 2026-06-14 : ADDED :: added markdown syntax coloring

  • 2026-06-14 : ADDED :: added yaml syntax coloring

  • 2026-06-14 : ADDED :: added style types: entity, action, annotation and placeholder. very common.

2026

πŸš€ Nuts v0.8.9.0 is officially released!

We are excited to announce the release of Nuts v0.8.9.0! This version is now available across multiple channels to suit your workflow.


πŸ“¦ 1. Shell Installer

curl -s https://thevpc.net/nuts/install-stable.sh | bash

πŸ“¦ 2. Maven Central

You can now pull the latest version directly into your Java projects:

<dependency>
    <groupId>net.thevpc.nuts</groupId>
    <artifactId>nuts</artifactId>
    <version>0.8.9</version>
</dependency>
<dependency>
    <groupId>net.thevpc.nuts</groupId>
    <artifactId>nuts-impl</artifactId>
    <version>0.8.9.0</version>
</dependency>

πŸ’» 3. GitHub Release

The source code and release assets are available on our GitHub Releases page: πŸ‘‰ View GitHub Release

πŸš€ 4. Portable, Native & Custom Installers

Download the standalone applications and installers for your operating system.

🟒 Universal (Java Required)

Full App

nuts-app-full-0.8.9.0.jarInstaller

nuts-installer-0.8.9.0.jar

🐧 Linux (x64)

RPM Packages

Full App

nuts-app-full-linux64-rpm-0.8.9.0.rpmInstaller

nuts-installer-linux64-rpm-0.8.9.0.rpm

ZIP Archives (Bin / No Java)

Full App

nuts-app-full-linux64-bin-0.8.9.0.zipInstaller

nuts-installer-linux64-bin-0.8.9.0.zip

ZIP Archives (Bundled with Java)

Full App

nuts-app-full-linux64-with-java-0.8.9.0.zip

Installer nuts-installer-linux64-with-java-0.8.9.0.zip

πŸͺŸ Windows (x64)

ZIP Archives (Bundled with Java)

Full App

nuts-app-full-windows64-with-java-0.8.9.0.zipInstaller

nuts-installer-windows64-with-java-0.8.9.0.zip

🍎 macOS (x64)

ZIP Archives

Full App

nuts-app-full-mac64-0.8.9.0.zipInstaller

nuts-installer-mac64-0.8.9.0.zip

πŸ” SHA256 Checksums

  • Universal

nuts-app-full-0.8.9.0.jar.sha256 nuts-installer-0.8.9.0.jar.sha256

  • Linux
  • nuts-app-full-linux64-bin-0.8.9.0.zip.sha256 nuts-app-full-linux64-rpm-0.8.9.0.rpm.sha256 nuts-app-full-linux64-with-java-0.8.9.0.zip.sha256 nuts-installer-linux64-bin-0.8.9.0.zip.sha256 nuts-installer-linux64-rpm-0.8.9.0.rpm.sha256 nuts-installer-linux64-with-java-0.8.9.0.zip.sha256

  • Windows
  • nuts-app-full-windows64-with-java-0.8.9.0.zip.sha256 nuts-installer-windows64-with-java-0.8.9.0.zip.sha256

  • macOS
  • nuts-app-full-mac64-0.8.9.0.zip.sha256 nuts-installer-mac64-0.8.9.0.zip.sha256


    2026

    πŸš€ nuts v0.8.9.0 RC1: The Foundation of the 1.0 Era

    Today marks the release of v0.8.9.0 RC1. This version represents a major shiftβ€”it is the final "pre-1.0" major version, solidifying nuts as both a robust package manager and a powerful application framework.

    I’ll be dogfooding this release for a few more days to ensure total stability before the final rollout. Here is what’s new in this milestone: 🌟 Key Highlights

    • The Bridge to 1.0: v0.8.9 serves as our most stable and polished "odd-number" release, finalizing the core architecture for the future.
    • Polyglot Repositories: First-class support for non-Java-only repositories, including seamless bundling for NetBeans and PostgreSQL.
    • Lightning Fast Native Images: You can now install nuts via RPM or run it as a native image for near-instant execution.

    πŸ›  Feature Breakdown

    πŸ” Hardened Security

    We’ve overhauled the security layer to meet modern standards:

    • Modern Cryptography: Upgraded from DES/CBC to AES/GCM for all cipher implementations.
    • Vault & Secret Management: Introduced NSecureToken for external Vault integration and NSecureString for memory-safe, destroyable secrets.

    πŸ“„ TSON v2.0 (Reference Implementation)

    Nuts is now the definitive home for TSON. The parser has been rebuilt for the "Fail-Never" philosophy:

    • High-Fidelity Parsing: A round-trip parser that preserves comments and whitespace using a Concrete Syntax Tree (CST).
    • Resilience: A "Never-fail" architecture where errors are stored as diagnostic metadata within the CST rather than crashing the process.
    • Advanced Tooling: New navigation and transformation concepts (NElementNavigator, NElementTransform) and support for user metadata on any element.

    ⚑ Performance & Core Optimization

    • Parallelization: Multi-threaded dependency resolution for faster builds.
    • Optimized Connectivity: SSH connection pooling and support for binary SSH (ssh://...?use=bin).
    • Execution Speed: A faster Bean Factory and a new execution cache that remembers command classpaths, eliminating redundant rebuilds.
    • I/O Efficiency: NPath::getInfo now returns comprehensive file metadata in a single call to minimize system overhead.

    🌐 An Expanded Ecosystem

    Beyond the JVM, nuts is becoming a universal tool for your environment:

    • Portable Runtimes: Effortlessly manage runtimes (e.g., nuts settings add java --download -version=25).
    • Infrastructure & IDEs: Native support for Tomcat, PostgreSQL, and NetBeans.
    • Cloud Native: Improved detection for Docker and Kubernetes to enable zero-config deployments.
    • IDE Support: Syntax highlighting is now available across the board, from IntelliJ and VS Code to Vim, Kate, and Notepad++.
    • Build Tools: A new Gradle Dependency Solver bridges the gap between nuts and Gradle projects.

    πŸ“ What’s Next?

    The full, exhaustive list of features and bug fixes will be revealed in the final Release Notes. For now, grab the RC1, try the native image, and let us know your feedback.

    Happy Hacking!


    2026

    Changes

    ⚠️ Stability & Refactoring

    Version 0.8.9 is a major milestone in our development cycle. As part of our commitment to quality, we treat our odd-numbered releases (5, 7, 9) as our most stable and polished versions.

    Better security support

    • New more secure implementation of cipher using AES/GCM instead of older and broken DES/CBC
    • Enhanced types support with new order and unordered lists, Bloc Strings, grouped Multiline comments, etc.
    • added NSecureToken : a better way to support external Vaults
    • added NSecureString : a better way to support destroyable secrets

    TSON v2.0

    • Nuts becomes the reference implementation of TSON
    • Enhanced types support with new expressions, order and unordered lists, bloc Strings, grouped multiline comments, fragments, etc.
    • Round-trip parser that preserves not only comments but also spaces in a CST (Concrete Syntax Tree)
    • Never fail parser/writer that stores errors as diagnostic information in the CST
    • Added User Metadata support (enhance any element with user data)
    • Added better navigation concepts : NElementPath, NElementNavigator
    • Added better AST/CST transformation concepts : NElementTransform, NElementFormatter

    Enhanced performance

    • Parallel dependency resolution
    • Faster ssh connections with pooling
    • Faster Bean Factory
    • Added NPath::getInfo, listInfos that return a full NPathInfo for performance
    • Added cache to Exec to store command classpath, no need to rebuild classpath

    Expanded Ecosystem

    Beyond pure Java, Nuts now supports portable installations for:

    • Runtimes: JDK/JRE (nuts settings add java --download -version=25 --jdk)

    • Servers: Tomcat, PostgreSQL

    • IDE: Netbeans

    • Cloud & Containers: Improved "Nuts-native" detection for Docker and Kubernetes environments to simplify configuration-free deployments.

    • Tooling Support: We've added native syntax highlighting support for TSON and NTF. You can now enjoy a first-class editing experience in: IntelliJ IDEA, VS Code, and Notepad++ , Vim / Vi, Kate, GEdit, and jEdit

    • Gradle Integration: A new dedicated Gradle Dependency Solver to bridge the gap between Nuts and the Gradle ecosystem.

    Integration

    • Support customizing common editors syntax highlighting (including but not limited to : vim, intellij, kate, vscode, gedit, jEdit, notepad++)
    • Normalized environment resolution across local, ssh etc
    • Better support for ssh for remote Windows and linux/posix machines
    • Added support for binary ssh (ssh://myuser@myserver?use=bin vs ssh://myuser@myserver?use=jcsh vs ssh://myuser@myserver?use=portable)
    • Added NExec::get/setRawCommand to enable complex commands
    • NPathOption now can include access credentials

    Fixes

    • Fixed Progress display

    Changes Details

    • 2025-06-11 : PUBLISH :: version 0.8.9 published

    • 2025-06-09 : ADDED :: fixed support for installing postgres

    • 2025-05-07 : ADDED :: fixed support for mvn netbeans

    • 2025-04-20 : ADDED :: added nuts-compression to support tar/tgz/txz formats

    • 2025-03-10 : REFACTOR:: refactor getters/setters to be more consistent with the rest of the API
    • 2025-02-13 : ADDED :: better support of path store types

    • 2025-02-11 : ADDED :: added better support for expression parsing in NExpr with customizable defaults

    • 2025-01-11 : ADDED :: added NFragmentElement : a better way to support documents roots and fluid embeddings

    • 2025-01-07 : ADDED :: added NSecureToken : a better way to support external Vaults

    • 2025-02-06 : ADDED :: added NSecureString : a better way to support destroyable secrets

    • 2025-01-16 : ADDED :: added user documentation for NTF (documentation/specifications/ntf.md)

    • 2025-01-16 : ADDED :: implemented TSON v2.0, reimplemented from scratch TSON parser and LEXER, dropped javacc support

    • 2025-01-16 : ADDED :: implemented TSON v2.0, added user documentation for TSON (documentation/specifications/tson.md)

    • 2025-01-16 : CHANGED :: implemented TSON v2.0, nuts becomes the reference implementation of TSON, the TSON github repo sources are obsolete

    • 2025-01-16 : ADDED :: implemented TSON v2.0, removed support for regex (could simply use strings). removed because in introduces conflicts with expressions

    • 2025-01-16 : REMOVED :: implemented TSON v2.0, removed support for regex (could simply use strings). removed because in introduces conflicts with expressions

    • 2025-01-16 : REMOVED :: implemented TSON v2.0, removed support for Matrices (now matrices are simple arrays of arrays)

    • 2025-01-16 : ADDED :: implemented TSON v2.0, added valid support of unsigned numbers (with u format aka 10_u8)

    • 2025-01-16 : ADDED :: implemented TSON v2.0, added valid support of signed numbers (with s format aka 10_s8)

    • 2025-01-16 : ADDED :: implemented TSON v2.0, added valid support of special numbers like 0NaN

    • 2025-01-16 : ADDED :: implemented TSON v2.0, added valid support of ordered list (starts with hash '#')

    • 2025-01-16 : ADDED :: implemented TSON v2.0, added valid support of unordered list (starts with dot '.')

    • 2025-01-16 : ADDED :: implemented TSON v2.0, added valid support of expressions

    • 2025-01-01 : ADDED :: added better support of copy in NReflectMapper

    • 2025-12-27 : TODO :: Added support to download JDK/JRE from nuts nuts settings add java --download -version=25 --jdk

    • 2025-12-27 : TODO :: Fixed Progress display (now backed to terminal and not PrintStream)

    • 2025-12-27 : TODO :: Fixed Progress displaying invalid percentile

    • 2025-12-26 : TODO :: Added cache to Exec to store command classpath, no need to rebuild classpath

    • 2025-12-26 : FIXED :: Fixed Gradle Dependency Solver

    • 2025-12-26 : FIXED :: Better perf : added parallel dependency resolution

    • 2025-12-26 : ADDED :: Better perf : added parallel dependency resolution

    • 2025-12-25 : ADDED :: Better perf : implemented faster bean factory resolution : no more create instances for scoring

    • 2025-12-20 : ADDED :: added NEnv and merge it with older NExecTargetInfo (that is now removed)

    • 2025-12-20 : CHANGED :: better support for kubernetes (now auto detected)

    • 2025-12-20 : CHANGED :: better support for ssh (now auto detected)

    • 2025-12-20 : CHANGED :: better support for docker (now auto detected)

    • 2025-12-19 : CHANGED :: renamed NExecCmd to NExec (simpler are more coherent with the rest), same for other Cmd - 2025-12-12 : ADDED :: added NSysEditorSupportCmd to support customizing common editor syntax highlighting (including but not limited to : vim, intellij, kate, vscode, gedit, jEdit, notepad++)

    • 2025-12-07 : FIXED :: faster ssh connexions with pooling

    • 2025-12-01 : CHANGED :: renamed NStableValue to NOnceValue

    • 2025-11-30 : ADDED :: added NPath::getInfo, listInfos that return a full NPathInfo for performance

    • 2025-11-30 : FIXED :: Better support for ssh for remote Windows machines

    • 2025-11-30 : FIXED :: Better support for ssh for remote linux/posix machines

    • 2025-11-30 : ADDED :: Added support for binary ssh (ssh://myuser@myserver?use=bin vs ssh://myuser@myserver?use=jcsh vs ssh://myuser@myserver?use=portable)

    • 2025-11-30 : ADDED :: added NPath::getTargetType, NPath::getTargetPath to describe the pointed path for a link

    • 2025-11-29 : CHANGED :: changed NPath::permissions -> NPath::getPermissions ; NPath::lastAccess -> NPath::getLastAccessInstant ; NPath::lastAccess -> NPath::getLastAccessInstant; NPath::getGroup -> NPath::getGroup; NPath::type -> NPath::getType ; NPath::creationTime -> NPath::getCreationInstant

    • 2025-11-28 : CHANGED :: changed NPathSPI::contentLength -> NPathSPI::getContentLength; NPathSPI::type -> NPathSPI::getType ; NPathSPI::contentLength -> NPathSPI::getContentLength

    • 2025-11-27 : ADDED :: added NMsgIntent::DISPOSE

    • 2025-11-26 : ADDED :: added NExecCmd::get/setRawCommand to enable complex commands

    • 2025-11-25 : ADDED :: added NConnectionString::normalize

    • 2025-11-24 : ADDED :: added NConnectionStringBuilder::setNormalized, getQueryParam, getQueryParams

    • 2025-11-23 : CHANGED :: changed NExecTargetCommandContext.getTarget() -> NExecTargetCommandContext.getConnectionString()

    • 2025-11-22 : CHANGED :: changed NWorkspace::getProperty(String) return type from NLiteral to Object

    • 2025-11-21 : ADDED :: added NWorkspace::getProperty(Class), getOrComputeProperty(...)

    • 2025-11-20 : CHANGED :: renamed NConnexionString to NConnectionString

    • 2025-11-19 : Today we started new nuts 0.8.9 version

    2025

    • 2025-11-19 : Today we started new nuts 0.8.9 version

    2025

    nuts v0.8.8 is out.

    View Official releases here : Starred releases are most stable ones.

    nuts 0.8.8.0 (STABLE VERSION)

    • 2025-11-19 nuts 0.8.8.0 released download nuts-0.8.8.jar

    • 2025-10-17 : FIXED fixed links (from thevpc.github.com to thevpc.github.io)
    • 2025-10-17 : ADDED added gogole analytics to website
    • 2025-10-17 : ADDED added compatibility matrix report in documentation
    • 2025-10-17 : FIXED fixed NMemorySize issue (throws exception on creation)
    • 2025-10-16 : FIXED removed some old source comments
    • 2025-10-15 : ADDED add more javadoc
    • 2025-10-14 : FIXED removed trailing System.out calls
    • 2025-10-13 : FIXED fixed isLong calls
    • 2025-10-13 : FIXED fixed isXYZ impls in NArg
    • 2025-10-13 : CHANGED added "--sandbox --yes" by default to spring apps
    • 2025-10-08 : ADDED NBulkheadCall to handle calls limited by concurrent count
    • 2025-10-08 : REMOVED getBeanContainer() && withBeanContainer(NBeanContainer container) in concurrent classes
    • 2025-10-08 : ADDED NDuration.parse(String) to parse user durations
    • 2025-11-07 : Today we started new nuts 0.8.8 version

    2025

    • 2025-10-17 : FIXED fixed links (from thevpc.github.com to thevpc.github.io)
    • 2025-10-17 : ADDED added gogole analytics to website
    • 2025-10-17 : ADDED added compatibility matrix report in documentation
    • 2025-10-17 : FIXED fixed NMemorySize issue (throws exception on creation)
    • 2025-10-16 : FIXED removed some old source comments
    • 2025-10-15 : ADDED add more javadoc
    • 2025-10-14 : FIXED removed trailing System.out calls
    • 2025-10-13 : FIXED fixed isLong calls
    • 2025-10-13 : FIXED fixed isXYZ impls in NArg
    • 2025-10-13 : CHANGED added "--sandbox --yes" by default to spring apps
    • 2025-10-08 : ADDED NBulkheadCall to handle calls limited by concurrent count
    • 2025-10-08 : REMOVED getBeanContainer() && withBeanContainer(NBeanContainer container) in concurrent classes
    • 2025-10-08 : ADDED NDuration.parse(String) to parse user durations
    • 2025-11-07 : Today we started new nuts 0.8.8 version

    2025

    nuts v0.8.7 is out.

    View Official releases here : Starred releases are most stable ones.

    nuts 0.8.7.0 (STABLE VERSION)

    • 2025-11-07 nuts 0.8.7.0 released download nuts-0.8.7.jar

    • FIXED Fixed NDuration issue
    • CHANGED Now prefer NDuration over Duration in all API
    • CHANGED Rewritten install|require workflow to be faster and more robust
    • FIXED Fixed issue with plain maven repos
    • CHANGED Less boilerplate in progress (do not show url, too long)
    • CHANGED NElement destructible now can have multiple filters
    • CHANGED Removed dependency on awt, and replace all refs with NColor (renamed from NNamedColor)
    • ADDED Revamped documentation
    • CHANGED Global refactoring to adjust class packages
    • ADDED NScoredCallable a clean way to implement score based call strategy (renamed from NSupport)
    • ADDED NSagaCall to support Saga DesignPattern implementation with loops, and conditions enabled
    • ADDED NCircuitBreakerCall to support CircuitBreaker DesignPattern
    • ADDED NRetryCall to support RetryCall DesignPattern (along with NStableValue, NCachedValue, NRateLimitValue and NLock (for DB and File Locking))

    2025

    • 2025-11-07 : DELIVERED new version 0.8.7 stable
    • 2025-10-29 : FIXED Fixed NDuration issue
    • 2025-10-25 : CHANGED Now prefer NDuration over Duration in all API
    • 2025-10-25 : CHANGED Rewritten install|require workflow to be faster and more robust
    • 2025-10-24 : FIXED Fixed issue with plain maven repos
    • 2025-10-22 : CHANGED Less boilerplate in progress (do not show url, too long)
    • 2025-10-20 : CHANGED NElement destructible now can have multiple filters
    • 2025-10-19 : CHANGED Removed dependency on awt, and replace all refs with NColor (renamed from NNamedColor)
    • 2025-10-14 : ADDED Revamped documentation
    • 2025-10-10 : CHANGED Global refactoring to adjust class packages
    • 2025-10-07 : ADDED NScoredCallable a clean way to implement score based call strategy (renamed from NSupport)
    • 2025-10-02 : ADDED NSagaCall to support Saga DesignPattern implementation with loops, and conditions enabled
    • 2025-10-02 : ADDED NCircuitBreakerCall to support CircuitBreaker DesignPattern
    • 2025-10-02 : ADDED NRetryCall to support RetryCall DesignPattern (along with NStableValue, NCachedValue, NRateLimitValue and NLock (for DB and File Locking))
    • 2025-10-01 : Today we started new nuts 0.8.7 version

    2025

    • 2025-10-01 : Today we started new nuts 0.8.7 version
    • Nuts v0.8.7 is focusing on enterprise usability. It adds support for Resiliency tools

    2025

    • View Official releases here :

    • Starred releases are the most stable ones.

    nuts 0.8.7.0 (DEVELOPMENT VERSION)

    • <DATE_TO_DO> nuts 0.8.7.0 released download nuts-0.8.6.jar

    • 2025-09-14 added NCachedValue/NStableValue to handle stable and cached values (will be promoted to java's StableValue)
    • 2025-09-08 added NScopedValue/NScopedStack to handle scoped values (based on ThreadLocal but will be promoted to java's ScopedValues)
    • 2025-09-05 Added better handling for Text Tables
    • 2025-09-05 Added better handling for Text Trees
    • 2025-09-02 Added handling for TextArt (Banners using figlets and more)
    • 2025-08-30 added Scoped Logging
    • 2025-08-27 rewritten Logging API to support backends (JUL and SLF4J)
    • 2025-07-28 enhance NComplex operations and mark as comparable
    • 2025-07-28 enhance NElement operations
    • 2025-07-28 NMsg.ofV now retains variable layout
    • 2025-07-27 introduce NElementTransform
    • 2025-07-27 introduce NElement::snippet
    • 2025-07-26 Enhance NOperator operations
    • 2025-07-26 introduce NOperatorGroup
    • 2025-07-10 added NPath::resolveSiblingWithExtension, NPathNameParts::toNameWithExtension
    • 2025-07-06 NArg now has getCmdLine() that returns the CmdLine when processed by NCmdLine. It returns null, if not.
    • 2025-07-01 added NColor ANSI Color constants and mappings
    • 2025-07-01 support for color names in ntf in tge form of ##:red:something## and something

    • 2025-06-25 added Nuts.require() to help creating an in-memory workspace if none is provided
    • 2025-06-25 from now NMsg.ofC/ofV/ofJ support ntf (instead of plain)
    • 2025-06-25 Added NIn a general purpose Input Utility (like NOut/NErr/NTrace)
    • 2025-06-24 Added --reset-options
    • 2025-06-24 Added Nuts.require()
    • 2025-06-24 Implemented N?Complex parsing
    • 2025-06-24 Added intValue/longValue... in NArg
    • 2025-06-24 STARTED

    2025

    • 2025-06-24 : Today we started new nuts 0.8.6 version

    2025

    • View Official releases here :

    • Starred releases are most stable ones.

    nuts 0.8.5.0 (DEPLOYED on thevpc)

    • 2025-01-03 nuts 0.8.5.0 released download nuts-0.8.5.jar

    • ADDED: added NSession::isLogTermLevel, NSession::isVerboseTerm and equivalent for file log as well
    • FIXED: fixed ANSI support for resetLine in Swing Terminal Panel
    • ADDED: boot option (--boot-repository) to help considering this repo only to create the workspace (at create time)
    • ADDED: NRepository::isTemporary
    • ADDED: NPath::writeObject|NPath::writeMsg|NPath::writeText to handle efficient file writing (and or appending)
    • ADDED: better support in NRef for primitive type ( NIntRef has an inc method for instance)
    • ADDED: better added support for --@filepath format in commandline to embed files ars arguments
    • ADDED: better support of windows in nserver
    • ADDED: added support for ps and kill on windows, linux and macos
    • ADDED: added support of dependency resolution regardless of current OS environment (needed for bundles creation)
    • ADDED: added foundations for I18n
    • ADDED: added new runtime repository that supports (for now) netbeans and tomcat
    • ADDED: added simple Levenstein implementation to detect typos of boot commandline arguments and provide meaningful suggestions
    • ADDED: added rememberMe key in NAsk to help remembering user's input to avoid asking the same questions multiple times in same session.
    • ADDED: added simple templating (NTemplate) in NExpr to help manage text templating with simple expressions
    • ADDED: added new tool ndoc and nsite-lib (the related library) to generate statically html websites...

    • FIXED: enhanced NExprs toolkit to support complex expressions, and is now default for ndoc
    • DEPRECATED: deprecated for removal nclown (was really never used)
    • DEPRECATED: deprecated for removal old docusaurus website and replace with one new based on ndoc (a tool by nuts!!)
    • REMOVED: removed NFetch::isDependencies, NFetch::isEffective, NSearch::isDependencies, NSearch::isEffective (now information is loaded in lazy mode)
    • CHANGED: When generating latest jar, it will support natively thevpc.net
    • ADDED: added option --preview-repo | -U to help simplifying latest mode installation.
    • CHANGED: nuts-app now depends only on nuts-boot
    • CHANGED: extracted nuts boot that does only load runtime all within its API. This will make simpler api upgrades
    • CHANGED: nuts is exploded into nuts-boot (minimal bootstrap app), nuts (api library), nuts-lib (common library), two applications : nuts-app (minimal) and nuts-app-full (including runtime)
    • WARNING: The OSS License has changed from APACHE2 to LGPL3
    • REMOVED: cleanup and removal of javax.security (and all SecurityManager staff) as It's marked for removal for JDK 24
    • CHANGED: simplified NPathSPI interface to help simpler implementation of, let's say, in-memory files for instance
    • FIXED: fixed NStringBuilder::lines()
    • CHANGED: enhanced and simplified NProgressMonitor API
    • ADDED: added support for TSON (in progress)
    • CHANGED: introduced NAppRunOptions to help customize application behaviour when running NApplication (exit on termination, throw error when found, handle error and only show a short message,etc)
    • ADDED: added NPath::ensureEmptyDirectory, NPath::ensureEmptyFile to help delete file/folder content is a clean manner
    • ADDED: Now you can customize NOptional Message with NOptional::withMessage
    • FIXED: fixed several issues related to utility methods that generate NException whereas the workspace is not yet created
    • CHANGED: for now on, nuts jar will include information about if it supports automatically latest features. You still can disable them using repo filters.
    • CHANGED: refactored nuts to separate nuts-boot, nuts-api (nuts), nus-lib and nuts-runtime
    • 2024-09-06 started new version


    2024

    nuts v0.8.5 is starting development phase. Many promising features to work on

    • cleaner API
    • library separated from app!
    • and much, much more...

    2024

    nuts v0.8.4 is out. It's been a while. What's new? lots of things. but not only :

    • cleaner API
    • native image support
    • faster startup/warmup
    • better isolation
    • better desktop environment support
    • better service support
    • and much, much more...

    View Official releases here : Starred releases are most stable ones.

    nuts 0.8.4.0 (DEVELOPMENT VERSION)

    • 2024-04-25 nuts 0.8.4.0 released download nuts-0.8.6.jar

    • WARNING: The OSS License has changed from APACHE2 to LGPL3
    • WARNING : api API has evolved with incompatibilities with previous versions

    • CHANGED: renamed nlib-ssh to next-ssh et is promoted as extension
    • FIXED: Fixed maven url parsing on Windows platforms that prevented nsh from being installed
    • CHANGED: Prefix is now 'N' instead of 'Nuts'
    • ADDED: Add native installers for windows, linux and macOS
    • ADDED: Add links to pdf docs in website and offline documentation
    • ADDED: Add new nuts LOGO
    • ADDED: Add NOptional a feature riche replacement of java's Optional
    • ADDED: Add NEnvCondition/NEnvConditionBuilder::setProperties/getProperties
    • ADDED: Add NDescriptor/NDescriptorBuilder::setLicenses
    • ADDED: Add NDescriptor/NDescriptorBuilder::setDevelopers
    • ADDED: Add NConstants.IdProperties.DESKTOP_ENVIRONMENT -> NConstants.IdProperties.PROPERTIES
    • ADDED: Add NPath::getLongBaseName // longest file name before last '.'
    • ADDED: Add NMessageFormattable
    • ADDED: Add NDescribable now takes a Session instead of NElements
    • ADDED: Add cmdline arguments : --isolation,--confined, --sandbox
    • ADDED: promote cmdline arguments : --init-platforms,--init-launchers,--init-scripts, --init-java
    • ADDED: promote cmdline arguments : --desktop-launcher,--menu-launcher,--user-launcher
    • ADDED: Add 30+ unit tests
    • ADDED: NSession::isProgress
    • ADDED: NCommandline now extends NBlankable
    • ADDED: Added/Exposed Bean Reflection API : NReflectRepository,NReflectType,NReflectProperty
    • ADDED: Added NChronometer, NDuration
    • ADDED: Added Var Style (dollar based placeholder) in NMessage
    • ADDED: added NProgressMonitor and monitoring api
    • ADDED: NMemorySize and memory size api
    • ADDED: --progress=log now prints progress to log instead of stderr
    • CHANGED: Enum.parseLenient replaced by NOptional
    • CHANGED: Rename NConstants.IdProperties.DESKTOP_ENVIRONMENT -> NConstants.IdProperties.DESKTOP
    • CHANGED: Now NWorkspaceOptionsBuilder extends NWorkspaceOptions
    • CHANGED: Rename NRepositoryDB::getRepositoryNameByURL -> NRepositoryDB::getRepositoryNameByLocation
    • CHANGED: Rename NRepositoryDB::getRepositoryURLByName -> NRepositoryDB::getRepositoryLocationByName
    • CHANGED: Change type to long in NExecCmd::getSleepMillis()/setSleepMillis(int sleepMillis);
    • CHANGED: complete rewrite of NTF parser
    • CHANGED: classes refactored to be repackaged in inner packages
    • REMOVED: Remove session dependency from NVersion,NId and NDescriptor
    • REMOVED: Remove NBootOptions
    • REMOVED: removed CoreNumberUtils
    • REMOVED: NMessageFormatted

    2022

    We are thrilled to announce v0.8.3 release of #nuts, the open source #java package manager intended to be #devops friendly. Look at this location (at github repo) for a small intro

    View Official releases here : Starred releases are most stable ones.

    nuts 0.8.3.1 (PUBLISHED VERSION)

    • 2022-02-01 nuts 0.8.3.1 released nuts-runtime-0.8.3.1.jar

    • UPDATED : move support to repositories "nuts-public" and "nuts-preview"
    • FIXED : Updated README
    • FIXED : runtime Fixed problem with dependency resolution whit maven's "import" scope

    • ROLLBACK : Rolled back test on maven-local
    • FIXED : Fixed nuts api without changing the version and without breaking the API, changes will be promoted to next version later
    • UPDATED : Updated NEXT API CHANGES
    • UPDATED : Updated .gitignore
    • FIXED : Fixed Help files
    • FIXED : Changed $ by $@- FIXED : Fixed NAF support in ncode

    • UPDATED : Updated TEST
    • FIXED : Fixed display of URL paths
    • PERF : Optimize Maven Dependency Resolver
    • FIXED : Fix reinstall so that it calls uninstaller component
    • FIXED : Fix recommendation connector API
    • FIXED : Fix Class Name resolution when using CGLIB
    • FIXED : Call clearLine before Progress
    • FIXED : Call resetLine before Log

    nuts 0.8.3.0 (PUBLISHED VERSION)

    • 2021-01-05 nuts 0.8.3.0 (*) released download nuts-0.8.3.jar

    • WARNING : api API has evolved with incompatibilities with previous versions

    • ADDED : runtime now search --dry displays the search query plan

    • ADDED : api added command "settings install-log" to display installation logs

    • ADDED : api added NutsExpr to help parsing simple expressions (used or will be used in almost all commands)

    • CHANGED : api Simplified API

    • ADDED : api added NutsDescriptorFlag to match multiple descriptor info such as app, executable etc.

    • ADDED : api added NutsIOCopyAction.setSource(byte[]) and NutsIOHashAction.setSource(byte[])

    • ADDED : api removed NutsId.compatFilter and NutsVersion.compatFilter and replaced by compatNewer/compatOlder

    • ADDED : api replaced string messages with NutsMessage in NutsLogger

    • ADDED : api removed 'NutsInput' and 'NutsOutput'

    • ADDED : api removed 'NutsCommandlineFamily' and replaced by 'NutsShellFamily'

    • ADDED : api added 'NutsBootTerminal' to help nuts bootstrap using custom stdin/out end err

    • CHANGED : api added 'NutsHomeLocation' to replace compound key NutsOSFamily and NutsStoreLocation

    • ADDED : api added 'NutsPath.isDirectory' and 'NutsPath.isRegularFile'

    • CHANGED : api removed commandline options '-C' and '--no-color', you can use '--!color' instead

    • CHANGED : api removed commandline options '--no-switch' and '--no-progress', you can use '--!switch' and '--!progress' instead

    • CHANGED : api NutsResultList renamed to NutsStream and revamped with handy stream features and added ws.util.streamOf(...)

    • CHANGED : api ws.io.expandPath replaced by NutsPath.builder.setExpanded(true)

    • REMOVED : api removed deprecated ClassifierMapping

    • REMOVED : api removed NutsTokenFilter (little to no interest)

    • REMOVED : api removed deprecated feature inheritedLog

    • ADDED : api NutsVal, a simple wrapper for strings and objects with helpful converters used in args, env, options and properties.

    • CHANGED : api changed descriptor to add maven profiles support, mainly added platform for dependency and added os/platform etc to property

    • ADDED : api added NutsShellFamily to support bash, csh, and other shell families

    • ADDED : pom add Manifest Entry 'Automatic-Module-Name' in all projects to support j9+ module technology

    • FIXED : impl NutsFormat now creates any missing parent folder when calling print(Path/File) or println(Path/File)


    2021

    View Official releases here : Starred releases are most stable ones.

    nuts 0.8.2.0 (PUBLISHED VERSION)

    • 2021-09-04 nuts 0.8.2.0 (*) released download nuts-0.8.2.jar

    • WARNING: API has evolved with multiple incompatibilities with previous versions
    • FIXED: Fixed problem that requires reinstalling nuts each time we have a new version
    • FIXED: Fixed some Documentation issues (still fixing)

    2021

    View Official releases here : Starred releases are most stable ones.

    nuts 0.8.1.0 (PUBLISHED VERSION)

    • 2021-08-24 nuts 0.8.1.0 (*) released download nuts-0.8.1.jar

    • WARNING: API has evolved with multiple incompatibilities with previous versions
    • ADDED: api added static methods of() in interfaces to simplify instantiation

    • ADDED: api parseLenient to all NutsEnum classes

    • CHANGED: nadmin removed nadmin and merged into runtime (tight coupling!!)

    • REMOVED: api removed session.formatObject() as the session is now propagated silently

    • CHANGED: api removed NutsApplicationLifeCycle and replaced with NutsApplication (an interface instead of a class)

    • ADDED : api added support for parsing pom.xml (MAVEN) along with .nuts (nuts descriptors)- ADDED : api added io killProcess support

    • CHANGED: api added path API, implemented via nlib-ssh to add ssh support for paths

    • CHANGED: all remove dependencies, runtime has no dependencies, and others have the bare minimum

    • CHANGED: api session is from now on mandatory to perform any operation. A simple way to make it simple to use is to get a "session aware" workspace with session.getWorkspace()

    • ADDED : api added support for Yaml with minimal implementation

    • ADDED : api element now supports complex keys in Map Entries (Objects)

    • ADDED : api cmdline added support for History and implemented in JLine extension

    • ADDED : api cmdline added support for readline syntax coloring (using jline)

    • ADDED : api cmdline added --locale option to support multi languages. The option is reflected to Session as well

    • ADDED : api cmdline added ---key=value options to support extra properties

    • ADDED : api cmdline added -S short option, equivalent to --standalone

    • ADDED : api cmdline added NutsFormattedMessage to support formatted messages in a uniform manner (C-style, positional)

    • CHANGED: api cmdline both list and tree dependencies are now accessible as NutsDependencies

    • ADDED : runtime added support to community maven repositories : jcenter, jboss, spring, clojars, atlassian, atlassian-snapshot, google, oracle to use the repository you can add it as a permanent repository or temporary. here are some examples:

      • nuts nadmin add repository jcenter // add permanently the repository
      • nuts -r jcenter my-command // use temporarily the repository top run my-command
    • FIXED : runtime extension support (for JLine)

    • ADDED : runtime added minimal implementation for YAM

    • ADDED : runtime added fast implementation for JSON and removed gson dependency

    • CHANGED: runtime revamped Nuts Text Format to support simplified syntax but more verbose styles. Now supports #), ##), ###) and so on as Title Nodes. It supports as well the common markdown 'code' format with anti-quotes such as code goes here...

    Other supported examples are: some command...

    error message...

    someKeyword

    • CHANGED: runtime help files now have extensions ".ntf" (for nuts text format) instead of ".help"

    • ADDED : njob added --help sub-command

    • FIXED : nsh fixed multiple inconsistencies and implemented a brand new parser

    • REMOVED: docusaurus-to-ascidoctor tool fully removed as replaced by a more mature ndocusaurus

    • REMOVED: ndi, removed project, merged into nadmin

    • REMOVED: nded, removed project, temporarily code added to nadmin, needs to be refactored

    • ADDED : ntalk-agent new modules nlib-talk-agent (library) and ntalk-agent (application using the library) that enable client to client communication. nlib-talk-agent is a broker that helps communication between nuts components with minimum overhead. nlib-talk-agent enables one workspace to talk with any other workspace without having to create one server socket for each workspace. It also enables singleton per location implementation


    2020

    View Official releases here : Starred releases are most stable ones.

    nuts 0.8.0.0 (PUBLISHED VERSION)

    • 2020-11-08? nuts 0.8.0.0 (*) released download nuts-0.8.0.jar

    • WARNING: this is the first version to be deployed to maven central. previous versions will no longer be supported
    • WARNING: this is a major version, API has evolved with multiple incompatibilities with previous versions

    • WARNING: The OSS License has changed from GPL3 to the more permessive Apache Licence v2.0
    • CHANGED: changed packages from net.vpc to net.thevpc (required for central to be aligned with website)
    • CHANGED: removed support for vpc-public-maven and vpc-public-nuts
    • CHANGED: -Z will update .bashrc file and switch back to default workspace

    • ADDED : when a dependency is missing it will be shown in the error message
    • ADDED : nuts commandline argument --N (--expire) to force reloading invoked artifacts (expire fetched jars). a related NSession.expireTime is introduced to force reinstall of any launched application and it dependencies, example: -N ndi

    • ADDED : install --strategy=install|reinstall|require|repair introduced to select install strategy (or sub command)
    • ADDED : NutsInput & NutsOutput to help considering reusable sources/targets
    • ADDED : nuts commandline argument --skip-errors to ignore unsupported commandline args
    • ADDED : new toolbox njob, to track service jobs (how many hours you are working on each service project)
    • ADDED : new next-term, to support jline console extension into nuts
    • ADDED : workspace.str() to create NutsStringBuilder
    • ADDED : 'switch' command in ndi to support switching from one workspace to another. example : switch -w other-workspace -a 0.8.0


    2020

    View Official releases here : Starred releases are most stable ones.

    nuts 0.7.2.0

    WARNING: this version is not deployed to maven-central

    • 2020-09-23 nuts 0.7.2.0 (*) released download nuts-0.7.2.jar

    • FIXED : execute non installed artifacts sometimes do not ask for confirmation
    • ADDED : NutsCommandLineProcessor.prepare/exec/autoComplete
    • ADDED : NutsApplicationContext.processCommandLine(cmdLine)
    • ADDED : NutsApplicationContext.configureLast(cmdLine)
    • RENAMED: feenoo renamed to ncode*- ADDED : Docusaurus Website

    • ADDED : new toolbox ndocusaurus : Docusaurus Website templating

    nuts 0.7.1.0

    WARNING: this version is not deployed to maven-central

    • 2020-09-14 nuts 0.7.1.0 (*) released download nuts-0.7.1.jar

    • FIXED : reset stdout line when calling external processes
    • FIXED : fixed several display issues.

    nuts 0.7.0.0

    WARNING: this version is not deployed to maven-central

    • 2020-07-26 nuts 0.7.0.0 (*) released download nuts-0.7.0.jar

    • ADDED : NutsApplicationContext.processCommandLine(c)
    • ADDED : NutsWorkspaceCommand.copySession()
    • RENAMED: derby renamed to nderby
    • RENAMED: mysql renamed to nmysql
    • RENAMED: tomcat renamed to ntomcat
    • RENAMED: mvn renamed to nmvn

    2020

    View Official releases here : Starred releases are most stable ones.

    nuts 0.6.0.0

    WARNING: this version is not deployed to maven-central

    • 2020-01-15 nuts 0.6.0.0 (*) released download nuts-0.6.0.jar

    • CHANGED : config file format changed
    • CHANGED : now installed packages are stored in 'installed' meta repository
    • CHANGED : alias files have extension changed form .njc to .cmd-alias.json

    • CHANGED : now nuts looks for system env variable NUTS_WORKSPACE for default workspace location
    • CHANGED : api and runtime are installed by default
    • CHANGED : now distinguishes between installed primary and installed dependencies packages.
    • ADDED : support for ROOT_CMD execution (SYSCALL was renamed USER_CMD)
    • ADDED : support for Interrupting Copy
    • ADDED : support to ps (list processes)
    • ADDED : support progress options
    • CHANGED : worky, searches now for modified deployments with same version but different content
    • FIXED : encoding problem with json/xml
    • REMOVED : NutsRepositorySession

    2019

    nuts 0.5.8.0

    WARNING: this version is not deployed to maven-central

    • 2019-09-02 nuts 0.5.8.0 (*) released download nuts-0.5.8.jar## nuts 0.5.7.0 WARNING: this version is not deployed to maven-central

    • 2019-07-23 nuts 0.5.7.0 (*) released download nuts-0.5.7.jar## nuts 0.5.6.0 WARNING: this version is not deployed to maven-central

    • 2019-06-23 nuts 0.5.6.0 released download nuts-0.5.6.jar## nuts 0.5.5.0 WARNING: this version is not deployed to maven-central

    • 2019-06-08 nuts 0.5.5.0 released download nuts-0.5.5.jar## nuts 0.5.4.0 Change Log WARNING: this version is not deployed to maven-central

    • 2019-04-21 nuts 0.5.4.0 (*) released download nuts-0.5.4.jar## nuts 0.5.3.0 Change Log WARNING: this version is not deployed to maven-central

    • 2019-01-05 nuts 0.5.3.0 released download nuts-0.5.3.jar## nuts 0.5.2.0 Change Log WARNING: this version is not deployed to maven-central

    • 2018-12-28 nuts 0.5.2.0 released download nuts-0.5.2.jar ## nuts 0.5.1.0 Change Log WARNING: this version is not deployed to maven-central

    • 2018-12-18 nuts 0.5.1.0 released download nuts-0.5.1.jar## nuts 0.5.0.0 Change Log WARNING: this version is not deployed to maven-central

    • 2018-11-25 nuts 0.5.0.0 released download nuts-0.5.0.jar

    • Very first published version. older ones were used internally for internal projects only.

    2018

    You'd still be Maven, yet you gonna be Nuts

    Is there any package manager for Java(TM) applications2? You can google for it and you will find that many have queried this on blogs and forums. In most cases responses point to maven and gradle, the tremendous build tools. However, both maven and gradle are build tools, while helping build packages they lack of deployment features. They bundle every dependency in every package (think of wars, ears and standalone jars). They do not handle installation or upgrading.

    Apache ivy, as well, while competing with maven build tool does not provide more than transitive dependency management. The main idea behind a package manager is the automation of installation, update, configuration and removal of programs or libraries in a coherent manner with the help of a database that manages binaries and metadata. maven, to consider one, sticks to the build process, an goes no further.

    You may also ask, "Why ever, do we need a package manager for Java(TM) applications". Okkay, let's take some example of Java(TM) applications. How can we install apache netbeans IDE ? The proper way is to browse to the editor's website, select the proper mirror if applicable, download the archive, uncompress it, chmod the main binary (i'm a linux guy) and adjust PATH environment variable to point to this binary; Quite a pain. What do we do to update it now? Hopefully, the IDE has a solid plugin architecture and an in-app update/upgrade tool that will help the process (in a gui manner of course). The same applies to eclipse and apache tomcat with the exception that apache tomcat does not even bundle an in-app update tool. The same applies too when dealing with other operating systems (Windows, MacOS, ...). Managing Java(TM) applications is far from helpful.

    Furthermore, as Java(TM) applications are (usually) not bundled in OS-aware installers, you will end up with a spaguetty home directory with applications installed all over your partitions, which - simply - does not mix up with all the work

    OS-developers have done to separate logs from data, from temporary files, from binaries, etc. Each application will handle it's files in a very specific manner that would make it hard to manage own's disk (automatic archive/backup/restore) or roaming applications across machines, etc.

    Moreover, in a world of containers and devops, deployments of Java(TM) applications need to be automatable and reproducible with the highest level of simplicity, configurability and integrability. Installing tomcat on a custom port should not not be as painful as using a custom Docker image or a complicated Dockerfile or even a custom apache tomcat bundle.

    When we recall that Java(TM) is the one language that has the more versatile number of libraries, frameworks and tools, I find it annoying not to have a decent package manager to make the leap and provide facilities I find prime in other

    languages and platforms (pip/python, npm/nodejs/javascript) and most of linux distribution (zypper/opensuse, dnf/redhat apt-get/debian/ubuntu)

    Hence I'm introducing here a humble attempt to provide a tiny (300ko) yet powerful package manager for Java(TM) applications (but not only) that should handle jar files seamlessly (with little or no modification) and that comes with a set of portable tools that makes this management at a higher level. I'm not talking about redefining the wheel. I'm aware that many tools such as maven, are already very good at what they do, I just needed to make the leap for deployments. You will be able to deploy your applications without bundling all of their dependencies : nuts will take care of that.

    So you'd still be maven, yet you gonna be nuts.

    Nuts Package manager

    nuts is actually :

    • a transitive dependency resolution manager
    • a package manager (backports maven and supports maven repositories)
    • an automation tool
    • a feature rich toolset
    • an application framework
    • decentralized
    • sandbox based

    Transitive dependency resolution manager

    nuts calculates transitive dependencies of an application to resolve other packages to download at install or update/upgrade time. So typically, deployed applications should no more bundle their dependencies within the deployed archive. Thus we avoid the annoying fat jars (using maven plugins like 'maven-assembly-plugin' and 'maven-shade-plugin') and lib folders (using 'maven-dependency-plugin'). It will also reuse dependencies and packages across multiple installed applications and hence save disk space, and network bandwidth.

    All what nuts needs is a descriptor file withing the jar file that defines the immediate dependencies. It then calculates all transitive dependencies automatically. And guess what, all maven built jars already contain that descriptor : the pom.xml file. So basically all maven applications are already nuts aware applications.

    Package manager

    nuts uses this dependency resolution to help install, update, remove and search for applications. To be able to use an application, it has to be installed and configured with all of its dependencies. This is the main goal of nuts. When we ask to install tomcat, for instance, it will search for the best version in registered repositories, download it, and configure it to be ready for execution. The best version is not always the the latest one. Actually it would be the latest valid one, thus the latest one that matches some constraints. Constraints include the version of the running java (tomcat 8 works on java 7 but not 6 for instance), the running operating system (windows, linux, ... to help selecting the proper binaries), may be the hardware architecture or even the operating distribution (for linux based systems). Constraints will filter the search result to include the best, the most accurate version to install. Installation also would configure the installed application and even may run another artifact to help this configuration.

    nuts also handles search for newer versions and update the installed application at request. Updating a software does not necessarily delete the older version. Both version can coexist and It's up to the user the decide whether or not to retain both versions. Indeed, one of the key features of nuts is the ability to install and hence run multiple versions of the same software in parallel. You would never see an error message telling you can't install that software because a dependency of It's installed with different version. All software and all libraries can coexist peacefully.

    Software artifacts are stored in repositories. nuts can handle multiple repositories, remote and local ones. Installed software are stored in special local repositories. Supported repositories include maven repositories and github repositories. Actually a fresh installation of nuts is configured with maven central repository so that, you already have access to thousands of installable artifacts.

    At some point, you may need to uninstall an artifact and that's to undo the artifact installation. Installation will help you choose between uninstalling binaries only and keeping data/config files or remove permanently all of the artifact files. In all ways, uninstalling will not affect other artifacts that use the same dependencies if ever.

    Feature rich Toolset

    nuts is intended to be used either by human users or by robots and other applications. It comes with portable, feature rich toolset, a versatile library and a handy parsable result.

    nuts is mainly a commandline program that helps installing, uninstalling, searching, updating and running artifacts. To help desktop integration, nuts installs by default a set of other companion tools such as nsh (a portable bash-compatible implementation), and nadmin (an administration tool for nuts to configure users, authorizations, repositories, create scripts,...);

    nsh brings the bash facilities to all environments (windows included) in a very portable manner. Besides it integrates well with the installed nuts version. Several common commands are ported to nsh such as cat,head, and ssh, as well as core features like pipes, redirection and scripts.

    nadmin is intended for configuring nuts workspaces, managing repositories and users. It helps also configuring sub commands and aliases to make nuts usage even easier.

    Nuts Workspaces

    One of the key features of nuts is the ability to support multiple isolated workspaces, each managing it's own repositories, applications and libraries; each defining it's sandbox security constraints. Thus non-root installation is made easy while it remains possible to overlap between workspaces by sharing repositories. Roaming is also supported, so that a workspaces can be copied/moved across machines.

    Application Framework

    nuts can also be embedded as a library in you application. This enables you to wire classes on the fly by its network dependency-aware classloading mechanisms. The library allows as well building solid and well integrated applications, mainly console applications. Indeed, nuts comes with rich outputs that support automatic formatting to json, xml, table, tree and plain texts. It handles standard File Systems layouts; XDG Base Directory Specification is implemented for linux and MacOS. A compatible one is also implemented in Windows systems. And of course, it helps seamlessly install, update and remove events.

    Nuts ? Really ?

    In every palace you will find the wizard and the fool, the maven and the nuts; There's no exception in the java kingdom! If you do prefer acronyms here is another reason : nuts stands for Network Updatable Things Services. It should be able to facilitate things deployment and update over the wire where things resolve here to any piece of software depending (or not) on other piece of software.


    2018

    This is the first version of the Nuts website.