This shows you the differences between two versions of the page.
poo-ca-cd:laboratoare:limbajul-java [2025/09/30 16:11] florian_luis.micu |
poo-ca-cd:laboratoare:limbajul-java [2025/10/01 21:55] (current) florian_luis.micu |
||
---|---|---|---|
Line 27: | Line 27: | ||
<note warning> | <note warning> | ||
- | * În acest laborator există mai multe secțiuni marcate **[Extra mile]**. Aceste secțiuni cuprind informații **bonus** care vă pot fi prezentate în **timpul laboratorului** sau pe care le puteți aprofunda **în afara** acestuia, ele nefiind necesare pentru laboratoarele viitoare sau pentru teme. | + | * În acest laborator există mai multe secțiuni marcate **[Optional]**. Aceste secțiuni cuprind informații **bonus** care vă pot fi prezentate în **timpul laboratorului** sau pe care le puteți aprofunda **în afara** acestuia, ele nefiind necesare pentru laboratoarele viitoare sau pentru teme. |
- | * De asemenea, veți întâlni câteva secțiuni marcate **[Extra mile recomandat]**. Vă recomandăm ca acestea să aibă **prioritate** în parcurgerea secțiunilor de tip **[Extra mile]**, deoarece vă pot oferi informații bonus care să fie și foarte probabil utile pentru **teme** sau **laboratoare viitoare**. | + | * De asemenea, veți întâlni câteva secțiuni marcate **[Nice to know]**. Vă recomandăm ca acestea să aibă **prioritate** în parcurgerea secțiunilor de tip **[Optional]**, deoarece vă pot oferi informații bonus care să fie și foarte probabil utile pentru **teme** sau **laboratoare viitoare**. |
* Verificați că ați instalat toate utilitarele din [[poo-ca-cd:laboratoare:intro|laboratorul 0]]. Dacă ați întâmpinat probleme sau aveți nevoie de clarificări **discutați cu laborantul**. | * Verificați că ați instalat toate utilitarele din [[poo-ca-cd:laboratoare:intro|laboratorul 0]]. Dacă ați întâmpinat probleme sau aveți nevoie de clarificări **discutați cu laborantul**. | ||
</note> | </note> | ||
Line 127: | Line 127: | ||
==== ==== | ==== ==== | ||
- | <spoiler [Extra mile] Despre primitive> | + | <spoiler [Optional] Despre primitive> |
**Mărimea tipului char** | **Mărimea tipului char** | ||
Line 622: | Line 622: | ||
==== ==== | ==== ==== | ||
- | <spoiler [Extra mile] Alte funcționalități ale javac> | + | <spoiler [Optional] Alte funcționalități ale javac> |
**Recompilare inteligentă** | **Recompilare inteligentă** | ||
Line 679: | Line 679: | ||
<note tip> | <note tip> | ||
- | Datorită pasului de compilare pentru transformarea fișierelor din cod Java în bytecode, dar și a JVM-ului, care folosește un mecanism de interpretare a bytecode-ului, Java este considerat un **limbaj compilat și interpretat**. Pentru mai multe detalii, consultați secțiunea **[Extra mile]** de mai jos. | + | Datorită pasului de compilare pentru transformarea fișierelor din cod Java în bytecode, dar și a JVM-ului, care folosește un mecanism de interpretare a bytecode-ului, Java este considerat un **limbaj compilat și interpretat**. Pentru mai multe detalii, consultați secțiunea **[Optional]** de mai jos. |
</note> | </note> | ||
- | <spoiler [Extra mile] JVM și JIT în detaliu> | + | <spoiler [Optional] JVM și JIT în detaliu> |
**1. Încărcarea claselor (Class Loader)** | **1. Încărcarea claselor (Class Loader)** | ||
Line 758: | Line 758: | ||
<note warning> | <note warning> | ||
- | Vă recomandăm să parcurgeți următoarele două secțiuni **[Extra mile recomandat]**, deoarece acestea vă vor învăța mai multe despre structura proiectelor Java și despre adăugarea dependențelor. Următoarele laboratoare **nu necesită** informații despre aceste concepte și temele pot fi făcute **fără** să cunoașteți detaliile menționate, dar cu siguranță vă pot ajuta pentru anumite scenarii de **debug** sau la **personalizarea** proiectului prin dependențe extra. | + | Vă recomandăm să parcurgeți următoarele două secțiuni **[Nice to know]**, deoarece acestea vă vor învăța mai multe despre structura proiectelor Java și despre adăugarea dependențelor. Următoarele laboratoare **nu necesită** informații despre aceste concepte și temele pot fi făcute **fără** să cunoașteți detaliile menționate, dar cu siguranță vă pot ajuta pentru anumite scenarii de **debug** sau la **personalizarea** proiectului prin dependențe extra. |
</note> | </note> | ||
- | ====[Extra mile recomandat] Executabile JAR==== | + | ====[Nice to know] Executabile JAR==== |
Un **JAR (Java ARchive)** este un fișier comprimat (similar cu un ''.zip'') care conține clase compilate ''.class'', resurse (imagini, fișiere de configurare) și metadate necesare pentru rularea sau distribuirea unei aplicații Java. | Un **JAR (Java ARchive)** este un fișier comprimat (similar cu un ''.zip'') care conține clase compilate ''.class'', resurse (imagini, fișiere de configurare) și metadate necesare pentru rularea sau distribuirea unei aplicații Java. | ||
Line 784: | Line 784: | ||
</code> | </code> | ||
- | ====[Extra mile recomandat] Sisteme de build și management de proiecte==== | + | ====[Nice to know] Sisteme de build și management de proiecte==== |
Un sistem de build și management de proiect este responsabil cu facilitarea compilării și rulării unui proiect. Proiectele Java folosesc trei sisteme de build: | Un sistem de build și management de proiect este responsabil cu facilitarea compilării și rulării unui proiect. Proiectele Java folosesc trei sisteme de build: | ||
* IntelliJ build system: folosit pentru proiecte personale simple, nu este preferat pentru proiecte mari sau enterprise. | * IntelliJ build system: folosit pentru proiecte personale simple, nu este preferat pentru proiecte mari sau enterprise. | ||
Line 895: | Line 895: | ||
</note> | </note> | ||
- | ====[Extra mile] Java din linia de comandă==== | + | ====[Optional] Java din linia de comandă==== |
''JShell'' este un instrument introdus în **Java 9** care oferă un mediu interactiv (**REPL – Read-Eval-Print-Loop**). El permite rularea de instrucțiuni Java fără a mai crea fișiere ''.java'' și fără a compila manual cu ''javac''. Este foarte util pentru testarea rapidă a expresiilor, a fragmentelor de cod sau pentru învățare. | ''JShell'' este un instrument introdus în **Java 9** care oferă un mediu interactiv (**REPL – Read-Eval-Print-Loop**). El permite rularea de instrucțiuni Java fără a mai crea fișiere ''.java'' și fără a compila manual cu ''javac''. Este foarte util pentru testarea rapidă a expresiilor, a fragmentelor de cod sau pentru învățare. | ||
Line 921: | Line 921: | ||
* ''/exit'': termină sesiunea. | * ''/exit'': termină sesiunea. | ||
- | ====[Extra mile] System properties în Java==== | + | ====[Optional] System properties în Java==== |
Java oferă o modalitate portabilă de a configura aplicațiile prin **System Properties**, concret perechi **cheie-valoare** transmise la pornirea JVM. System properties sunt utile pentru a configura aplicația Java la momentul pornirii, fără a modifica codul sursă. | Java oferă o modalitate portabilă de a configura aplicațiile prin **System Properties**, concret perechi **cheie-valoare** transmise la pornirea JVM. System properties sunt utile pentru a configura aplicația Java la momentul pornirii, fără a modifica codul sursă. | ||
Line 952: | Line 952: | ||
</note> | </note> | ||
- | ====[Extra mile] Classpath==== | + | ====[Optional] Classpath==== |
Classpath-ul este lista de directoare și fișiere ''.jar'' unde compilatorul ''javac'' și JVM-ul ''java'' caută clasele necesare pentru compilare și execuție. | Classpath-ul este lista de directoare și fișiere ''.jar'' unde compilatorul ''javac'' și JVM-ul ''java'' caută clasele necesare pentru compilare și execuție. |