Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:poo-java [2020/08/17 18:50]
florin.mihalache
poo-ca-cd:laboratoare:poo-java [2021/09/04 23:05] (current)
florin.mihalache [Download]
Line 13: Line 13:
   ​   ​
  ​**Obiectele** din POO sunt **instanțe** ale unui tip de date numit **clasă**. Relația dintre clasă și obiect-instanță a acelei clase este exemplificată de relația între conceptul de masă și masă din sufragerie. Adică: ​  ​**Obiectele** din POO sunt **instanțe** ale unui tip de date numit **clasă**. Relația dintre clasă și obiect-instanță a acelei clase este exemplificată de relația între conceptul de masă și masă din sufragerie. Adică: ​
- * conceptul de masă implică existența anumitor caracteristici (un număr de picioare și un blat, totul de o anumită culoare)  +  ​* conceptul de masă implică existența anumitor caracteristici (un număr de picioare și un blat, totul de o anumită culoare)  
- * conceptul de masă implică realizarea potențială a unor acțiuni (se poate mânca pe masă)  +  * conceptul de masă implică realizarea potențială a unor acțiuni (se poate mânca pe masă)  
- * obiectul masă are caracteristicile respective (4 picioare, culoare neagră)  +  * obiectul masă are caracteristicile respective (4 picioare, culoare neagră)  
- * obiectul masă permite realizarea practică a acțiunilor respective (se poate mânca doar pe masă fizică, nu pe ideea de masă) ​+  * obiectul masă permite realizarea practică a acțiunilor respective (se poate mânca doar pe masă fizică, nu pe ideea de masă) ​
   ​   ​
  Ce remarcăm este că există niște tipare în lumea reală, care grupează în mintea noastră niște **atribute** ale obiectelor cu **acțiunile** lor, pentru a forma un tot ce definește obiectul respectiv. Pe acest concept, numit **încapsulare**,​ se sprijină programarea orientată obiect. ​  Ce remarcăm este că există niște tipare în lumea reală, care grupează în mintea noastră niște **atribute** ale obiectelor cu **acțiunile** lor, pentru a forma un tot ce definește obiectul respectiv. Pe acest concept, numit **încapsulare**,​ se sprijină programarea orientată obiect. ​
Line 27: Line 27:
   ​   ​
  Java a pornit că o platformă de programare pentru sisteme embedded. Țelurile principale ale proiectului erau:   Java a pornit că o platformă de programare pentru sisteme embedded. Țelurile principale ale proiectului erau: 
- * **independența** de sistem  +  ​* **independența** de sistem  
- * utilizarea **POO**. ​+  * utilizarea **POO**. ​
  ​Astăzi,​ Java este folosită mai mult că o platformă pentru Internet și a atins o utilizare impresionantă. ​  ​Astăzi,​ Java este folosită mai mult că o platformă pentru Internet și a atins o utilizare impresionantă. ​
   ​   ​
  Java este un mediu (platformă) de programare care constă în:   Java este un mediu (platformă) de programare care constă în: 
- * un **limbaj** de programare (Java) care descrie programatorului ce instrucțiuni sunt valide și ce face fiecare  +  ​* un **limbaj** de programare (Java) care descrie programatorului ce instrucțiuni sunt valide și ce face fiecare  
- * un **compilator** (''​javac.exe''​ (Windows) / ''​javac''​ (Linux)) care transformă fișierul sursă într-un limbaj intermediar numit **bytecode**  +  * un **compilator** (''​javac.exe''​ (Windows) / ''​javac''​ (Linux)) care transformă fișierul sursă într-un limbaj intermediar numit **bytecode**  
- * o **mașină virtuală**,​ **Java Virtual Machine** (''​JVM''​),​ care permite transformarea codului intermediar în instrucțiuni executabile pe procesorul curent.  +  * o **mașină virtuală**,​ **Java Virtual Machine** (''​JVM''​),​ care permite transformarea codului intermediar în instrucțiuni executabile pe procesorul curent.  
- * o **bibliotecă** puternică ce răspunde foarte bine nevoilor apărute în practică (''​class library''​) ​+  * o **bibliotecă** puternică ce răspunde foarte bine nevoilor apărute în practică (''​class library''​) ​
   ​   ​
  ​**Workflowul** este următorul. Dezvoltatorul instalează **Java Development Kit** (''​JDK''​) care constă în principal din:   ​**Workflowul** este următorul. Dezvoltatorul instalează **Java Development Kit** (''​JDK''​) care constă în principal din: 
- * **Java Runtime Environment** (''​JRE''​),​ ce conține ''​JVM''​  +  ​* **Java Runtime Environment** (''​JRE''​),​ ce conține ''​JVM''​  
- * **compilator**. ​+  * **compilator**. ​
  ​Compilatorul este aplicat codului scris și se obțin fișiere conținând bytecode. Aceste fișiere au în Java extensia ''​.class''​. ​  ​Compilatorul este aplicat codului scris și se obțin fișiere conținând bytecode. Aceste fișiere au în Java extensia ''​.class''​. ​
   ​   ​
  ​Diagrama,​ până acum, arată astfel: ​  ​Diagrama,​ până acum, arată astfel: ​
   ​   ​
- ''​Clasamea.java''​ ----compilare---> ''​Clasamea.class''​ [ pe mașina de dezvoltare ] +  ​''​Clasamea.java''​ -compilare -> ''​Clasamea.class''​ [ pe mașina de dezvoltare ] 
   ​   ​
  Acest pas corespunde cu invocarea compilatorului astfel: ​  Acest pas corespunde cu invocarea compilatorului astfel: ​
Line 55: Line 55:
   ​   ​
  ​Diagrama arată așa:   ​Diagrama arată așa: 
-  ​ + 
- ----------------------------------------------------------------------  +  ​* ​flow de bytecode -> JRE -> flow instrucțiuni native 
- ​| ​flow de bytecode ​| ------> JRE | ----> flow instrucțiuni native ​ +
- ----------------------------------------------------------------------  +
-  ​+
  Pasul corespunde cu invocarea mașinii virtuale astfel: ​  Pasul corespunde cu invocarea mașinii virtuale astfel: ​
   ​   ​
Line 73: Line 71:
   ​   ​
   ​   ​
- ​{{alte-resurse:​poo-java:​jvm.gif?​450| Flow-ul Java}} ​+ ​{{ ​poo-ca-cd:alte-resurse:​poo-java:​jvm.gif?​450 | Flow-ul Java}} ​
  
  
Line 119: Line 117:
  
 Segmentele de memorie inițiale, precum și parametri de rulare sunt ilustrați mai jos. Segmentele de memorie inițiale, precum și parametri de rulare sunt ilustrați mai jos.
-{{ :​laboratoare:​java-basics:​jvm.jpg?​nolink |Java VM memory }}+{{ poo-ca-cd:​laboratoare:​java-basics:​jvm.jpg?​nolink |Java VM memory }}
  
  
Line 147: Line 145:
 ==== Hello World ==== ==== Hello World ====
  
-Pentru a începe dezvoltarea avem nevoie de ''​JDK''​ pe care îl găsim pe site-ul [[:poo-ca-cd:http://​www.oracle.com/​technetwork/​java/​javase/​downloads/​java-se-jdk-7-download-432154.html |oracle]]. ''​JDK''​ conține și ''​JRE''​ pentru procesorul curent, așa că putem testa aplicațiile pe mașină locală. ​+Pentru a începe dezvoltarea avem nevoie de ''​JDK''​ pe care îl găsim pe site-ul [[http://​www.oracle.com/​technetwork/​java/​javase/​downloads/​java-se-jdk-7-download-432154.html |Oracle]]. ''​JDK''​ conține și ''​JRE''​ pentru procesorul curent, așa că putem testa aplicațiile pe mașină locală. ​
   ​   ​
  ​Pentru a seta variabilele de mediu în Linux adăugați următoarea linie în ''/​etc/​bash.bashrc''​ (pentru a fi disponibil tuturor utilizatorilor): ​  ​Pentru a seta variabilele de mediu în Linux adăugați următoarea linie în ''/​etc/​bash.bashrc''​ (pentru a fi disponibil tuturor utilizatorilor): ​
Line 182: Line 180:
 <​code> ​  java HelloWorld ​ <​code> ​  java HelloWorld ​
 </​code> ​ </​code> ​
- == Instalare ​Eclipse ​IDE == +==== Instalare ​IntelliJ ​IDE ==== 
   ​   ​
- ​Pentru Java există mai multe medii de dezvoltare dintre care noi recomandăm ​Eclipse ​datorită plugin-urilor disponibile. ​Eclipse ​oferă plugin-uri și pentru ​PHPC/C++Python ​etc. + ​Pentru Java există mai multe medii de dezvoltare dintre care noi recomandăm ​IntelliJ ​datorită plugin-urilor disponibile. ​IntelliJ ​oferă plugin-uri și pentru ​PythonJavaScript, etc. 
   ​   ​
- Eclipse ​poate fi download-at de [[:​poo-ca-cd:​http://eclipse.org/downloads/ |aici]]. Pentru instalare vă recomandăm acest [[:​poo-ca-cd:http://www.vogella.de/​articles/​Eclipse/​article.html ​| tutorial]]. ​+ IntelliJ ​poate fi download-at de [[https://www.jetbrains.com/idea/​download/ |aici]]. Pentru instalare vă recomandăm acest [[https://​ocw.cs.pub.ro/​courses/​poo-ca-cd/resurse-utile/instalare-intellij-idea ​| tutorial]]. ​
  
 ====Download==== ====Download====
-* [[http://www.oracle.com/technetwork/java/​javase/​downloads/​java-se-jdk-7-download-432154.html ​|JDK]] +  ​* [[https://jdk.java.net/17/ |JDK]] 
-* [[http://eclipse.org/downloads/packages/​eclipse-ide-java-developers/indigosr2 ​|Eclipse]]+  * [[https://www.jetbrains.com/idea/download/ |IntelliJ]]
poo-ca-cd/laboratoare/poo-java.1597679418.txt.gz · Last modified: 2020/08/17 18:50 by florin.mihalache
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0