window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster υπάρχει ήδη') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Να χειρίζεστε πολλαπλά περιβάλλοντα για πολλαπλά έργα σε ένα μηχάνημα; - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2022-12-01
Ανάπτυξη λογισμικού

Να χειρίζεστε πολλαπλά περιβάλλοντα για πολλαπλά έργα σε ένα μηχάνημα;

Bartłomiej Kuczyński

Υπάρχει μια χρυσή τομή για τον χειρισμό πολλών περιβαλλόντων για μεγάλο αριθμό σε ένα μόνο μηχάνημα; Ο ειδικός μας σε Java Bartłomiej γνωρίζει την απάντηση!

Ας ρίξουμε μια ματιά σε ένα τυπικό περιβάλλον εργασίας σε ένα οίκος λογισμικού. Έχετε μερικούς πελάτες που έχουν διαφορετικά περιβάλλοντα. Ορισμένοι προτιμούν τη MySQL, άλλοι την Postgres. Μια έκδοση της εφαρμογής σας χρειάζεται Java 11, και ένα άλλο Java 17. Το frontend χρειάζεται npm 12 ή 16 επειδή χρησιμοποιείτε διαφορετικές εκδόσεις της γωνιακή. Τέλος, έχετε αυτόν τον τρισδιάστατο πίνακα που περιέχει συνδυασμούς όλων των εκδόσεων των ΒΔ, του backend και του frontend. Ακούγεται άσχημο, αλλά μια μέρα το αφεντικό σας λέει...

κόμικς<em>με</em>το αφεντικό

Οι ρίζες ενός πολυσυμπαντικού περιβάλλοντος

Η κατάσταση που περιγράφεται παραπάνω δεν είναι κάτι ασυνήθιστο. Η μετάβαση μεταξύ γλωσσικών εκδόσεων ή εκδόσεων πλαισίου, οι ενημερώσεις των βάσεων δεδομένων ή απλώς οι διαφορετικές απαιτήσεις που προέρχονται από τους πελάτες μπορούν να ανατρέψουν όλες τις διαμορφώσεις. Θα πρέπει να έχουμε μια λύση που θα μας βοηθήσει να διαχειριστούμε αυτές τις αλλαγές, μια λύση που να ταιριάζει με μερικές υποθέσεις ή/και απαιτήσεις ή/και στόχους:

  • εύκολο στη χρήση - μία μόνο εντολή για να αλλάξετε μια διαμόρφωση ή μια έκδοση,
  • πλούσια βιβλιοθήκη - θα πρέπει να υποστηρίζει πολλαπλές τεχνολογίες και "πράγματα" (βιβλιοθήκες, πλαίσια, εφαρμογές),
  • επεκτάσιμη - θα πρέπει να προσφέρετε τη δυνατότητα να προσθέσετε τα πρόσθετά σας.

Σε αυτό το άρθρο, θα επικεντρωθώ σε τρεις τομείς. Ο πρώτος είναι τα εργαλεία για τη Java και τη JVM. Ο δεύτερος είναι τα εργαλεία γενικής χρήσης. Ο τρίτος είναι το πώς μπορούμε να χρησιμοποιήσουμε το docker για να επιτύχουμε τους στόχους μας.

​

Είμαι Java και εργάζομαι σε JVM

Όταν είστε Προγραμματιστής Java ή, γενικότερα, εργάζεστε με Τεχνολογίες JVM, τότε μπορείτε να χρησιμοποιήσετε SDKMAN!. Πρόκειται για ένα πολύ ωραίο και εύχρηστο εργαλείο που υποστηρίζει πολλές βιβλιοθήκες, πλαίσια και γλώσσες.

Η διαδικασία εγκατάστασης του SDKMAN! Είναι πολύ απλό. Πρέπει να τρέξετε:

curl -s "https://get.sdkman.io" | bash

και στη συνέχεια

source "$HOME/.sdkman/bin/sdkman-init.sh"

Τώρα μπορείτε να διαχειρίζεστε Java, Σκάλα και Maven εκδόσεις.

Διαχείριση εκδόσεων - παράδειγμα

Σε αυτό το παράδειγμα, θα εγκαταστήσουμε και θα ενημερώσουμε την έκδοση μερικών εργαλείων. Αυτό είναι μόνο ένα μικρό υποσύνολο των διαθέσιμων εργαλείων.

Εγκατάσταση

Ας υποθέσουμε ότι το νέο σας έργο χρησιμοποιεί το Java 17. Δεν έχετε κανένα Java εγκατεστημένη έκδοση. Θέλετε να την εγκαταστήσετε και, επιπλέον, να προσθέσετε ένα εργαλείο Maven Daemon για να κάνετε τις κατασκευές πιο γρήγορες. Έτσι, πρέπει να εγκαταστήσετε και το Maven. Για να το κάνετε αυτό, πρέπει να εκτελέσετε τρεις απλές εντολές:

$ sdk install java 17-open

$ sdk εγκατάσταση maven 3.8.4

$ sdk install mvnd 0.7.1

Στο τέλος της εγκατάστασης κάθε εργαλείου, θα σας ζητηθεί να το κάνετε προεπιλεγμένο:

Θέλετε να οριστεί ως προεπιλογή η Java 17-open; (Y/n):

Αυτό είναι σημαντικό όταν εγκαθιστάτε μια νέα έκδοση μιας βιβλιοθήκης ή μιας γλώσσας, επειδή το SDKMAN! θα ορίσει αυτή την προεπιλεγμένη έκδοση ως παγκόσμια για όλα τα τερματικά του τρέχοντος χρήστη.

Έλεγχος εκδόσεων και ενημέρωση

Από καιρό σε καιρό, το SDKMAN! πρέπει να ενημερώνει τα ευρετήρια. Κατά τη διάρκεια αυτής της διαδικασίας, μπορεί να λάβετε μήνυμα ότι υπάρχουν νέες εκδόσεις των εργαλείων που χρησιμοποιείτε. Μπορούμε να ελέγξουμε ποιες εκδόσεις είναι διαθέσιμες πληκτρολογώντας sdk ls. Για το sdk ls maven:

Διαθέσιμες εκδόσεις Maven

================================================================================

    3.8.6 3.3.3

    3.8.5 3.3.1

3.8.4 3.2.5

    3.8.3 3.2.3

    3.8.2 3.2.2

    3.8.1 3.2.1

    3.6.3 3.1.1

    3.6.2 3.1.0

    3.6.1 3.0.5

    3.6.0 3.0.4

    3.5.4

    3.5.3

    3.5.2

    3.5.0

    3.3.9



================================================================================

τοπική έκδοση

σε χρήση

================================================================================

Όπως βλέπουμε παραπάνω, το Maven έχει νεότερη έκδοση από αυτή που χρησιμοποιούμε. Το ίδιο ισχύει και για το mvnd (0.8.2) και Java (19-open). Ας ενημερώσουμε τα πάντα. Για να το κάνουμε αυτό, πρέπει απλώς να καλέσουμε την εντολή install, αλλά αυτή τη φορά, δεν χρησιμοποιούμε προσδιορισμό έκδοσης:

$ sdk install maven

$ sdk install mvnd

$ sdk εγκατάσταση java

Όμως κάτι λάθος συνέβη. Maven και mvnd έχουν σωστές εκδόσεις, αλλά Java έχει έκδοση 17.0.5-tem. Αυτό συμβαίνει επειδή η "νεότερη" έκδοση του εργαλείου ελέγχεται από τον προμηθευτή του και όχι από τον τοπικό SDKMAN! Ένας πωλητής στο SDKMAN! είναι κάποιος που μπορεί να δημοσιεύσει μια έκδοση. Ωστόσο, ας υποθέσουμε ότι τελικά εγκαθιστούμε 19-ανοικτό, και το κάναμε προεπιλεγμένο, αλλά για κάποιο λόγο, πρέπει να χρησιμοποιήσουμε το 17-ανοικτό.

Τοπικές εκδόσεις και διαχείριση εκδόσεων ανά τερματικό

​
Μπορούμε να διαμορφώσουμε ένα προεπιλογή έκδοση ενός εργαλείου που είναι καθολική για όλα τα έργα και τα τερματικά. Όταν όμως χρειαζόμαστε μια συγκεκριμένη έκδοση, έχουμε δύο τρόπους για να το κάνουμε αυτό. Ο πρώτος είναι να χρησιμοποιήσουμε το sdk use κάθε φορά που θέλουμε να χρησιμοποιήσουμε μια συγκεκριμένη έκδοση ενός εργαλείου στο τρέχον τερματικό. Το δεύτερο είναι να προετοιμάσουμε μια λίστα εκδόσεων σε ένα .sdkmanrc αρχείο που είναι αποθηκευμένο με το έργο.

Ενώ η πρώτη επιλογή είναι για μεμονωμένη χρήση, η δεύτερη είναι σχεδιασμένη για εργασία με ομάδες και κοινή χρήση διαμορφώσεων μεταξύ ομάδα μέλη.

Πλεονεκτήματα και μειονεκτήματα του SDKMAN!

Το SDKMAN! είναι πολύ εύκολο στη χρήση και διαθέτει μια πλούσια βιβλιοθήκη υποστηριζόμενων εργαλείων, πλαισίων και γλωσσών. Λειτουργεί σε Linux, MacOS και Windows. Από την άλλη πλευρά, αυτό το εργαλείο είναι εστιασμένο στην JVM και απαιτεί την αποδοχή του συγγραφέα να είναι πωλητής. Επιπλέον, ο μηχανικός του .sdkmanrc είναι πολύ κακή και μπορεί να επιβραδύνει σημαντικά τη διαδικασία αλλαγής καταλόγων.

Θα ήθελα να χρησιμοποιήσω πολλές άλλες γλώσσες

Εάν πρέπει να χρησιμοποιήσετε πολλές γλώσσες και εργαλεία, θα πρέπει να ρίξετε μια ματιά στο asdf. Αυτό το εργαλείο επικεντρώνεται σε εργαλεία "υψηλού επιπέδου". Ενώ στο SDKMAN! μπορείτε να βρείτε πολλά εργαλεία ειδικά για Java, όπως το Bpipe ή το Znai, το asdf προσφέρει πολύ περισσότερα εργαλεία αλλά όχι τόσο συγκεκριμένα. Φυσικά, ορισμένα από αυτά τα εργαλεία επικαλύπτονται, π.χ. η Java, το Tomcat ή το mvnd είναι διαθέσιμα και στα δύο.

Όταν θα θέλατε να χρησιμοποιήσετε asdf, πρέπει να έχετε git και curl εγκατεστημένο. Μετά από αυτό, απλά:

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2

και προσθέστε αυτές τις γραμμές στο ~/.bashrc file:

. $HOME/.asdf/asdf.sh

. $HOME/.asdf/completions/asdf.bash

Τώρα μπορείτε να εγκαταστήσετε πρόσθετα και εργαλεία στις αγαπημένες σας εκδόσεις.

Διαχείριση με βάση plugin

Σε αντίθεση με το SDKMAN!, asdf χρησιμοποιεί πρόσθετα για τη διαχείριση εργαλείων. Έτσι, πριν μπορέσετε να εγκαταστήσετε ένα εργαλείο, πρέπει να εγκαταστήσετε ένα πρόσθετο. Ας επιστρέψουμε στο έργο του παραδείγματός μας και ας προσπαθήσουμε να ρυθμίσουμε το περιβάλλον χρησιμοποιώντας asadfsdf.

Πρώτα, πρέπει να εγκαταστήσουμε τα πρόσθετα:

