Jlink - Creare un Java RunTime cross piattaforma

di il
2 risposte

Jlink - Creare un Java RunTime cross piattaforma

Buongiorno a tutti,

cercando in rete mi sembra di aver capito che con jlink sia possibile creare un runtime ad-hoc anche per un S.O. diverso da quello in uso
ho capito male?
Nel mio caso, vorrei creare un runtime per windows da Linux-Debian.

Ho scaricato ed estratto lo zip del JDK per Windows, quindi lanciato jlink specificando come --module-path il percorso del JDK windows, così:

jlink --module-path /~/java/jdk-11.0.18_windows-x64_bin/jdk-11.0.18/ --add-modules java.base,java.desktop,java.scripting,java.xml,jdk.unsupported --output baseWin

ma di fatto crea un runtime per linux uguale a quello installato sul mio pc.
(stesso risultato con openJdk).

Con lo stesso zip, ho provato a crearlo da windows e funziona correttamente, crea un runtime con la versione dello zip, diverso da quella installata.

Ringrazio anticipatamente per la dritta giusta.

2 Risposte

  • Re: Jlink - Creare un Java RunTime cross piattaforma

    Grazie migliorabile,

    ti ringrazio per avermi dedicato del tempo, anche se però non apprezzo il tono e di fatto non rispondi alla domanda.

    01/04/2023 - migliorabile ha scritto:


    Invece di “cercare in rete”, e affidarti a fonti INAFFIDABILI, STUDIA la documentazione UFFICIALE

    Questo consiglio avrebbe senso se, alla pagina a cui mi rimandi, ci fosse la risposta alla mia domanda, cioè se può essere fatto cross-piattaforma. Oppure se nel comando da me postato ci fossero degli evidenti errori rispetto alle indicazioni fornite. In questo caso però avresti potuto segnalarmi l'errore, in modo che mi sarei dato da fare a cercare il modo di correggerlo.

    Dalla documentazione ufficiale:

    “You can use the jlink tool to assemble and optimize a set of modules and their dependencies into a custom runtime image.”

    Cioè  quello che ho scritto nel mio titolo. (creare un java runtime).

    Certo non fa nessun riferimento alla possibilità di creare da linux quello per windows o viceversa, però non lo esclude esplicitamente. Semplicemente non ne parla.

    Inoltre non sarai così “critico” sulle fonti non ufficiali. Proverò a verificarlo se è possibile con il MAC.

    01/04/2023 - migliorabile ha scritto:


    Questo l'utilizzo e' ABBASTANZA specifico, utile nello 0.00001% dei casi. 

    Immagino che tu abbia delle fonti attendibili per questo dato.

    Claudio De Sio Cesari non credo sia l'ultimo arrivato in materia di java, eppure mi sembra pensarla un po' diversamente.

    In ogni caso io vorrei poter utilizzare l'applicazione (semplicissima) javaFX creata da me sul pc del lavoro, dove non posso installare nulla in quanto gestito centralmente. Purtroppo c'è la versione java 1.8. Vorrei inoltre farla girare su un altro pc windows senza obbligarla da installare java.

    Ovviamente tutto questo lo possa fare creando questo “custom runtime image” da windows dentro la cartella del jdk windows. 

    01/04/2023 - migliorabile ha scritto:


    Non centra NIENTE!

    Il tool serve per RIMUOVERE parte della libreria standard NON NECESSARIA all'applicazione.

    Che detto male è quello che voglio fare (con l'unica differenza che avrei preferito farlo da linux).

    La domanda era solo se è possibile farlo cross piattaforma.

    Anche se non lo hai detto esplicitamente, dalla tua risposta mi sembra di capire che non si può.

    Inizialmente aveva stupito anche me. Poi ragionandoci sopra non sembra così assurdo. Se da linux scarico uno zip con il jdk windows, lo estraggo su una chiavetta, che una volta messa nel pc windows mi mette a disposizione un runtime completo. Ridurre il tutto “rimuovendo” (per usare le tue parole) “la parte non necessaria” tutto sommato non sembra una cosa che non si possa fare su un OS diverso.

    Grazie ancora per l'attenzione.

  • Re: Jlink - Creare un Java RunTime cross piattaforma

    aggiornamento.

    1) vedo che la prima risposta è sparita.

    2) in realtà c'era un errore nel mio comando, in quanto il module-path doveva puntare alla cartella jmods. Nel mio esempio 

    /~/java/jdk-11.0.18_windows-x64_bin/jdk-11.0.18/jmods/

    3) i due jdk devono avere la stessa versione. avendo installato openjdk 11.0.18 e non avendo trovato la stessa per win, ho scaricato entrambe le versioni openjdk 20, e dalla cartella bin della versione linux ho creato una costum runtime image puntando a quella di win, e finalmente crea un runtime funzionante.

    Quindi confermo che si può fare.

Devi accedere o registrarti per scrivere nel forum
2 risposte