This shows you the differences between two versions of the page.
|
poo-ca-cd:laboratoare:intro [2021/10/07 17:16] radu_bogdan.pavel [IntelliJ IDEA Ultimate Edition] |
poo-ca-cd:laboratoare:intro [2025/10/05 13:29] (current) florian_luis.micu [Instalare IntelliJ 2025.2 Community] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Laboratorul 0: Introducere ===== | + | ====== Setup Environment: JDK, IntelliJ, Maven, Git ====== |
| - | ==== Instalare Java 17 ==== | + | * Autori: [[miculuis1@gmail.com | Florian-Luis Micu ]], [[sorinabuf@gmail.com | Sorina-Anamaria Buf ]], [[stefancocioran@gmail.com | Ștefan Cocioran ]] |
| + | * Data publicării: 29.09.2025 | ||
| + | * Data ultimei modificări: 05.10.2025 | ||
| - | Pentru POO vom folosi Java 17 și anume OpenJDK 17. | + | |
| + | =====☕ Java===== | ||
| + | |||
| + | ==== Mediul de dezvoltare Java ==== | ||
| + | |||
| + | Java Development Kit (JDK) este pachetul oficial de unelte necesare pentru dezvoltarea aplicațiilor Java. Acesta include: | ||
| + | |||
| + | * compilatorul **javac**, care transformă codul sursă în bytecode. | ||
| + | * **Java Runtime Environment (JRE)**, pentru rularea aplicațiilor. | ||
| + | * biblioteci de bază. | ||
| + | * unelte pentru debugging și monitorizare. | ||
| + | |||
| + | JDK este dezvoltat și întreținut de **Oracle**, dar există și implementări alternative open-source, recunoscute și utilizate pe scară largă în industrie cum ar fi: | ||
| + | * **Azul Zulu**: OpenJDK întreținut de Azul, certificat. | ||
| + | * **Amazon Corretto**: OpenJDK întreținut de Amazon, gratuit și cu patch-uri LTS. | ||
| + | * **Microsoft Build of OpenJDK**: optimizat pentru Azure și Windows. | ||
| + | * **Red Hat OpenJDK**: disponibil gratuit, integrat în ecosistemul Red Hat. | ||
| + | * **SapMachine**: întreținut de SAP. | ||
| + | * **Debian/Ubuntu OpenJDK builds**: build-uri distribuite prin pachetele Linux. | ||
| + | |||
| + | De asemenea, există și implementări enterprise recunoscute pentru optimizări și suport specializat cum ar fi: | ||
| + | * **Oracle JDK**: oficial de la Oracle, gratuit pentru business-uri mici, testare și dezvoltare, dar suportul LTS trebuie plătit. | ||
| + | * **Azul Platform Prime (Zing)**: optimizat pentru performanță și latență scăzută. | ||
| + | * **IBM Semeru Runtimes (cu suport comercial)**: bazat pe Eclipse OpenJ9. | ||
| + | * **Red Hat Build of OpenJDK (cu suport enterprise)**: pentru clienți RHEL/OpenShift. | ||
| + | |||
| + | Versiunile JDK sunt lansate periodic, iar unele sunt desemnate ca LTS (Long-Term Support), ceea ce înseamnă că primesc actualizări și suport pe termen lung, fiind recomandate pentru proiecte stabile. Exemple: | ||
| + | |||
| + | * JDK 8 (2014) | ||
| + | * JDK 11 (2018, LTS) | ||
| + | * JDK 17 (2021, LTS) | ||
| + | * JDK 21 (2023, LTS) | ||
| + | * JDK 25 (2025, LTS) | ||
| + | |||
| + | Pentru POO vom folosi **Java 25** și anume **OpenJDK 25**. | ||
| + | |||
| + | <note tip>Puteți folosi și distribuția de JDK 25 oferită de Oracle pe [[https://www.oracle.com/java/technologies/downloads/|site-ul oficial]]. Pentru instalare urmăriți tutorialul oficial din [[https://docs.oracle.com/en/java/javase/25/install/overview-jdk-installation.html|documentația Oracle]].</note> | ||
| + | |||
| + | ==== Instalare Java 25 ==== | ||
| + | |||
| + | Aveți două opțiuni de instalare: | ||
| + | * **Instalarea JDK-ului manual ca utilitar global pentru sistemul de operare**: Această opțiune vă permite să rulați utilitarele din JDK din orice cale din terminal, dar are un set-up puțin mai lung. | ||
| + | * **Instalarea JDK-ului local mediului de dezvoltare din IntelliJ**: Prin IntelliJ puteți instala rapid o versiune de JDK pentru a porni la lucru, dar JDK-ul instalat va fi accesibil doar din IntelliJ, nu din linia de comandă. | ||
| + | |||
| + | <note important>Dacă aveți un sistem care folosește **dual-boot**, puteți să lucrați atât pe Windows, cât și pe Linux, fără să fie nevoie să ajustați codul. Totuși am observat mai puține probleme la rularea proiectelor Java în Windows pe anumite mașini.</note> | ||
| + | |||
| + | === Instalarea JDK-ului system wide === | ||
| Pași de instalare: | Pași de instalare: | ||
| - | ==Ubuntu== | + | ==Linux== |
| - | 1. Deschideți un terminal - ''Ctrl + Alt + T'' | + | 1. Descărcați arhiva ''tar.gz'' versiunea ''Linux/AArch64'' dacă aveți un procesor **ARM** sau versiunea ''x64'' dacă aveți un procesor **Intel** sau **AMD** de pe site-ul oficial [[https://jdk.java.net/25|OpenJDK 25]] |
| - | 2. Faceți update la pachetele instalate deja in sistem | + | 2. Deschideți un terminal - ''Ctrl + Alt + T'' |
| - | <code bash> | + | |
| - | $ sudo apt update | + | |
| - | </code> | + | |
| - | 3. Adăugați repository-ul de OpenJDK | + | 3. Rulați comanda de dezarhivare a fișierului: |
| <code bash> | <code bash> | ||
| - | $ sudo add-apt-repository ppa:openjdk-r/ppa | + | $ cd director_unde_se_afla_arhiva |
| + | $ tar xvf openjdk-25*_bin.tar.gz | ||
| </code> | </code> | ||
| - | 4. Instalați OpenJDK 17 | + | 4. În urma operației de mai sus va rezulta un folder **jdk-25**. Acest folder conține toate utilitarele necesare pentru rularea și depanarea proiectelor Java și îl vom muta într-o locație uzuală pentru utilitarele globale pentru sistemele Linux: |
| <code bash> | <code bash> | ||
| - | $ sudo apt install openjdk-17-jdk | + | $ sudo mkdir /usr/lib/jvm/ |
| + | $ sudo mv jdk-25/ /usr/lib/jvm/ | ||
| </code> | </code> | ||
| - | 5. Instalați și codul sursă pentru Java 17 ce vă va ajuta pe parcursul materiei | + | <note important>Puteți pune acest folder la altă cale, dar este necesar să introduceți aceeași cale și în pasul următor.</note> |
| + | |||
| + | 5. Acum aveți instalate toate utilitarele Java, doar că ele nu sunt accesibile ușor din terminal, așa că vom crea un link simbolic la calea utilitarelor ca să nu fie nevoie să folosim mereu calea completă către locația directorului **jdk-25**. | ||
| + | |||
| + | 5.1. Deschiderea script-ului de init pentru shell: | ||
| <code bash> | <code bash> | ||
| - | $ sudo apt install openjdk-17-source | + | $ vi ~/.bashrc |
| </code> | </code> | ||
| - | 6. Setați variabila ''JAVA_HOME'' | + | <note important>Dacă folosiți ''zsh'', înlocuiți comanda de mai sus cu: <code bash>$ vi ~/.zshrc</code></note> |
| - | În terminalul deschis: | + | 5.2. Adăugarea link-urilor simbolice pentru Java: |
| <code bash> | <code bash> | ||
| - | $ sudo gedit /etc/environment | + | export JAVA_HOME=/usr/lib/jvm/jdk-25 |
| + | export PATH=$JAVA_HOME/bin:$PATH | ||
| </code> | </code> | ||
| - | La final de fișier adăugați următoarea linie: | + | <note important>Adăugați cele două linii la finalul fișierului și apoi salvați modificările apăsând ''escape'' după care scrieți '':wq''.</note> |
| - | JAVA_HOME=”/usr/lib/jvm/java-17-openjdk-amd64” - path-ul poate să difere | + | |
| - | {{:poo-ca-cd:laboratoare:openjdk_env2.png?nolink&500|}} | + | 6. Rulați script-ul de inițializare pentru shell manual: |
| - | + | ||
| - | 7. Salvați fișierul apoi închideți-l. În terminalul deschis: | + | |
| <code bash> | <code bash> | ||
| - | $ source /etc/environment | + | $ source ~/.bashrc |
| </code> | </code> | ||
| - | 8. Verificați dacă totul a fost instalat corect scriind în terminal: | + | <note important> |
| + | * Această comandă trebuie rulată doar de această dată pentru a încărca în memorie variabilele definite anterior. Când o să deschideți sesuni noi în terminal o să se ruleze automat script-ul la inițializare. | ||
| + | * Dacă folosiți ''zsh'' rulați această comandă: <code bash>$ source ~/.zshrc</code> | ||
| + | </note> | ||
| + | |||
| + | 7. Verificați dacă totul a fost instalat corect scriind în terminal: | ||
| <code bash> | <code bash> | ||
| $ echo $JAVA_HOME | $ echo $JAVA_HOME | ||
| - | $ java -version | + | /usr/lib/jvm/jdk-25 |
| </code> | </code> | ||
| - | |||
| - | {{:poo-ca-cd:laboratoare:java_version.png?nolink&500|}} | ||
| - | |||
| - | <note important> | ||
| - | Pentru cei care aveți probleme și nu se păstrează valoarea variabilei JAVA_HOME: | ||
| - | |||
| - | Deschideți bashrc: | ||
| <code bash> | <code bash> | ||
| - | $ sudo gedit ~/.bashrc | + | $ java --version |
| + | openjdk 25 2025-09-16 | ||
| + | OpenJDK Runtime Environment (build 25+36-3489) | ||
| + | OpenJDK 64-Bit Server VM (build 25+36-3489, mixed mode, sharing) | ||
| + | $ javac --version | ||
| + | javac 25 | ||
| </code> | </code> | ||
| + | <note warning> | ||
| + | * Este important ca output-ul comenzilor să fie corect. Variabila de mediu ''JAVA_HOME'' trebuie să aibă valoarea setată corect și versiunea utilitarelor ''java'' și ''javac'' trebuie să fie **25**. | ||
| + | * Dacă nu am avea un link simbolic ar trebui să scriem în terminal de fiecare dată calea completă către utilitarul ''java'', de exemplu: <code bash>/usr/lib/jvm/jdk-25/bin/java --version</code> | ||
| + | </note> | ||
| - | Adăugați linia la final de fișier: | ||
| - | source /etc/environment | ||
| - | Salvați și închideți fișierul .bashrc | + | ==Windows== |
| + | |||
| + | 1. Descărcați arhiva oficială ''zip'' și dezarhivați | ||
| + | [[https://jdk.java.net/25/|OpenJDK 25]]. Folderul rezultat din dezarhivare ar trebui să se numească ''openjdk-25_windows-x64_bin'' și înăuntrul lui găsiți un folder ''jdk-25''. Acest folder conține toate utilitarele necesare pentru rularea și depanarea proiectelor Java. | ||
| - | Astfel, comanda se va efectua la fiecare login al userului automat. | + | <note tip> |
| + | Acum aveți instalate toate utilitarele Java, doar că ele nu sunt accesibile ușor din terminal, așa că vom crea un link simbolic la calea utilitarelor ca să nu fie nevoie să folosim mereu calea completă către locația directorului **jdk-25**. | ||
| </note> | </note> | ||
| + | 2. În C:/Program Files creați un folder denumit "Java" și mutați folderul ''jdk-25'' înăuntrul folderului creat de voi. | ||
| - | ==Windows== | + | <note important>Deoarece lucrați într-un folder administrat de sistemul de operare va trebui să folosiți drepturi de administrator.</note> |
| - | 1. Descărcați arhiva oficială și dezarhivați | + | 3. Intrați în folderul ''jdk-25'' și dați click pe address bar iar apoi click dreapta și ''copy'': |
| - | [[https://jdk.java.net/17/|java 17]] | + | |
| - | 2. În C:/Program Files creați un folder denumit "java" și mutați tot fișierul de OpenJDK înăuntrul fișierului java cu drepturi de administrator | + | {{:poo-ca-cd:laboratoare:java_windows_path.png?nolink&500|}} |
| - | 3. Intrați în folderul "bin" din OpenJDK și click dreapta pe address bar iar apoi copy la path | + | 4. Apăsați tasta de ''windows'' și căutați ''Edit the system environment variables'': |
| - | {{:poo-ca-cd:laboratoare:java_windows_path.png?nolink&500|}} | + | {{:poo-ca-cd:laboratoare:java_windows_search.png?nolink&500|}} |
| + | 5. Se va deschide o fereastră intitulată ''System Properties'' și apăsați pe butonul ''Environment Variables'': | ||
| + | {{:poo-ca-cd:laboratoare:java_env_vars.png?nolink&400|}} | ||
| - | 4. Apăsați tasta de windows + E apoi click dreapta pe This PC -> Properties | + | 6. Din secțiunea ''System variables'' selectați ''New'' și introduceți următoarele detalii: |
| + | * nume: ''JAVA_HOME'' | ||
| + | * value: ''C:\Program Files\java\jdk-25\'' - path-ul pe care l-ați copiat | ||
| - | {{:poo-că-cd:laboratoare:java_windows_properties.png?nolink&500|}} | + | {{:poo-ca-cd:laboratoare:java_windows_javahome.png?nolink&500|}} |
| - | 5. Jos cu fereastra minimizată sau în dreapta cu fereastra fullscreen -> Advanced System Settings -> Environment Variables | + | 7. Apăsați pe ''Edit'' pe variabila PATH din ''System variables'', apoi dați click pe ''New'' în fereastra nouă care s-a deschis și introduceți path-ul ''%JAVA_HOME%\bin''. |
| - | {{:poo-ca-cd:laboratoare:java_env_vars.png?nolink&500|}} | + | |
| + | 8. Apăsați tasta ''windows'' -> tastați "terminal" și ''enter'' după care rulați comenzile ''java --version'' și ''javac --version'' pentru a vedea dacă utilitarele s-au instalat corect: | ||
| - | 6. Selectați Path din secțiunea "System variables" -> Edit | + | {{:poo-ca-cd:laboratoare:java_windows_install.png?nolink&500|}} |
| - | 7. Apăsați New și paste la path-ul pe care l-am copiat anterior -> OK | + | <note warning> |
| + | * Este important ca output-ul comenzilor să fie corect. Versiunea utilitarelor ''java'' și ''javac'' trebuie să fie **25**. | ||
| + | * Dacă nu am avea variabila de mediu setată ar trebui să scriem în terminal de fiecare dată calea completă către utilitarul ''java'', de exemplu: <code powershell>> C:\Program Files\java\jdk-25\bin\java --version</code> | ||
| + | </note> | ||
| - | 8. Selectați Path tot din "System variables" -> New | + | ==macOS== |
| - | * nume: ''JAVA_HOME'' | + | |
| - | * value: ''C:\Program Files\java\jdk-17\'' - același path anterior dar fară bin | + | |
| - | {{:poo-ca-cd:laboratoare:java_windows_javahome.png?nolink&500|}} | + | 1. Instalați ''brew'': |
| + | <code bash> | ||
| + | $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | ||
| + | </code> | ||
| + | <note tip> | ||
| + | ''Brew'' este un utilitar foarte util pentru programatorii care folosesc macOS, deoarece gestionează pachetele instalate fiind foarte similar cu ''apt'' din Linux. Puteți instala JDK-ul și prin alte metode care nu necesită brew, dar vă recomandăm să îl instalați pentru că este foarte probabil să îl mai folosiți și pentru gestionarea altor pachete. Pentru mai multe detalii puteți consulta [[https://formulae.brew.sh/|documentația oficială]]. | ||
| + | </note> | ||
| - | 9. Apăsați tasta de ''Windows + R'' -> tastați "cmd" și Enter | + | 1. Instalați OpenJDK 25: |
| - | scrieți ''java - -version'' pentru a vedea dacă s-a instalat corect. | + | <code bash> |
| + | $ brew install openjdk@25 | ||
| + | </code> | ||
| - | {{:poo-ca-cd:laboratoare:java_windows_install.png?nolink&500|}} | + | <note tip> |
| + | Acum aveți instalate toate utilitarele Java, doar că ele nu sunt accesibile ușor din terminal, așa că vom crea un link simbolic la calea utilitarelor ca să nu fie nevoie să folosim mereu calea completă către locația directorului **jdk-25**. | ||
| + | </note> | ||
| - | ==Mac== | + | 2. Creați un link simbolic către calea de instalare a JDK-ului: |
| + | <code bash> | ||
| + | $ echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.bashrc | ||
| + | </code> | ||
| - | 1. Descărcați .dmg file de aici: | + | <note important> |
| - | https://www.oracle.com/java/technologies/downloads/#jdk17-mac | + | Dacă folosiți ''zsh'' rulați comanda: <code bash>$ echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc</code> |
| + | </note> | ||
| - | 2. Double-click pe .pkg si urmati pasii de instalare a jdk-ului | + | 3. Dați restart la script-ul de inițializare .bashrc: |
| + | <code bash> | ||
| + | $ source ~/.bashrc | ||
| + | </code> | ||
| + | |||
| + | <note important> | ||
| + | Dacă folosiți ''zsh'' rulați comanda: <code bash>$ source ~/.zshrc</code> | ||
| + | </note> | ||
| 3. Verificati in terminal finalizarea instalarii ruland comanda: | 3. Verificati in terminal finalizarea instalarii ruland comanda: | ||
| <code bash> | <code bash> | ||
| $ java --version | $ java --version | ||
| + | openjdk 25 2025-09-16 | ||
| + | OpenJDK Runtime Environment Homebrew (build 25) | ||
| + | OpenJDK 64-Bit Server VM Homebrew (build 25, mixed mode, sharing) | ||
| + | $ javac --version | ||
| + | javac 25 | ||
| </code> | </code> | ||
| - | ==== Instalare IntelliJ 2021.2 Community ==== | + | |
| + | <note warning> | ||
| + | * Este important ca output-ul comenzilor să fie corect. Versiunea utilitarelor ''java'' și ''javac'' trebuie să fie **25**. | ||
| + | * Dacă nu am avea un link simbolic ar trebui să scriem în terminal de fiecare dată calea completă către utilitarul ''java'', de exemplu: <code bash>/opt/homebrew/opt/openjdk/bin/java --version</code> | ||
| + | </note> | ||
| + | |||
| + | =====📝 IDE-ul IntelliJ===== | ||
| + | |||
| + | ==== Instalare IntelliJ 2025.2 Community ==== | ||
| ==Ubuntu== | ==Ubuntu== | ||
| Line 138: | Line 235: | ||
| ==Windows== | ==Windows== | ||
| - | 1. Descărcați ".exe" de Community de [[https://www.jetbrains.com/idea/download/#section=windows|aici]] | + | 1. Descărcați executabilul ".exe" Community de [[https://www.jetbrains.com/idea/download/#section=windows|aici]] |
| - | 2. Configurați în acest mod următorul meniu pentru a ușura tot flow-ul | + | 2. Configurați în acest mod următorul meniu pentru a ușura tot flow-ul: |
| {{:poo-ca-cd:laboratoare:windows_intellij.png?nolink&500|}} | {{:poo-ca-cd:laboratoare:windows_intellij.png?nolink&500|}} | ||
| Line 146: | Line 243: | ||
| 3. Restart pentru a se face update la variabilele de mediu | 3. Restart pentru a se face update la variabilele de mediu | ||
| - | ==== IntelliJ IDEA Ultimate Edition ==== | + | ==macOS== |
| + | |||
| + | Descărcați imaginea ".dmg" Community de [[https://www.jetbrains.com/idea/download/?section=mac|aici]] (dați scroll mai jos pentru versiunea Community). | ||
| + | |||
| + | <note important> | ||
| + | Dacă aveți procesor M1, M2, M3, M4... selectați versiunea ''Apple Silicon'', altfel alegeți varianta ''Intel''. | ||
| + | </note> | ||
| + | |||
| + | ==== Instalare IntelliJ IDEA Ultimate Edition ==== | ||
| Fiecare student poate beneficia de o licență gratis de IntelliJ IDEA Ultimate Edition prin intermediul contului de mail de la facultate (cel cu domeniul @stud.acs.upb.ro). Versiunea de Ultimate a IDE-ului vine cu foarte multe beneficii care se rezumă principal la feature-uri noi și suport pentru mult mai multe limbaje de programare și tehnologii decât versiunea de Community. Pentru mai multe detalii, consultați pagina: https://www.jetbrains.com/idea/features/editions_comparison_matrix.html | Fiecare student poate beneficia de o licență gratis de IntelliJ IDEA Ultimate Edition prin intermediul contului de mail de la facultate (cel cu domeniul @stud.acs.upb.ro). Versiunea de Ultimate a IDE-ului vine cu foarte multe beneficii care se rezumă principal la feature-uri noi și suport pentru mult mai multe limbaje de programare și tehnologii decât versiunea de Community. Pentru mai multe detalii, consultați pagina: https://www.jetbrains.com/idea/features/editions_comparison_matrix.html | ||
| Line 170: | Line 275: | ||
| ==Windows== | ==Windows== | ||
| - | Descărcați ".exe" de Ultimate de [[https://www.jetbrains.com/idea/download/#section=windows|aici]] | + | 1. Descărcați executabilul ".exe" Ultimate de [[https://www.jetbrains.com/idea/download/#section=windows|aici]]. |
| + | |||
| + | 2. Configurați în acest mod următorul meniu pentru a ușura tot flow-ul: | ||
| + | |||
| + | {{:poo-ca-cd:laboratoare:windows_intellij.png?nolink&500|}} | ||
| + | |||
| + | ==macOS== | ||
| + | Descărcați imaginea ".dmg" de Ultimate de [[https://www.jetbrains.com/idea/download/?section=mac|aici]]. | ||
| + | |||
| + | <note important> | ||
| + | Dacă aveți procesor M1, M2, M3, M4... selectați versiunea ''Apple Silicon'', altfel alegeți varianta ''Intel''. | ||
| + | </note> | ||
| ==Final steps== | ==Final steps== | ||
| După instalarea IDE-ului, veți fi nevoiți să vă logați cu contul de IntelliJ IDEA proaspăt creat, după care puteți folosi versiunea Ultimate. | După instalarea IDE-ului, veți fi nevoiți să vă logați cu contul de IntelliJ IDEA proaspăt creat, după care puteți folosi versiunea Ultimate. | ||
| + | |||
| {{:poo-ca-cd:laboratoare:login_page_intellij.png?500|}} | {{:poo-ca-cd:laboratoare:login_page_intellij.png?500|}} | ||
| - | ==== Cum creezi un proiect nou în IntelliJ? ==== | ||
| - | 1. Deschide IntelliJ. | + | ==== Cum creezi un proiect nou în IntelliJ? ==== |
| - | 2. Mergi la meniul **File -> New -> Project**. | + | 1. Deschide IntelliJ. |
| - | 3.Selectează proiectul Java, SDK-ul (recomandat **jdk 17**) și Groovy că biblioteca și framework adițional, apoi apasă pe butonul **Next**. | + | 2. Apasă pe butonul ''New Project'' sau mergi la meniul ''File'' -> ''New'' -> ''Project'' dacă IntelliJ s-a deschis deja într-un proiect. |
| - | {{:poo-ca-cd:laboratoare:first_java_project.png?nolink&800|}} | + | 3. Setează proprietățile proiectului tău: |
| + | * selectează proiectul Java | ||
| + | * pune un nume proiectului | ||
| + | * SDK-ul (momentan ''No SDK'', vom vedea în pasul următor cum să selectăm un JDK) | ||
| + | * alege ''build system-ul'' (momentan IntelliJ, ulterior vom folosi Maven) | ||
| + | * bifează ''add sample code'' dacă dorești un cod inițial (momentan vom bifa această opțiune) | ||
| - | 4. Dă un nume proiectului tău și alege-i locația, după care apasă butonul **Finish**. | + | 4. Apasă pe ''Create''. |
| 5. Acum proiectul este creat, iar pentru a adaugă pachete și clase, apasă **click dreapta pe folderul src -> New -> Package/Java Class**. | 5. Acum proiectul este creat, iar pentru a adaugă pachete și clase, apasă **click dreapta pe folderul src -> New -> Package/Java Class**. | ||
| <note important> | <note important> | ||
| - | În cazul în care vreți să deschideți un proiect deja existent: **File-> Open** și selectați folder-ul care conține src. | + | În cazul în care vreți să deschideți un proiect deja existent de **IntelliJ**: ''File'' -> ''Open'' și selectați folder-ul care conține folder-ul ''.idea''. |
| </note> | </note> | ||
| - | ==== Cum rulăm cod? ==== | + | ==== Instalarea JDK-ului prin IntelliJ ==== |
| - | 1. Pentru exemplu, o să creăm clasa POO și vom scrie o bucata simplă de cod în interiorul acesteia: | + | 1. Deschideți IntelliJ |
| - | <code java> | + | 2. Deschideți un proiect |
| - | public class POO { | + | |
| - | public static void main(String[] args) { | + | |
| - | System.out.println("Hello, POO students!!!"); | + | |
| - | } | + | |
| - | } | + | |
| - | </code> | + | |
| - | 2. Dacă nu există deja o configurație de Run pentru clasa noastră, o vom crea noi (**Edit Configurations**), dându-i un nume și selectând clasa care ne interesează, după care apăsam butonul **OK**. | + | 3. Apăsați pe ''File'' -> ''Project structure'' |
| - | 3. Acum putem apăsă pe **Run**, iar dacă nu sunt erori de compilare, programul va afișa output-ul în consolă. | + | |
| - | {{:poo-ca-cd:laboratoare:run_config.png?nolink&800|}} | + | 4. Descărcați JDK: |
| + | * macOS: ''SDK'' -> ''Add SDK'' -> ''Download JDK'' | ||
| + | * Windows/Linux: ''SDK'' -> ''Download JDK'' | ||
| + | |||
| + | {{:poo-ca-cd:laboratoare:intellij_sdk_download.png?nolink&700|}} | ||
| + | |||
| + | 5. Selectați versiunea corectă de JDK: | ||
| + | * Version: **25** | ||
| + | * Vendor: **Oracle OpenJDK** | ||
| + | |||
| + | {{:poo-ca-cd:laboratoare:intellij_sdk_download_version.png?nolink&500|}} | ||
| + | |||
| + | 6. Dați click pe ''Download'' și acum veți avea JDK-ul instalat pentru orice proiect IntelliJ. | ||
| + | |||
| + | <note warning> | ||
| + | - Dacă proiectul nu merge rulat/compilat așteptați să se facă **indexarea** JDK-ului (aveți un loading bar în dreapta jos). | ||
| + | - Dacă nici după indexare nu sunt rezolvate proiectele, **descărcați** următoarea variantă de JDK: | ||
| + | * Version: **25** | ||
| + | * Vendor: **Azul Zulu Community** | ||
| + | </note> | ||
| + | =====⚙️ Rularea și depanarea unui program Java===== | ||
| + | |||
| + | ==== Cum rulăm cod? Cum facem debug la cod? ==== | ||
| + | |||
| + | 1. Pentru exemplu, vom folosi codul generat de proiect din pasul de **creare a unui proiect**. | ||
| + | |||
| + | 2. Vom apăsa pe unul din butoanele de ''Run'' din interfață (vezi chenarele roșii): | ||
| + | |||
| + | {{:poo-ca-cd:laboratoare:intellij_start_project.png?nolink&750|}} | ||
| + | |||
| + | 3. Pentru a face debug codului putem apăsa pe butonul care seamănă cu un gândac (tradus în engleză "bug"), după ce am pus un breakpoint la o linie cu o instrucțiune de cod (vezi chenarele albastre din poza de mai sus). | ||
| + | |||
| + | 4. După ce porniți o sesiune de debug, vi se va deschide un panou special cu mai multe comenzi: | ||
| + | |||
| + | {{:poo-ca-cd:laboratoare:intellij_debug.png?nolink&750|}} | ||
| + | |||
| + | * Chenarul galben: | ||
| + | * butonul din dreapta vă permite să săriți ușor cu pasul de execuție la următorul breakpoint, deci dacă vă aflați la linia "104" și următorul breakpoint este la linia "150", prin apăsarea butonului veți sări direct la acea linie, totuși aveți grijă ca breakpoint-ul să fie la o linie de cod care se va executa. | ||
| + | * butonul din mijloc oprește sesiunea de debug. | ||
| + | * butonul din stânga restartează sesiunea de debug. | ||
| + | * Chenarul mov: | ||
| + | * se afișează mai multe ''Stack frame-uri'', practic dacă aveți apeluri de metode imbricate puteți apăsa pe oricare Stack Frame și astfel puteți să verificați starea obiectelor Java în momentul apelului unei metode. | ||
| + | * Chenarul roșu: | ||
| + | * se afișează toate variabilele din contextul curent, pentru a verifica variabilele din afara metodei curente folosiți panoul cu Stack Frame-uri. | ||
| + | * Chenarul albastru: | ||
| + | * butonul din stânga ''Step Over'' vă permite să treceți cu debugger-ul la următoarea linie de cod. | ||
| + | * butonul din mijloc ''Step Into'' vă permite să intrați în metoda apelată la linia curentă, altfel dacă folosiți Step Over veți vedea direct rezultatul metodei. | ||
| + | * butonul din dreapta ''Step Out'' vă permite să ieșiți din apelul metodei curente. | ||
| + | |||
| + | <note tip> | ||
| + | * Noțiunile de mai sus pot fi ușor avansate, deoarece nu cunoașteți încă detalii despre programarea în Java, însă puteți reveni oricând la acest laborator pentru a vă familiariza cu procesul de, debug. | ||
| + | * IntelliJ este un IDE, ceea ce înseamnă că are foarte multe utilitare de proofiling și debug care vă pot fi utile. Vă recomandăm să consultați documentația oficilă [[https://www.jetbrains.com/help/idea/debugging-your-first-java-application.html|JetBrains]] , deoarece IntelliJ este un software foarte folosit în industria IT. | ||
| + | </note> | ||
| + | =====💯 Coding Style în Java===== | ||
| ==== Comenzi de formatere cod ==== | ==== Comenzi de formatere cod ==== | ||
| - | Toate se găsesc în meniul Refactor (click dreapta) și sunt foarte folositoare atunci când lucrezi la un proiect mai mare, dându-ți o mână de ajutor. | + | Toate se găsesc în meniul Refactor (click dreapta pe o secvență de cod) și sunt foarte folositoare atunci când lucrezi la un proiect mai mare, dându-ți o mână de ajutor. |
| * **Rename** (va face automat modificări în constructori și în metoda main) | * **Rename** (va face automat modificări în constructori și în metoda main) | ||
| Line 230: | Line 398: | ||
| Consultați tutorialul de [[https://ocw.cs.pub.ro/courses/poo-ca-cd/laboratoare/tutorial-checkstyle|aici]] | Consultați tutorialul de [[https://ocw.cs.pub.ro/courses/poo-ca-cd/laboratoare/tutorial-checkstyle|aici]] | ||
| - | ==== Git ==== | + | =====🛠️ Maven===== |
| - | Pentru integrare Git în IntelliJ consultați tutorialul de [[https://ocw.cs.pub.ro/courses/poo-ca-cd/resurse-utile/tutorial-intellij-git|aici]] | + | ==== Instalare Maven ==== |
| - | == Comenzi importante == | + | Maven este folosit pentru gestionarea dependințelor și pentru facilitarea proceselor de ''build'' în proiectele Java. În următorul laborator veți învăța mai multe despre acesta. |
| - | * **git clone:** clonează repo-ul local | + | <note important> |
| - | * **git add:** adaugă fișierele modificate | + | * Maven vine instalat cu IntelliJ, dar nu poate fi folosit în linia de comandă. Pentru a rula comenzi din linia de comandă trebuie să instalăm și să creăm un link simbolic pentru Maven. |
| - | * **git commit:** salvează fișierele | + | * Versiunea de Maven instalată nu este importantă, deoarece pentru toate cele trei sisteme de operare vom folosi un **package manager** care va alege o versiune destul de nouă și compatibilă cu proiectele noastre. |
| - | * **git push:** adaugă fișierele pe repo | + | </note> |
| - | * **git branch <nume branch>:** creează un nou branch | + | |
| - | * **git checkout <nume branch>:** mută pe alt branch | + | |
| - | * **git pull:** preia schimbările din repo și le adaugă local | + | |
| - | * **git status:** arată statusul proiectului, ce fișiere au fost schimbate | + | |
| - | * **git rebase** | + | |
| - | == Workflow cu Git din Git Bash == | + | === Linux === |
| - | * git clone <link> | + | 1. Deschideți terminalul folosind ''CTRL'' + ''ALT'' + ''T''. |
| - | * pentru a adăuga repo-ul local (sau git pull dacă aveți deja clonat repo-ul pe local și s-au produs schimbări) | + | |
| - | * git branch <nume branch> | + | |
| - | * git checkout <nume branch> | + | |
| - | * lucrăm în repo, modificăm și adaugăm fișiere | + | |
| - | * git add <fișiere> | + | |
| - | * git commit -m “Mesaj de commit” | + | |
| - | * git push -u origin <name branch> | + | |
| - | * intrăm pe GitHub și facem Pull Request | + | |
| - | <note important> | + | 2. Actualizați distro-ul: |
| - | * Tutorial: {{:poo-ca-cd:laboratoare:upload_git_with_gitbash.pdf|Workflow cu Git din Git Bash}} | + | <code bash> |
| - | * Dacă vreți să folosiți Git-ul integrat din IntelliJ: {{:poo-ca-cd:laboratoare:upload_git_with_inteliij.pdf|Workflow cu Git din IntelliJ}} | + | $ sudo apt-get update |
| + | </code> | ||
| + | 3. Instalați Maven: | ||
| + | <code bash> | ||
| + | $ sudo apt install maven | ||
| + | </code> | ||
| + | |||
| + | 4. Testați comanda ''mvn'': | ||
| + | <code bash> | ||
| + | $ mvn -v | ||
| + | Apache Maven 3.8.7 | ||
| + | Maven home: /usr/share/maven | ||
| + | Java version: 25, vendor: Oracle Corporation, runtime: /usr/lib/jvm/jdk-25 | ||
| + | Default locale: en, platform encoding: UTF-8 | ||
| + | OS name: "linux", version: "5.15.167.4-microsoft-standard-wsl2", arch: "amd64", family: "unix" | ||
| + | </code> | ||
| + | |||
| + | |||
| + | === Windows === | ||
| + | |||
| + | 1. Apăsați tasta ''windows'' -> căutați ''terminal'' -> click dreapta ''Run as administrator''. | ||
| + | |||
| + | 2. Instalați managerul de pachete ''Chocolatey'': | ||
| + | |||
| + | 2.1. Verificați că sistemul de operare nu este în modul ''restricted'': | ||
| + | <code powershell> | ||
| + | > Get-ExecutionPolicy | ||
| + | RemoteSigned | ||
| + | </code> | ||
| + | |||
| + | <note warning> | ||
| + | * Dacă rezultatul comenzii de mai sus este ''Restricted'', rulați următoarea comandă: <code powershell>> Set-ExecutionPolicy AllSigned</code> | ||
| + | * Modul ''restricted'' din Windows împiedică rularea anumitor script-uri pentru a vă proteja de atacuri cibernetice, însă pentru programatori accesul la sistem este necesar și atunci trebuie scoasă această restricție. Totuși, după ce rulați comanda de mai sus, **aveți grijă să nu rulați comenzi care pot fi malițioase**, deoarece sistemul vostru nu mai folosește un mecanism de securitate! | ||
| </note> | </note> | ||
| - | ==== GitHub Desktop ==== | + | 2.2. Instalați utilitarul: |
| + | <code powershell> | ||
| + | > Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) | ||
| + | RemoteSigned | ||
| + | </code> | ||
| - | GitHub Desktop este un tool dezvoltat de GitHub care simplifică lucrul cu Git. Avantajul acestuia este că acesta ajută printr-o interfață grafică user-friendly realizarea flow-ului descris mai sus și ușurează folosirea diferitelor comenzi disponibile. Momentan este disponibil pentru Windows si macOS. Acesta poate fi descărcat accesând acest [[https://desktop.github.com/|link]]. | + | 3. Instalați Maven: |
| + | <code powershell> | ||
| + | > choco install maven | ||
| + | </code> | ||
| - | <note important> | + | 4. Testați comanda ''mvn'': |
| - | În continuare puteți găsi un tutorial de folosire a GitHub Desktop în care se crează un branch nou, se adaugă modificările făcute pe repository și se face rebase la branch-ul respectiv: {{:poo-ca-cd:laboratoare:tutorial_github_desktop.pdf|Tutorial}} | + | <code powershell> |
| + | > mvn -v | ||
| + | Apache Maven 3.9.11 (3e54c93a704957b63ee3494413a2b544fd3d825b) | ||
| + | Maven home: C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.11 | ||
| + | Java version: 25.0.1, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-25 | ||
| + | Default locale: en_US, platform encoding: UTF-8 | ||
| + | OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows" | ||
| + | </code> | ||
| + | |||
| + | <note tip> | ||
| + | Similar cu ''apt'' din Linux și ''brew'' din macOS, ''Chocolatey'' este un **packet manager** care vă poate ajuta cu instalarea utilitarelor pe Windows. Este relevant de știut că acesta are o licență open-source limitată, dar există și versiuni business plătite. Pentru mai multe detalii consultați [[https://chocolatey.org/|documentația oficială]]. | ||
| </note> | </note> | ||
| + | |||
| + | === macOS === | ||
| + | |||
| + | 1. Folosiți utilitarul ''brew'' instalat în pașii de mai sus pentru a instala Maven: | ||
| + | <code bash> | ||
| + | $ brew install maven | ||
| + | </code> | ||
| + | |||
| + | 2. Testați comanda ''mvn'': | ||
| + | <code bash> | ||
| + | $ mvn -v | ||
| + | Apache Maven 3.9.11 (3e54c93a704957b63ee3494413a2b544fd3d825b) | ||
| + | Maven home: /opt/homebrew/Cellar/maven/3.9.11/libexec | ||
| + | Java version: 25, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk/25/libexec/openjdk.jdk/Contents/Home | ||
| + | Default locale: en_US, platform encoding: UTF-8 | ||
| + | OS name: "mac os x", version: "26.0", arch: "aarch64", family: "mac" | ||
| + | </code> | ||
| + | =====🐙 Git===== | ||
| + | |||
| + | ====Instalare și tutorial pentru Git==== | ||
| + | |||
| + | Git este un tool de versionare a codului care este folosit de orice programator pentru a facilita procesul de review, back-up și versionare. | ||
| + | |||
| + | Vă recomandăm să citiți tutorialul exhaustiv de [[poo-ca-cd:resurse-utile:tutorial-git|aici]]. | ||
| + | |||
| + | <note tip> | ||
| + | * Nu încurcați GitHub cu ''git''. GitHub, BitBucket, GitLab sunt interfețe web peste tool-ul ''git''. | ||
| + | * Nu este obligatoriu să folosiți direct ''git'', există tool-uri grafice care vă pot ușura munca dacă preferați interfețele grafice: | ||
| + | * **IntelliJ** are suport integrat pentru ''git'' dintr-un panou dedicat. Pentru detalii consultați documentația de [[https://www.jetbrains.com/help/idea/using-git-integration.html|aici]] după ce ați terminat de parcurs ghidul de mai sus despre ''git''. | ||
| + | * GitHub vă pune la dispoziție aplicația **GitHub Desktop** pentru Windows și macOS. Pentru detalii consultați documentația de [[https://desktop.github.com/download/|aici]] după ce ați terminat de parcurs ghidul de mai sus despre ''git''. | ||
| + | </note> | ||
| + | |||
| + | <note warning> | ||
| + | Vă rugăm să parcurgeți cu atenție tutorialul de mai sus, deoarece va trebui să folosiți ''git'' la teme. | ||
| + | </note> | ||
| + | |||
| + | |||
| + | |||