asdf plugin add java

asdf plugin add maven

asdf plugin add mvnd

Στη συνέχεια μπορούμε να εγκαταστήσουμε τα εργαλεία μας:

asdf install java openjdk-17

asdf install maven 3.8.4

asdf install mvnd 0.7.1

Και για άλλη μια φορά, σε αντίθεση με το SDKMAN!, asdf δεν αλλάζει τίποτα στο περιβάλλον μας. Όταν προσπαθούμε να χρησιμοποιήσουμε τη java, λαμβάνουμε ένα μήνυμα σφάλματος όπως:

Δεν έχει οριστεί έκδοση για την εντολή Java

Εξετάστε το ενδεχόμενο να προσθέσετε μία από τις παρακάτω εκδόσεις στο αρχείο ρυθμίσεων στο ~/.tool-versions

java openjdk-17

Πρέπει να δημιουργήσουμε το αρχείο .tool-versions στον αρχικό κατάλογο για τη διαχείριση των προεπιλεγμένων εκδόσεων.

Τοπικές και παγκόσμιες εκδόσεις

Ενημέρωση εκδόσεων λογισμικού με asdf είναι αρκετά απλή. Απλά εγκαθιστούμε μια νέα έκδοση. Επειδή αυτή η διαδικασία δεν επηρεάζει το περιβάλλον, μπορούμε να το κάνουμε ανά πάσα στιγμή και σε οποιοδήποτε σημείο του συστήματος αρχείων. Όταν θέλουμε να χρησιμοποιήσουμε μια συγκεκριμένη έκδοση κάποιου λογισμικού, πρέπει να δημιουργήσουμε στον κατάλογο project ένα .tool-versions αρχείο που μπορεί να μοιραστεί μεταξύ των μελών της ομάδας. Να θυμάστε ότι πρέπει να εγγυηθείτε ότι όλα τα μέλη της ομάδας έχουν asdf και τα πρόσθετα που είναι εγκατεστημένα. Η λίστα των πρόσθετων που μπορείτε να βρείτε εδώ.

Συγκρούσεις εκδόσεων

asdf υποστηρίζει όχι μόνο γλώσσες προγραμματισμού, πλαίσια και εργαλεία όπως το vim ή το kubernetess. Υποστηρίζει και βάσεις δεδομένων. Σε μια τέτοια περίπτωση, θα μπορούσαμε να εγκαταστήσουμε πολλαπλές εκδόσεις π.χ. του Postgres, αλλά μόνο μια παρουσία θα μπορούσε να τρέξει. Αυτό συμβαίνει επειδή asdf εκτελεί εντολές απευθείας στο λειτουργικό σας σύστημα χωρίς κανένα επίπεδο διαχωρισμού. Αυτό οδηγεί σε προβλήματα όπως "θύρα που χρησιμοποιείται ήδη" και συγκρούσεις σε πόρους.

Πλεονεκτήματα και μειονεκτήματα

asdf είναι ένα πολύ καλό εργαλείο αν θέλετε να εργαστείτε σε ένα πολυγλωσσικό περιβάλλον. Υποστηρίζει πολλά εργαλεία, γλώσσες και πλαίσια. Η αρχιτεκτονική που βασίζεται σε πρόσθετα καθιστά πολύ εύκολη την επέκτασή του. Ωστόσο, ορισμένα από τα εργαλεία που έχει στη βιβλιοθήκη του χρειάζονται πρόσθετη εργασία κατά την εγκατάσταση για να παρέχουν όλες τις απαιτούμενες εξαρτήσεις. asdf δεν λειτουργεί στα Windows, ακόμη και στα WSL.

Τελευταίο αλλά όχι λιγότερο σημαντικό - Docker

Όταν μιλάω για τη σύγκρουση λιμανιών παραπάνω, πολλοί από εσάς γνωρίζετε τη λύση.

