• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

Έκδοση Java

Scheduled Pinned Locked Moved Αντικειμενοστρεφής Προγραμματισμός 2
6 Posts 2 Posters 53 Views
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • it2023086I Offline
    it2023086I Offline
    it2023086
    wrote on last edited by
    #1

    Στο pom.xml στο gitlab έχετε έκδοση 17. Μπορούμε να χρησιμοποιήσουμε 21? (για να είμαι ειλικρινής δεν είμαι σίγουρος αν έχουν διαφορές ή όχι)

    1 Reply Last reply
    0
  • A Offline
    A Offline
    acharal
    wrote on last edited by
    #2

    Μπορείτε αλλά δεν νομίζω ότι χρειάζεστε τα επιπλέον χαρακτηριστικά. Δεν σου δουλεύει αν το αφήσεις 17;

    1 Reply Last reply
    0
  • it2023086I Offline
    it2023086I Offline
    it2023086
    wrote on last edited by
    #3

    Βασικά είχα εξ αρχής 21. Το αλλάζω στο (στοιχειώδες) maven, αλλά που βλέπω την εντολή που τρέχει πάλι την 21 εκτελεί (ίσως πρέπει να την απεγκαταστήσω).
    image.png

    1 Reply Last reply
    0
  • A Offline
    A Offline
    acharal
    wrote on last edited by
    #4

    H Java σαν γλώσσα έχει διάφορα versions και κάθε version προσθέτει χαρακτηριστικά.
    Οι υλοποιήσεις της γλώσσας είναι πολλές, οι πιο γνωστές της Oracle και το OpenJDK. To JDK είναι ένα σύνολο από προγράμματα και βιβλιοθήκες της Java για να μπορέσει να μεταγλωττίσει και να εκτελέσει Java προγράμματα. Το JRE από την άλλη είναι ένα υποσύνολο του JDK και περιέχει μόνο τα απαραίτητα για την εκτέλεση και όχι για την μεταγλώττιση.

    Συνήθως το JDK 21 είναι αυτό που μπορεί να μεταγλωττίσει και να τρέξει προγράμματα της Java 21. Μπορεί όμως να τρέξει και προγράμματα παλιότερης Java. Προφανώς δεν μπορείς να τρέξεις Java 21 με το JDK 17, αλλά μπορείς να τρέξεις Java 17 με JDK 21 (αν το υποστηρίζει το JDK).

    Με αυτά σαν εισαγωγή έχουμε:

    To compiler.source λέει στον javac σύμφωνα με ποιους κανόνες ποιας έκδοσης της Java να ελέγξει το πρόγραμμα. Για παράδειγμα αν χρησιμοποιήσεις κάποιο χαρακτηριστικό που εμφανίστηκε στην Java 21 αλλά έχεις βάλει source 17 θα σου χτυπήσει λάθος.

    Το compiler.target λέει στον μεταγλωττιστή τι κώδικα να παράξει. Αν έχεις επιλέξει 17 τότε το "εκτελέσιμο" jar θα μπορεί να τρέξει με το πρόγραμμα java (του JDK17 ή JRE17). Συνήθως όμως και νεότερα JDK/JRE μπορούν να τρέξουν αυτόν τον κώδικα.

    1 Reply Last reply
    0
  • it2023086I Offline
    it2023086I Offline
    it2023086
    wrote on last edited by
    #5

    Ευχαριστώ πολύ για την αναλυτική απάντηση σας. Οπότε κατά επέκταση, ο κώδικας που έχω γράψει είναι συμβατός με 17?

    1 Reply Last reply
    0
  • A Offline
    A Offline
    acharal
    wrote on last edited by
    #6

    Ναι. Πάντως ο πιο σίγουρος τρόπος είναι να χρησιμοποιήσεις κατευθείαν το maven για να μεταγλωττίσεις τον κώδικας σου γιατί τo pom.xml είναι αρχείο του maven και όχι του IDE. Δηλαδή να τρέξεις στο terminal

    mvn compile
    

    Το λέω αυτό γιατί πολλές φορές το IDE παίρνει πρωτοβουλίες και θέλει reload το pom.xml για να διαβάζει τις αλλαγές κτλ. Δεν θα εμπιστευόμουν με κλειστά μάτια ότι παίζει το IDE πάντα με τις τελευταίες ρυθμίσεις.

    1 Reply Last reply
    0

  • Login

Powered by NodeBB Contributors
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups