Package: wnpp
Severity: wishlist

* Package name    : findjava
  Version         : 0.3.2
  Upstream Author : Loïc Rouchon
* URL             : https://github.com/loicrouchon/findjava
* License         : Apache-2.0
  Programming Lang: Go/Java
  Description     : java application startup script helper

findjava is a tool whose goal is to find the best-installed java
to run your java application according to your program's specific
constraints.

Requiring a particular version of java to be installed is a job
for a package manager. However once installed, it is still a difficult
task to locate the proper one when multiple versions are installed.
This makes the java packaging experience extremely complicated
and/or the user experience quite bad if relying on the version in $PATH
as it could fail depending on which version is currently in the $PATH.

The current solution is to rely on the java-wrapper package to find
the appropriate version to use for a java program.

findjava provides an improved alternative to the java-wrappers package
as it:

* supports specifying not only the minimum java version required
but also the maximum version supported.
* is cross-platform meaning it will ease writing start scripts for
java applications as the same mechanism (findjava) can be used for
Debian, fedora, macOS, ...
* can find not only java, but javac, or the path to a java
installation having multiple of those programs

It also allows the system to specify system-level constraints
which can be overridden on a per-program basis giving control to
Debian for specifying the version range for the whole system
while allowing specific packages requiring special configuration
to opt out if needed.

findjava has been started following the discussion "Packaging
applications with JVM version restrictions"
(https://lists.debian.org/debian-java/2023/04/msg00003.html and
https://lists.debian.org/debian-java/2023/05/msg00004.html)

## Open for feedback

I'm the main developer behind findjava. So far, I did not get
any feedback from Debian developers but I'm more than happy to
improve the findjava to meet the specific needs of Debian
developers/maintainers.

## Technical details:

It is written in Go to minimize the overhead required during
the resolution of the requested java version. It typically
takes 5 to 20ms to find the proper java version on an old
Intel i5-7200U after the initial lookup.

The initial lookup is slightly longer as it requires extracting
the java version and other metadata from the found JREs. findjava
performs this extraction by running a single java class against
the discovered JREs. This takes around 200ms per JRE but is only
computed if a new JRE is discovered or one is updated.

## Packaging

I have no experience when it comes to packaging for Debian, hence
the RFP. I however already made a source package for Ubuntu that
I uploaded to launchpad: findjava - 0.3.1-1~lunar
https://launchpad.net/~loicrouchon/+archive/ubuntu/symly/+packages

I hope this helps

Reply via email to