Modo giusto per iniziare a programmare

di il
9 risposte

Modo giusto per iniziare a programmare

Buongiorno, sto cercando di capire i fondamenti di Java, soprattutto per quanto riguarda la portabilità.
Di seguito ciò che credo di aver capito:
Java JDK è arrivato alla versione 14 ma se creo un jar questo non funzionerà su altri pc con installato il solo JRE in quanto si è fermato alla versione 8.
Posso utilizzare JDK 8 ma rinunciando ai moduli che sono nati con la versione 9.
Posso programmare con JDK versione superiore a 8 ma devo creare un progetto che contenga tutte le dipendenze ed una versione Java (come si fa con il comando Jlink) che mi permetta di far girare il programma su un pc privo di Java (chiaramente a scapito dimensioni progetto).
Qual'è un modo intelligente per affrontare questo volendo ottenere un programma funzionante su altri pc privi di JDK?
Se non ho capito niente potete dirmelo tranquillamente (probabilmente avete ragione).
Grazie e saluti

9 Risposte

  • Re: Modo giusto per iniziare a programmare

    Pigna ha scritto:


    Java JDK è arrivato alla versione 14 ma se creo un jar questo non funzionerà su altri pc con installato il solo JRE in quanto si è fermato alla versione 8.
    Detto così è impreciso/scorretto. Con un JDK 14 invece PUOI generare classi e jar per un Java 8. Basta specificare quale è la release "target" che vuoi utilizzare. Il compilatore javac ha le opzioni apposite (idem, concetti similari anche in un IDE).
    Se compili con target Java 8 ovviamente non potrai usare feature del linguaggio e classi/metodi del framework introdotti dopo Java 8.

    Pigna ha scritto:


    come si fa con il comando Jlink
    jlink esiste da Java 9 e tra l'altro ha a che fare con il Module System che c'è proprio da Java 9.

    Pigna ha scritto:


    che mi permetta di far girare il programma su un pc privo di Java (chiaramente a scapito dimensioni progetto).
    Qual'è un modo intelligente per affrontare questo volendo ottenere un programma funzionante su altri pc privi di JDK?
    I JRE di Java hanno sempre avuto una caratteristica "simpatica": sono portabili, perlomeno nel contesto della stessa piattaforma (sui sistemi Windows è così, su altri S.O. non sono sicuro al 100%). Nel senso che se sul tuo PC hai la intera cartella di un JRE es. C:\Programmi\jre1.8.0_241 e la copi es. su una chiavetta USB e ci metti anche il tuo jar, lo puoi avviare su qualunque altro PC Windows (che abbia comunque i requisiti minimi per il JRE 8). E funziona. SENZA dover "installare" alcunchè.
  • Re: Modo giusto per iniziare a programmare

    In soldoni, giusto per EVITARE pasticci impasticciati!

    0) un'applicazione Java PUO ESSERE ESEGUITA SOLO da un VM con versione UGUALE O SUPERIORE a quella con cui e' stata compilata.
    E per tranquillita', io ci metterei ANCHE la versione della patch. QUINDI se l'hai compilata con java 8u74, SEI SICURO se la fai girare con una 8u75 MA NON con una 8u73 O INFERIORI (ed infatti mi e' capitato!!!!)
    ANCHE se la compili con la versione X E DICI di rendersi compatibile con la versione Y < X, NESSUNO TI ASSICURA che la cosa funzioni perche' ci sono di mezzo altre N-MILA considerazioni, che ad elencarle qui ci metto una settimana.

    QUINDI: NO, non si compila con una versione e si esegue con una versione precedente.!!! SOLO UGUALE O MAGGIORE

    1) NON SERVE INSTALLARE una JDK: basta prendere la directory, zipparla, andare sull'altro PC, UNZIPPARLA e configurare, eventuamente la variabile d'ambiente "PATH". MA NEANCHE QUESTO e' necessario, ti basta usare un banale file ".bat" in cui ti imposti una variable d'ambiente che userai per ricuperare java.exe

    2) nel 99.9999% dei casi, SE USI la STESSA VERSIONE di Java (o versioni successive) su Windows,Linux, Mac, ..., SEI SICURO (al 99.9999% appunto) che la tua applicazione funzionera' senza problemi.

    E' OVVIO che se ti importi una libreria di terze parti SPECIFICA per Windows, NON PUOI PRETENDERE che la tua applicazione funzioni anche su Linux/Mac: DEVI cercare la versione della libreria per il corrispondente sistema operatori!!!!
    E se non c'e', ti attacchi al tram
    Questo e' il CLASSICO errore balengo che fanno i principianti

    Poi, essendo sufficientemente smanettoni, con un bel po' di esperienza, ed ingegno, si puo' fare tutto. Ma serve un bel po' di ""smanettoneria""
  • Re: Modo giusto per iniziare a programmare

    Buongiorno e grazie per le gentili risposte.
    Immagino che per Voi programmatori "avanzati" sia difficile mettersi nei panni di chi non ha la minima idea di cosa sia Java, io mi trovo nella stessa situazione quando ho a che fare con giovani programmatori anche bravi ma che non hanno idea di cosa sia il bios e di come risolvere certi problemi, naturalmente chi ha iniziato negli anni 80 sorride di questo.
    All'inizio devi far "girare" un programma Java e Oracle ti fornisce in automatico il JRE a 32bit (perchè di default?)
    Poi con un altro programma ti accorgi che ti serve il 64 Bit, allora lo scarichi e lo installi ma ti scontri con i vari problemi di convivenza tra le versioni, tutte facilmente risolvibili ma devi avere una certa base di conoscenze informatiche (o l'amico smanettone che non è sempre un bene).
    Poi se vuoi iniziare a capire Java ti scontri con uno spaventoso muro di sigle JRE JKD J2EE J2SE IDE JAR WAR EAR,... che ti fanno rizzare i capelli.
    Ho avuto delle difficoltà anche a scaricare la JDK 14 dalla pagina di Oracle, mi rimandava sempre alla pagina di download senza scaricarmi il file (incredibile avevano creato un goto!)
    La mia non è una critica, volevo solo spiegare che, dalla immagino semplicità iniziale, Java si è evoluto in un qualcosa di estremamente ramificato che confonde un pò le idee, vedo che tanti a questo punto decidono di affidarsi ad un IDE e videotutorial ma senza capire quello che stanno facendo.
    Una domanda, ho letto che Oracle tra un pò non supporterà più JRE 8, sapete cosa intendono fare?
    Grazie per la disponibilità e buon weekend.
  • Re: Modo giusto per iniziare a programmare

    Il motivo, E' BANALE!!!

    Java NON E' un linguaggio di programmazione ADATTO per chi vuole IMPARARE a programmare.

    Java, e tutto il suo ecosistema, E' ROBBBBA per gente che sa quello che sta' facendo.

    Questo e' l'ennesimo errore del programmatore della domenica che pensa che per dire di saper programmare pensa che basti studiare un linguaggio di programmazione. E peche' non iniziare con Java, visto che lo usano TUTTI?

    E gia', poi ci si scorna con l'ecosistema e le tonnellate di altre cose
  • Re: Modo giusto per iniziare a programmare

    Peccato, l'idea di base di Java mi sembra fantastica, niente gomitoli ed un sacco di librerie pronte per evitare di reinventare ciò che già c'è e funziona.
    A livello programmazione non mi sembra più complicato di C++.
    L'ecosistema come lo chiami tu lo trovo invece molto anarchico mi ricorda un po' le distribuzioni Linux dove ognuno sceglie la strada che preferisce.
    Mi ero fatto l'idea che fosse la piattaforma giusta per una nuova generazione di programmatori.
    Saluti e buona giornata.
  • Re: Modo giusto per iniziare a programmare

    Pigna ha scritto:


    Immagino che per Voi programmatori "avanzati" sia difficile mettersi nei panni di chi non ha la minima idea di cosa sia Java
    [...]
    Poi se vuoi iniziare a capire Java ti scontri con uno spaventoso muro di sigle JRE JKD J2EE J2SE IDE JAR WAR EAR,... che ti fanno rizzare i capelli.
    [...]
    Java si è evoluto in un qualcosa di estremamente ramificato che confonde un pò le idee, vedo che tanti a questo punto decidono di affidarsi ad un IDE e videotutorial ma senza capire quello che stanno facendo.
    Ma la questione è sempre la "solita". Per affrontare un linguaggio di programmazione, un framework, una tecnologia ecc.. bisogna impegnarsi. Quindi si tratta di studiare, leggere libri, documentarsi, fare pratica (sbagliando, anche!) e di nuovo studiare, leggere, ecc... E questo richiede TEMPO, mesi se non anche addirittura anni.
    Poi ... se uno pretende da zero (proprio "zero") di impiegare 1 mese per studiare Java e riuscire a fare es. applicazioni con Spring Boot (ho già sentito "pretese" di questo tipo) ... beh ... forse non sta affrontando la cosa nel modo giusto ...

    Io in queste ultime settimane ho ripreso a studiare Kotlin (è un linguaggio che ha come target principale la JVM, ispirato a Java, Scala e altri linguaggi). Avevo già studiato qualcosa a riguardo qualche anno fa ma poi non avevo continuato per il poco tempo. Kotlin mi piace, lo trovo interessante, ha delle funzionalità molto espressive, pratiche e simpatiche. Ebbene: Kotlin è "TOSTO" per ME che ho 11+ anni di esperienza con Java. Ma con la conoscenza solidissima che ho di Java, per me è solo "questione di tempo" (non di capacità). Mi ci vorranno svariati mesi (!) per avere una valida visione su un po' tutto Kotlin.

    Quindi la questione è, ripeto, solo quella di "impegnarsi".

    Pigna ha scritto:


    Una domanda, ho letto che Oracle tra un pò non supporterà più JRE 8, sapete cosa intendono fare?
    Intanto il riferimento ufficiale lo da: https://www.oracle.com/java/technologies/java-se-support-roadmap.html

    Comunque uno è liberissimo di continuare a usare un JRE 8 anche dopo la data di fine del supporto. Ovviamente con le dovute cautele sul fronte di bug e altro. Poi, ad ogni modo, si può sempre utilizzare un runtime superiore, es. di Java 11 (che è una LTS, tra l'altro, quindi più a lungo termine).
    Dal punto di vista del linguaggio in sé e della JVM, Java è uno di quei pochi linguaggi che è sempre stato portato avanti cercando di mantenere una ampia e (quasi) totale compatibilità all'indietro. Vuol dire che una applicazione sviluppata per Java 5 dovrebbe anche girare su un runtime Java 14.
    Le "grane" che si possono avere, non dipendono tanto dal linguaggio/JVM ma da altre questioni. Ad esempio dal fatto che certe API sono state deprecate e poi rimosse, certi tool del JDK rimossi, e cose del genere ecc...
    Ma questo non c'entra con Java in sè.
  • Re: Modo giusto per iniziare a programmare

    @Pigna, e' evidente che ti manca un background adeguato per ""comprendere"" le sfaccettature.

    Questo non vuol essere una critica o un'offesa, ma una constatazione di fatto.
    E"ovvio che se uno non e' del mestiere, non lavora 8 ore al giorno 5 giorni la settimana per 45 settimane all'anno, per ANNI, non puo' sapere tutto!
    Questa frase ne una dimostrazione:
    L'ecosistema come lo chiami tu lo trovo invece molto anarchico mi ricorda un po' le distribuzioni Linux dove ognuno sceglie la strada che preferisce.
    E' ovvio che non sai che cosa sono i JSR, e COME Java viene esteso! Nella fattispecie: E' ESATTAMENTE L'OPPOSTO!!

    Ti faccio un esempio. Quando vedi un "cavallo" tu penserai: Toh! Un cavallo!!!

    Se sei del mestiere, un cavallo NON E' un ""cavallo"", MA,

    https://it.wikipedia.org/wiki/Categoria:Razze_equin

    E se vedi una sella, dirai: Toh! Una sella. INVECE

    https://it.wikipedia.org/wiki/Finimenti#Sell

    Questo per ribadire (di nuovo) che Java NON E' PER PROGRAMMATORI della domenica, MA personale esperto e altamente qualificato, che e' in grado di apprezzare e sfruttare tutta l'infrastruttura e l'ecosistema che Java mette a disposizione.

    Iniziare a programmare usando la programmazione ad oggetti e' come voler mettere nelle mani di un neopatetntato un'automobile da 1200CV, che raggiunge i 100 km/h in 2.6 secondi e se la spingi un po' ti supera i 400 km/h.

    Figo, MA se non la sai gestire, ti fai solo che del male!

    Oppure dare in mano alla massaia un coltello in ceramica super affilato: taglia bene, ma per tagliare il salame, taglia bene anche il coltello di plastica delle posate usa e getta che si usano nei picnic! (E anchequi, DIPENDE dal salame )

    E' TUTTA QUESTIONE di saper sfruttare lo strumento.
    Se uno ne usa l'1%, non comprende l'utilita' di tale complicazione.
    Se ne usa il 75%, e' TUTTA UN'ALTRA storia!

    Il confronto con il C++ si puo' fare, ma non ha molto senso:
    il C++ e' un linguaggio COMPLESSO, ma ha una libreria di base RIDICOLA

    Java, come linguaggio, e' un pochino meno complesso del C++ (giusto un epsilon, perche' non si porta dietro tutte le elucubrazioni mentali dei template) MA ha una libreria di base STERMINATA, e le librerie aggiuntive (quelle con gli acronimi strani) sono ANCORA DI PIU'.

    Entrambi i linguaggi ""sono adatti SOLO ad un publico adulto, I minori devono essere accompagnati""
  • Re: Modo giusto per iniziare a programmare

    migliorabile ha scritto:


    perche' non si porta dietro tutte le elucubrazioni mentali dei template
    E neanche le magagne sulla gestione esplicita di puntatori e memoria.
    E la ereditarietà multipla di classe.
  • Re: Modo giusto per iniziare a programmare

    Esattamente!
Devi accedere o registrarti per scrivere nel forum
9 risposte