Docker θα μπορούσε να μας βοηθήσει σε ορισμένες περιπτώσεις. Το αναφέρω από καθήκον, επειδή αυτό το εργαλείο είναι τόσο μεγάλο και πολύπλοκο που δεν μπορούμε να το συζητήσουμε σε ένα άρθρο.

Μαζί με το Docker, θα πρέπει να χρησιμοποιήσουμε ένα docker-compose εργαλείο που μας δίνει τη δυνατότητα να συντονίσουμε περιβάλλοντα με πολλά δοχεία.

Πλεονεκτήματα και μειονεκτήματα του Docker

Το Docker μας βοηθά να διαχειριστούμε εργαλεία που χρειάζονται κάποιους συγκεκριμένους πόρους, όπως θύρες ή αρχεία. Διαχωρίζει τις περιπτώσεις σε κοντέινερ και μας δίνει πλήρη έλεγχο πάνω τους. Παρ' όλα αυτά, το Docker είναι ένα εργαλείο που εισάγει μεγάλη πολυπλοκότητα στο περιβάλλον εργασίας μας και θα μπορούσε να είναι προβληματικό σε ορισμένες περιπτώσεις. Μια από αυτές τις περιπτώσεις χρήσης του Docker σε μια δοκιμή περιγράφεται σε μια από τις προηγούμενες άρθρο.

Συνοψίζοντας

Ξέρω ότι δεν περιέγραψα όλα τα εργαλεία που μπορούν να χρησιμοποιηθούν για τη διαχείριση των εκδόσεων εργαλείων. Υπάρχουν πολλά περισσότερα από αυτά, όπως jEnv που θα μπορούσε να αντικαταστήσει το SDKMAN,

ή NVM που μπορούμε να χρησιμοποιήσουμε για να διαχειριστούμε το npm ή RVM για το Ruby. Επικεντρώθηκα σε εργαλεία που "δοκίμασα στο πεδίο της μάχης" και μπορώ να τα συστήσω σε οποιονδήποτε.

Σχετικά άρθρα

Ανάπτυξη λογισμικού

9 λάθη που πρέπει να αποφύγετε κατά τον προγραμματισμό σε Java

Ποια λάθη πρέπει να αποφεύγονται κατά τον προγραμματισμό σε Java; Στο παρακάτω κομμάτι απαντάμε σε αυτό το ερώτημα.

The Codest
Rafal Sawicki Προγραμματιστής Java
Λύσεις Enterprise & Scaleups

Πώς η Java μπορεί να υποστηρίξει την επιχείρησή σας;

Πριν ξεκινήσουμε, θα ήθελα να σας υπενθυμίσω ένα σημαντικό πράγμα. Η Java δεν είναι μόνο μια γλώσσα προγραμματισμού.

Bartlomiej Kuczynski
Ανάπτυξη λογισμικού

Δοκιμαστικά δοχεία - Πώς να κάνετε τις δοκιμές πιο εύκολες;

Ψάχνετε έναν τρόπο να κάνετε δοκιμές με ευκολότερο τρόπο; Σας βρήκαμε! Ελέγξτε το παρακάτω άρθρο και μάθετε πώς να το κάνετε εφικτό.

Bartlomiej Kuczynski
Ανάπτυξη λογισμικού

Εργαλεία Javascript σε δράση

Ανακαλύψτε μερικά εργαλεία ανάκτησης JavaScript για να βελτιώσετε το παιχνίδι προγραμματισμού σας. Μάθετε περισσότερα για το ESLint, το Prettier και το Husky!

The Codest
Reda Salmi React Προγραμματιστής
Ανάπτυξη λογισμικού

Ασύγχρονη και μονόκλωνη λειτουργία JavaScript?

Η JavaScript είναι μια γλώσσα με ένα νήμα και, ταυτόχρονα, μη μπλοκαρισμένη, ασύγχρονη και ταυτόχρονη. Αυτό το άρθρο θα σας εξηγήσει πώς συμβαίνει αυτό.

Lukasz Kolko

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek