sbt-native-packager VS sbt-native-image

Compare sbt-native-packager vs sbt-native-image and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
sbt-native-packager sbt-native-image
5 5
1,582 245
-0.1% 1.2%
4.9 3.4
6 days ago 5 months ago
Scala Scala
BSD 2-clause "Simplified" License -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

sbt-native-packager

Posts with mentions or reviews of sbt-native-packager. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-11.

sbt-native-image

Posts with mentions or reviews of sbt-native-image. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-09-13.
  • Scala.js AWS Lambda, using Scala 3
    6 projects | /r/scala | 13 Sep 2022
    Take a look at sbt-native-image or sbt-native-packager for building the native image.
  • GraalVM native-image with Scala 3 reflection hell
    3 projects | /r/scala | 9 Jan 2022
    The reason seems to be Scala 3's new encoding for lazy vals, where a reflective access to a variable called bitmap takes place. To demonstrate this, I took the http4s g8 template, set it up with Scala 3.1.0, added sbt native-image, started the nativeImageRunAgent and ran a single request against GET /joke. After stopping the server, the native-image run agent generated the reflective configs that are required for this path of execution. Comparing the generated Scala 2.13 with the Scala 3 configs, yields a bloated version for Scala 3 that contains these additional rules:
  • Is Scala and Play Framework dying?
    5 projects | /r/scala | 8 Dec 2021
    Sbt plugin: https://github.com/scalameta/sbt-native-image
  • Native Image Compilation for A Purely Functional Example Application
    2 projects | /r/scala | 15 Aug 2021
    IIRC, the sbt-native-image plugin can abstract that away, too: https://github.com/scalameta/sbt-native-image#nativeimagerunagent https://github.com/scalameta/sbt-native-image
  • SBT error when running package application: java.lang.RuntimeException: No main class detected.
    3 projects | /r/scala | 9 Jun 2021
    Assembly, however, has some disadvantages so you may also want to look into other alternatives like sbt-native-packager. You may even want to produce a binary using sbt-native-image (which uses GraalVM under the hood) so your users do not need to install anything at all, not even a JRE.

What are some alternatives?

When comparing sbt-native-packager and sbt-native-image you can also consider the following projects:

sbt-assembly - Deploy über-JARs. Restart processes. (port of codahale/assembly-sbt)

sbt-pack - A sbt plugin for creating distributable Scala packages.

coursier - Pure Scala Artifact Fetching

xsbt-web-plugin - Servlet support for sbt

sbt-jni - SBT Plugin to ease working with JNI

sbt-release - A release plugin for sbt

ScalaKata2 - Interactive Playground

sbt-docker - Create Docker images directly from sbt

sbt-buildinfo - I know this because build.sbt knows this.

sbt-sonatype - A sbt plugin for publishing Scala/Java projects to the Maven central.

sbt-play-scalajs - SBT plugin to use Scala.js along with any sbt-web server.

sbt-scala-js-map - A Sbt plugin that configures source mapping for Scala.js projects hosted on Github